@k0t0vich/meta-agents-template 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this package are documented in this file.
4
4
 
5
+ ## 0.1.5 - 2026-03-20
6
+
7
+ ### Changed
8
+ - Removed legacy `codex/*` branch aliases from Git Flow Lite policy, docs, scripts, and CI branch validation.
9
+ - Standardized branch task-ref naming for atomic work (`GOV-*`, `REL-*`, `DOC-*`, `DEV-*`) with `issue-<number>` fallback.
10
+ - Updated branch-routing and status/review parsing so issue-based refs are handled consistently in `feature/issue-<n>-*` flows.
11
+
5
12
  ## 0.1.4 - 2026-03-20
6
13
 
7
14
  ### Added
package/README.md CHANGED
@@ -143,14 +143,14 @@ npm run self:bootstrap
143
143
  ```bash
144
144
  npm run meta:verify
145
145
  npm run meta:branch
146
- npm run meta:task-start -- --task 12 --slug api-redirect
146
+ npm run meta:task-start -- --task GOV-1 --slug api-redirect
147
147
  npm run meta:review
148
148
  npm run meta:review-approve
149
149
  npm run meta:mr-review
150
150
  npm run meta:mr-review-approve
151
151
  npm run meta:verify-link
152
152
  npm run meta:ops -- --command SET_STATUS --payload '{"task":"DEV-12","status":"IN_PROGRESS"}'
153
- npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"12","slug":"api-redirect"}'
153
+ npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"GOV-1","slug":"api-redirect"}'
154
154
  npm run meta:status
155
155
  ```
156
156
 
@@ -158,6 +158,7 @@ npm run meta:status
158
158
  `meta:branch` валидирует ветку по Git Flow Lite (`main`, `develop`, `feature/*`, `release/*`, `hotfix/*`).
159
159
  `meta:task-start` делает branch-routing preflight: сравнивает задачу с текущей веткой, показывает dirty/ahead блокеры и готовит маршрут (`stay_on_current_branch` или `create_new_branch`).
160
160
  `meta:task-start` также делает context-protection check для `agents.md` между текущей и базовой веткой и требует явного подтверждения при diff.
161
+ Именование branch task ref: по умолчанию использовать префиксные ID (`GOV-1`, `REL-1`, `DOC-1`, `DEV-1`); для чистого GitHub issue fallback формат `issue-<number>`.
161
162
  `meta:mr-review` формирует сводный pre-merge отчёт по MR/PR, `meta:mr-review-approve` фиксирует финальный PASS после подтверждения пользователя.
162
163
  `meta:status` отдаёт единый статус-срез: trackers used, current sprint, current task, current branch context, git uncommitted и summary.
163
164
  В `github` режиме локальные `tasks/*` по умолчанию считаются cache/legacy и не являются источником истины.
package/agents.md CHANGED
@@ -139,7 +139,6 @@ Name: <agent role>
139
139
  Обязательное правило:
140
140
  - для режима `git_flow_lite` статусный цикл задачи фиксируется как `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
141
141
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
142
- - для агентных веток также допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
143
142
  - интеграционные правила: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
144
143
  - `RUN_REVIEW_GATE` сначала формирует отчёт ревьювера и рекомендацию (`PASS_CANDIDATE`/`FAIL`);
145
144
  - финальный `RUN_REVIEW_GATE: PASS_CONFIRMED` допускается только после явного подтверждения пользователя `Review Approved: yes`;
@@ -167,12 +166,13 @@ Name: <agent role>
167
166
  Перед началом реализации агент обязан:
168
167
  1. Проверить веточный контекст через `meta:status`.
169
168
  2. Запустить branch-routing preflight через `meta:task-start -- --task <TASK-ID|#issue> --slug <slug> --kind atomic|feature|release|hotfix`.
170
- 3. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
171
- 4. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
172
- 5. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
173
- 6. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
174
- 7. Создать новую рабочую ветку по Git Flow Lite.
175
- 8. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
169
+ 3. В названии рабочей ветки использовать task ref с префиксом (`GOV-1`, `REL-1`, `DOC-1`, `DEV-1`); если есть только issue number, использовать `issue-<number>`.
170
+ 4. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
171
+ 5. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
172
+ 6. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
173
+ 7. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
174
+ 8. Создать новую рабочую ветку по Git Flow Lite.
175
+ 9. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
176
176
 
177
177
  Без этого preflight выполнение реализации запрещено.
178
178
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k0t0vich/meta-agents-template",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Template system for verification-first agentic development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,9 +8,6 @@ on:
8
8
  - 'feature/**'
9
9
  - 'release/**'
10
10
  - 'hotfix/**'
11
- - 'codex/feature/**'
12
- - 'codex/release/**'
13
- - 'codex/hotfix/**'
14
11
  pull_request:
15
12
  branches:
16
13
  - main
@@ -34,7 +31,7 @@ jobs:
34
31
  run: |
35
32
  BRANCH="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}"
36
33
  echo "Branch: $BRANCH"
37
- if [[ "$BRANCH" =~ ^(main|develop|feature/.+|release/.+|hotfix/.+|codex/feature/.+|codex/release/.+|codex/hotfix/.+)$ ]]; then
34
+ if [[ "$BRANCH" =~ ^(main|develop|feature/.+|release/.+|hotfix/.+)$ ]]; then
38
35
  echo "Branch naming PASS"
39
36
  else
40
37
  echo "Branch naming FAIL: '$BRANCH' is not Git Flow Lite compatible"
@@ -48,7 +45,9 @@ jobs:
48
45
  node --check .meta-agents/scripts/task-branch-router.mjs
49
46
  npm run meta:verify
50
47
  npm run meta:status -- --json
51
- npm run meta:task-start -- --task 101 --slug verify --json
48
+ npm run meta:task-start -- --task GOV-101 --slug verify --json
49
+ git config user.name "Meta Agents CI"
50
+ git config user.email "meta-agents@example.com"
52
51
 
53
52
  - name: Validate branch routing e2e scenarios
54
53
  shell: bash
@@ -56,8 +55,8 @@ jobs:
56
55
  git add -A
57
56
  git commit -m "ci: bootstrap routing check"
58
57
  git branch develop
59
- git checkout -b codex/feature/101-routing
60
- node .meta-agents/scripts/task-branch-router.mjs --task 101 --slug routing --json > /tmp/same-feature.json
58
+ git checkout -b feature/gov-101-routing
59
+ node .meta-agents/scripts/task-branch-router.mjs --task GOV-101 --slug routing --json > /tmp/same-feature.json
61
60
  node -e 'const fs=require("fs"); const d=JSON.parse(fs.readFileSync("/tmp/same-feature.json","utf8")); if (d.decision !== "stay_on_current_branch") { console.error("Expected stay_on_current_branch"); process.exit(1); }'
62
- node .meta-agents/scripts/task-branch-router.mjs --task 202 --slug routing --json > /tmp/cross-feature.json
61
+ node .meta-agents/scripts/task-branch-router.mjs --task GOV-202 --slug routing --json > /tmp/cross-feature.json
63
62
  node -e 'const fs=require("fs"); const d=JSON.parse(fs.readFileSync("/tmp/cross-feature.json","utf8")); if (d.decision !== "create_new_branch") { console.error("Expected create_new_branch"); process.exit(1); }'
@@ -83,18 +83,22 @@ system:
83
83
  - main
84
84
  - develop
85
85
  working_branches:
86
- feature: "feature/<task-or-issue-id>-<slug>"
86
+ feature: "feature/<task-ref>-<slug>"
87
87
  release: "release/vX.Y.Z"
88
- hotfix: "hotfix/<task-or-issue-id>-<slug>"
88
+ hotfix: "hotfix/<task-ref>-<slug>"
89
+ task_ref_policy:
90
+ preferred_format:
91
+ - "GOV-<n>"
92
+ - "REL-<n>"
93
+ - "DOC-<n>"
94
+ - "DEV-<n>"
95
+ issue_fallback_format: "issue-<number>"
89
96
  allowed_branch_patterns:
90
97
  - "^main$"
91
98
  - "^develop$"
92
99
  - "^feature/.+"
93
100
  - "^release/.+"
94
101
  - "^hotfix/.+"
95
- - "^codex/feature/.+"
96
- - "^codex/release/.+"
97
- - "^codex/hotfix/.+"
98
102
  merge_rules:
99
103
  - "feature/* -> develop"
100
104
  - "release/* -> main and back-merge to develop"
@@ -18,6 +18,10 @@ Mandatory user dialogue before branch switch:
18
18
  - подтвердить обработку непушенных коммитов (`ahead > 0`);
19
19
  - подтвердить финальный switch/create.
20
20
 
21
+ Task ref naming rule:
22
+ - для веток использовать task ref с префиксом (`GOV-1`, `REL-5`, `DOC-2`, `DEV-12`);
23
+ - если есть только номер issue, использовать fallback `issue-<number>` в имени ветки.
24
+
21
25
  Pre-merge rule:
22
26
  - после commit+push и открытия PR обязательно выполнить `RUN_MR_REVIEW_GATE`;
23
27
  - merge допускается только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED` и явного `MR Review Approved: yes` от пользователя.
@@ -77,13 +77,13 @@ function classifyBranch(branch) {
77
77
  if (/^develop$/.test(branch)) {
78
78
  return "develop";
79
79
  }
80
- if (/^feature\/.+/.test(branch) || /^codex\/feature\/.+/.test(branch)) {
80
+ if (/^feature\/.+/.test(branch)) {
81
81
  return "feature";
82
82
  }
83
- if (/^release\/.+/.test(branch) || /^codex\/release\/.+/.test(branch)) {
83
+ if (/^release\/.+/.test(branch)) {
84
84
  return "release";
85
85
  }
86
- if (/^hotfix\/.+/.test(branch) || /^codex\/hotfix\/.+/.test(branch)) {
86
+ if (/^hotfix\/.+/.test(branch)) {
87
87
  return "hotfix";
88
88
  }
89
89
  return "unknown";
@@ -105,7 +105,7 @@ function extractTaskRefs(text) {
105
105
  refs.add(ref);
106
106
  }
107
107
 
108
- const taskMatches = source.match(/\b[A-Z][A-Z0-9_]*-\d+\b/g) || [];
108
+ const taskMatches = source.match(/\b[A-Za-z][A-Za-z0-9_]*-\d+\b/g) || [];
109
109
  for (const ref of taskMatches) {
110
110
  refs.add(ref.toUpperCase());
111
111
  }
@@ -277,7 +277,13 @@ function gatherTaskRefs(context) {
277
277
  refs.add(`#${branchIssue[1]}`);
278
278
  }
279
279
 
280
- const branchTask = String(context.branch || "").match(/([A-Z][A-Z0-9_]*-\d+)/);
280
+ const branchIssueToken = String(context.branch || "").match(/(?:^|\/)issue-(\d+)(?:-|$)/i);
281
+ if (branchIssueToken) {
282
+ refs.add(`#${branchIssueToken[1]}`);
283
+ refs.add(`ISSUE-${branchIssueToken[1]}`);
284
+ }
285
+
286
+ const branchTask = String(context.branch || "").match(/([A-Za-z][A-Za-z0-9_]*-\d+)/);
281
287
  if (branchTask) {
282
288
  refs.add(branchTask[1].toUpperCase());
283
289
  }
@@ -62,13 +62,13 @@ function classifyBranch(branch) {
62
62
  if (/^develop$/.test(branch)) {
63
63
  return "develop";
64
64
  }
65
- if (/^feature\/.+/.test(branch) || /^codex\/feature\/.+/.test(branch)) {
65
+ if (/^feature\/.+/.test(branch)) {
66
66
  return "feature";
67
67
  }
68
- if (/^release\/.+/.test(branch) || /^codex\/release\/.+/.test(branch)) {
68
+ if (/^release\/.+/.test(branch)) {
69
69
  return "release";
70
70
  }
71
- if (/^hotfix\/.+/.test(branch) || /^codex\/hotfix\/.+/.test(branch)) {
71
+ if (/^hotfix\/.+/.test(branch)) {
72
72
  return "hotfix";
73
73
  }
74
74
  return "unknown";
@@ -12,9 +12,6 @@ const BRANCH_PATTERNS = [
12
12
  { type: "feature", regex: /^feature\/.+/ },
13
13
  { type: "release", regex: /^release\/.+/ },
14
14
  { type: "hotfix", regex: /^hotfix\/.+/ },
15
- { type: "feature", regex: /^codex\/feature\/.+/ },
16
- { type: "release", regex: /^codex\/release\/.+/ },
17
- { type: "hotfix", regex: /^codex\/hotfix\/.+/ },
18
15
  ];
19
16
 
20
17
  function parseArgs(argv) {
@@ -258,8 +255,9 @@ function detectTaskFromBranch(branch) {
258
255
  if (!taskRef) {
259
256
  return "";
260
257
  }
261
- if (/^\d+$/.test(taskRef)) {
262
- return `#${taskRef}`;
258
+ const issueMatch = taskRef.match(/^ISSUE-(\d+)$/);
259
+ if (issueMatch) {
260
+ return `#${issueMatch[1]}`;
263
261
  }
264
262
  return taskRef;
265
263
  }
@@ -280,21 +278,20 @@ function extractBranchTaskRef(branch) {
280
278
  return "";
281
279
  }
282
280
 
283
- const normalized = source.startsWith("codex/") ? source.slice("codex/".length) : source;
284
- const match = normalized.match(/^(feature|release|hotfix)\/(.+)$/);
281
+ const match = source.match(/^(feature|release|hotfix)\/(.+)$/);
285
282
  if (!match) {
286
283
  return "";
287
284
  }
288
285
 
289
286
  const tail = match[2];
290
- const uppercaseToken = tail.match(/^([A-Z][A-Z0-9_]*-\d+)/);
287
+ const uppercaseToken = tail.match(/^([A-Za-z][A-Za-z0-9_]*-\d+)/);
291
288
  if (uppercaseToken) {
292
289
  return uppercaseToken[1].toUpperCase();
293
290
  }
294
291
 
295
292
  const numericToken = tail.match(/^(\d+)(?:-|$)/);
296
293
  if (numericToken) {
297
- return numericToken[1];
294
+ return `ISSUE-${numericToken[1]}`;
298
295
  }
299
296
 
300
297
  return "";
@@ -308,7 +305,7 @@ function extractTaskRefFromCurrentTask(currentTask) {
308
305
 
309
306
  const issueMatch = source.match(/#(\d+)/);
310
307
  if (issueMatch) {
311
- return issueMatch[1];
308
+ return `ISSUE-${issueMatch[1]}`;
312
309
  }
313
310
 
314
311
  const taskMatch = source.match(/\b([A-Z][A-Z0-9_]*-\d+)\b/);
@@ -7,9 +7,6 @@ const BRANCH_PATTERNS = [
7
7
  { type: "feature", regex: /^feature\/.+/ },
8
8
  { type: "release", regex: /^release\/.+/ },
9
9
  { type: "hotfix", regex: /^hotfix\/.+/ },
10
- { type: "feature", regex: /^codex\/feature\/.+/ },
11
- { type: "release", regex: /^codex\/release\/.+/ },
12
- { type: "hotfix", regex: /^codex\/hotfix\/.+/ },
13
10
  ];
14
11
 
15
12
  const TASK_KIND_MAP = {
@@ -180,8 +177,7 @@ function extractBranchTaskRef(branch) {
180
177
  return "";
181
178
  }
182
179
 
183
- const normalized = source.startsWith("codex/") ? source.slice("codex/".length) : source;
184
- const match = normalized.match(/^(feature|release|hotfix)\/(.+)$/);
180
+ const match = source.match(/^(feature|release|hotfix)\/(.+)$/);
185
181
  if (!match) {
186
182
  return "";
187
183
  }
@@ -194,7 +190,7 @@ function extractBranchTaskRef(branch) {
194
190
 
195
191
  const issueMatch = tail.match(/^(\d+)(?:-|$)/);
196
192
  if (issueMatch) {
197
- return issueMatch[1];
193
+ return `ISSUE-${issueMatch[1]}`;
198
194
  }
199
195
 
200
196
  return "";
@@ -208,12 +204,12 @@ function normalizeTaskRef(task) {
208
204
 
209
205
  const issue = source.match(/^#?(\d+)$/);
210
206
  if (issue) {
211
- return issue[1];
207
+ return `ISSUE-${issue[1]}`;
212
208
  }
213
209
 
214
210
  const fromBodyIssue = source.match(/#(\d+)/);
215
211
  if (fromBodyIssue) {
216
- return fromBodyIssue[1];
212
+ return `ISSUE-${fromBodyIssue[1]}`;
217
213
  }
218
214
 
219
215
  const taskRef = source.match(/([A-Za-z][A-Za-z0-9_]*-\d+)/);
@@ -249,7 +245,7 @@ function defaultBaseBranch(kind) {
249
245
  }
250
246
 
251
247
  function buildTargetBranch({ kind, taskRef, slug }) {
252
- const prefix = `codex/${kind}`;
248
+ const prefix = kind;
253
249
  const taskPart = slugify(taskRef) || "task";
254
250
  const slugPart = slugify(slug) || "work";
255
251
  if (slugPart === taskPart) {
@@ -377,6 +373,7 @@ function buildPlan(options, gitContext) {
377
373
  });
378
374
 
379
375
  const blockers = [];
376
+ const namingWarnings = [];
380
377
  const requiresDialogue = [];
381
378
 
382
379
  if (!sameFeature && gitContext.dirty && !options.allowDirty) {
@@ -393,6 +390,12 @@ function buildPlan(options, gitContext) {
393
390
  );
394
391
  }
395
392
 
393
+ if (/^ISSUE-\d+$/.test(taskRef)) {
394
+ namingWarnings.push(
395
+ "Task ref is issue-based. Branch name will use issue-<number>; prefer domain task refs like GOV-1/REL-1/DOC-1 when available.",
396
+ );
397
+ }
398
+
396
399
  if (sameFeature) {
397
400
  requiresDialogue.push(
398
401
  "Задача атомарная и относится к текущей feature-ветке. Подтвердите, что продолжаем работу в этой ветке.",
@@ -414,6 +417,7 @@ function buildPlan(options, gitContext) {
414
417
  current: gitContext,
415
418
  targetBranch,
416
419
  blockers,
420
+ namingWarnings,
417
421
  contextWarnings: getContextWarnings(baseBranch),
418
422
  requiresDialogue,
419
423
  suggestedCommands: sameFeature
@@ -466,6 +470,16 @@ function printPlan(plan, applyResult) {
466
470
  }
467
471
  }
468
472
 
473
+ console.log("");
474
+ console.log("## Naming Warnings");
475
+ if (plan.namingWarnings.length === 0) {
476
+ console.log("- none");
477
+ } else {
478
+ for (const warning of plan.namingWarnings) {
479
+ console.log(`- ${warning}`);
480
+ }
481
+ }
482
+
469
483
  console.log("");
470
484
  console.log("## Required User Dialogue");
471
485
  for (const line of plan.requiresDialogue) {
@@ -7,9 +7,6 @@ const BRANCH_PATTERNS = [
7
7
  { type: "feature", regex: /^feature\/.+/ },
8
8
  { type: "release", regex: /^release\/.+/ },
9
9
  { type: "hotfix", regex: /^hotfix\/.+/ },
10
- { type: "feature", regex: /^codex\/feature\/.+/ },
11
- { type: "release", regex: /^codex\/release\/.+/ },
12
- { type: "hotfix", regex: /^codex\/hotfix\/.+/ },
13
10
  ];
14
11
 
15
12
  function git(args, allowFailure = false) {
@@ -50,14 +50,14 @@
50
50
  ```bash
51
51
  npm run meta:verify
52
52
  npm run meta:branch
53
- npm run meta:task-start -- --task 12 --slug api-redirect
53
+ npm run meta:task-start -- --task GOV-1 --slug api-redirect
54
54
  npm run meta:review
55
55
  npm run meta:review-approve
56
56
  npm run meta:mr-review
57
57
  npm run meta:mr-review-approve
58
58
  npm run meta:verify-link
59
59
  npm run meta:ops -- --command SET_STATUS --payload '{"task":"DEV-12","status":"IN_PROGRESS"}'
60
- npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"12","slug":"api-redirect"}'
60
+ npm run meta:ops -- --command PREPARE_TASK_BRANCH --payload '{"task":"GOV-1","slug":"api-redirect"}'
61
61
  npm run meta:status
62
62
  ```
63
63
 
@@ -66,6 +66,7 @@ npm run meta:status
66
66
  `meta:branch` валидирует ветку по Git Flow Lite (`main`, `develop`, `feature/*`, `release/*`, `hotfix/*`).
67
67
  `meta:task-start` делает branch-routing preflight: сравнивает задачу с текущей веткой, показывает dirty/ahead блокеры и готовит маршрут (`stay_on_current_branch` или `create_new_branch`).
68
68
  `meta:task-start` также делает context-protection check для `agents.md` между текущей и базовой веткой и требует явного подтверждения при diff.
69
+ Именование branch task ref: по умолчанию использовать префиксные ID (`GOV-1`, `REL-1`, `DOC-1`, `DEV-1`); для чистого GitHub issue fallback формат `issue-<number>`.
69
70
  `meta:mr-review` формирует сводный pre-merge отчёт по MR/PR, `meta:mr-review-approve` фиксирует финальный PASS после подтверждения пользователя.
70
71
 
71
72
  `meta:status` выдаёт сводный статус:
@@ -139,7 +139,6 @@ Name: <agent role>
139
139
  Обязательное правило:
140
140
  - для режима `git_flow_lite` статусный цикл задачи фиксируется как `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
141
141
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
142
- - для агентных веток также допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
143
142
  - интеграционные правила: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
144
143
  - `RUN_REVIEW_GATE` сначала формирует отчёт ревьювера и рекомендацию (`PASS_CANDIDATE`/`FAIL`);
145
144
  - финальный `RUN_REVIEW_GATE: PASS_CONFIRMED` допускается только после явного подтверждения пользователя `Review Approved: yes`;
@@ -167,12 +166,13 @@ Name: <agent role>
167
166
  Перед началом реализации агент обязан:
168
167
  1. Проверить веточный контекст через `meta:status`.
169
168
  2. Запустить branch-routing preflight через `meta:task-start -- --task <TASK-ID|#issue> --slug <slug> --kind atomic|feature|release|hotfix`.
170
- 3. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
171
- 4. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
172
- 5. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
173
- 6. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
174
- 7. Создать новую рабочую ветку по Git Flow Lite.
175
- 8. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
169
+ 3. В названии рабочей ветки использовать task ref с префиксом (`GOV-1`, `REL-1`, `DOC-1`, `DEV-1`); если есть только issue number, использовать `issue-<number>`.
170
+ 4. Если задача относится к текущей feature-ветке (атомарная подзадача), продолжить в этой ветке только после подтверждения пользователя.
171
+ 5. Если задача не относится к текущей ветке, проверить незакоммиченные изменения и непушенные коммиты.
172
+ 6. Согласовать с пользователем способ обработки (`commit/stash/discard/push`).
173
+ 7. Переключиться на базовую ветку (`develop` или `main`) и обновить её.
174
+ 8. Создать новую рабочую ветку по Git Flow Lite.
175
+ 9. Перед переключением проверить консистентность `agents.md` между текущей и базовой веткой; при отличиях показать явное предупреждение и запросить подтверждение пользователя.
176
176
 
177
177
  Без этого preflight выполнение реализации запрещено.
178
178
 
@@ -53,7 +53,6 @@ result PASS
53
53
  Дополнительно для коммита:
54
54
  - для `git_flow_lite` используется цикл `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
55
55
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
56
- - для агентных веток допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
57
56
  - правила merge: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
58
57
  - `RUN_REVIEW_GATE` работает в два этапа:
59
58
  - сначала отчёт и рекомендация (`PASS_CANDIDATE`/`FAIL`);
@@ -65,6 +64,7 @@ result PASS
65
64
  - merge разрешён только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED`;
66
65
  - для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой поток на `develop`/`main` запрещён;
67
66
  - перед началом реализации обязателен `PREPARE_TASK_BRANCH` (веточный preflight и user dialogue);
67
+ - branch naming policy: использовать task ref с префиксом (`GOV-1`,`REL-1`,`DOC-1`,`DEV-1`); для issue-only задач использовать `issue-<number>`;
68
68
  - если задача атомарная и относится к текущей feature-ветке, допускается выполнение в текущей ветке после явного подтверждения пользователя;
69
69
  - если задача не относится к текущей ветке, требуется: проверить dirty/ahead, согласовать действие с пользователем, перейти на `develop` (или `main` для hotfix), обновить и создать новую ветку;
70
70
  - перед `--apply` обязателен контекстный check: сравнить `agents.md` текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
@@ -80,7 +80,7 @@ result PASS
80
80
  - `PUBLISH`
81
81
 
82
82
  Семантика статусов:
83
- - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*` (или `codex/*` эквиваленты); открыт PR в `develop` или `main` согласно правилам ветвления.
83
+ - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*`; открыт PR в `develop` или `main` согласно правилам ветвления.
84
84
  - `DONE`: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
85
85
  - `PUBLISH`: релиз опубликован и доступен в последней версии пакета.
86
86
 
@@ -184,9 +184,9 @@ Name: Agile Manager Agent
184
184
 
185
185
  Agile Manager Agent: prepare task branch,
186
186
  tracker __DEFAULT_TRACKER__,
187
- task "#12",
187
+ task "GOV-1",
188
188
  task kind "atomic",
189
- command "npm run meta:task-start -- --task 12 --slug api-redirect",
189
+ command "npm run meta:task-start -- --task GOV-1 --slug api-redirect",
190
190
  user dialogue "confirm branch context + dirty/ahead handling + agents.md context warning + switch decision"
191
191
  ```
192
192
 
@@ -53,7 +53,6 @@ result PASS
53
53
  Дополнительно для коммита:
54
54
  - для `git_flow_lite` используется цикл `TODO -> IN_PROGRESS -> REVIEW -> READY -> DONE` (для релизных задач дополнительно `-> PUBLISH`);
55
55
  - рабочие ветки: `feature/*`, `release/*`, `hotfix/*`; долгоживущие ветки: `develop`, `main`;
56
- - для агентных веток допускаются `codex/feature/*`, `codex/release/*`, `codex/hotfix/*`;
57
56
  - правила merge: `feature/* -> develop`, `release/* -> main` + back-merge в `develop`, `hotfix/* -> main` + back-merge в `develop`;
58
57
  - `RUN_REVIEW_GATE` работает в два этапа:
59
58
  - сначала отчёт и рекомендация (`PASS_CANDIDATE`/`FAIL`);
@@ -65,6 +64,7 @@ result PASS
65
64
  - merge разрешён только после `RUN_MR_REVIEW_GATE: PASS_CONFIRMED`;
66
65
  - для задач реализации по умолчанию используется отдельная ветка `feature/*`; прямой поток на `develop`/`main` запрещён;
67
66
  - перед началом реализации обязателен `PREPARE_TASK_BRANCH` (веточный preflight и user dialogue);
67
+ - branch naming policy: использовать task ref с префиксом (`GOV-1`,`REL-1`,`DOC-1`,`DEV-1`); для issue-only задач использовать `issue-<number>`;
68
68
  - если задача атомарная и относится к текущей feature-ветке, допускается выполнение в текущей ветке после явного подтверждения пользователя;
69
69
  - если задача не относится к текущей ветке, требуется: проверить dirty/ahead, согласовать действие с пользователем, перейти на `develop` (или `main` для hotfix), обновить и создать новую ветку;
70
70
  - перед `--apply` обязателен контекстный check: сравнить `agents.md` текущей и базовой ветки, при diff запросить явное подтверждение пользователя;
@@ -80,7 +80,7 @@ result PASS
80
80
  - `PUBLISH`
81
81
 
82
82
  Семантика статусов:
83
- - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*` (или `codex/*` эквиваленты); открыт PR в `develop` или `main` согласно правилам ветвления.
83
+ - `READY`: коммит сделан и отправлен (`push`) в `feature/*|release/*|hotfix/*`; открыт PR в `develop` или `main` согласно правилам ветвления.
84
84
  - `DONE`: изменения интегрированы в `main`; для `release/*` и `hotfix/*` подтверждён back-merge в `develop`.
85
85
  - `PUBLISH`: релиз опубликован и доступен в последней версии пакета.
86
86
 
@@ -184,9 +184,9 @@ Name: Agile Manager Agent
184
184
 
185
185
  Agile Manager Agent: prepare task branch,
186
186
  tracker github,
187
- task "#12",
187
+ task "GOV-1",
188
188
  task kind "atomic",
189
- command "npm run meta:task-start -- --task 12 --slug api-redirect",
189
+ command "npm run meta:task-start -- --task GOV-1 --slug api-redirect",
190
190
  user dialogue "confirm branch context + dirty/ahead handling + agents.md context warning + switch decision"
191
191
  ```
192
192