plan: абсолютные пути worktree в git-командах (#80)
Относительный `git -C arm-core` из корня workspace указывал на main-checkout (O-1 первого запуска контроллера). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
This commit is contained in:
parent
dba7273a2d
commit
381c373467
@ -33,6 +33,10 @@
|
||||
- arm-core: `make check` зелёный после каждой задачи backend; `make check-full` — перед PR. arm-web: `make check` перед PR.
|
||||
- arm-web: все PR — в ветку `test`, не в `main`. Фронт: цвет строки «БАЛАНС» `#f9f0ff`, шрифт 700; подсветка ячейки
|
||||
(«исправлено» `#e6f4ff`, «требует проверки» `#fff7e6`) перекрывает фон строки.
|
||||
- **Git и пути — только абсолютные.** Все git-команды — `git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/<repo> …` (или cwd внутри
|
||||
этого worktree); относительный `git -C arm-core` из корня workspace указывает на main-checkout — хук guard-main
|
||||
справедливо блокирует (O-1 первого запуска, 09.10.2026). Исключение — `git -C /Users/andrey.epifancev/projects/awp-ca/<repo> fetch` и `worktree add`
|
||||
в подготовке задач 6–7 (не commit/push). Коммиты в worktree на ветке фичи разрешены владельцем 09.10.2026.
|
||||
- Git — всегда `git -C <repo>` или cwd внутри worktree; в `main` не коммитить (хук guard-main); хуки не обходить — при
|
||||
отказе хука остановиться и сообщить.
|
||||
|
||||
@ -141,7 +145,7 @@ def test_invalid_catalog_is_value_error(tmp_path: Path, body: str, message: str)
|
||||
|
||||
- [ ] **Step 2: Запустить — падает**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_domain_statement_lines.py -q`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_domain_statement_lines.py -q`
|
||||
Expected: FAIL — `ModuleNotFoundError: No module named 'src.domain.statement_lines'`.
|
||||
|
||||
- [ ] **Step 3: Создать справочник** `api/rules/statement_lines.yaml` (точно этот текст):
|
||||
@ -354,19 +358,19 @@ def load_line_catalog(path: Path | None = None) -> LineCatalog:
|
||||
|
||||
- [ ] **Step 5: Запустить — проходит**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_domain_statement_lines.py -q`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_domain_statement_lines.py -q`
|
||||
Expected: PASS (все тесты).
|
||||
|
||||
- [ ] **Step 6: Линтеры**
|
||||
|
||||
Run: `cd arm-core && make lint`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core && make lint`
|
||||
Expected: ruff и mypy без ошибок (длинные строки yaml линтер не проверяет).
|
||||
|
||||
- [ ] **Step 7: Коммит**
|
||||
|
||||
```bash
|
||||
git -C arm-core add api/rules/statement_lines.yaml api/src/domain/statement_lines.py api/tests/test_domain_statement_lines.py
|
||||
git -C arm-core commit -m "feat(statements): справочник строк форм ББ/ОФР по редакциям (#80)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core add api/rules/statement_lines.yaml api/src/domain/statement_lines.py api/tests/test_domain_statement_lines.py
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core commit -m "feat(statements): справочник строк форм ББ/ОФР по редакциям (#80)"
|
||||
```
|
||||
(В конце сообщения — строки атрибуции из system-reminder сессии.)
|
||||
|
||||
@ -564,8 +568,8 @@ async def test_get_without_edition_completes_cells_only(
|
||||
|
||||
- [ ] **Step 2: Запустить — падают**
|
||||
|
||||
Run: `cd arm-core && make up` (если стенд PostgreSQL/NATS ещё не поднят), затем
|
||||
`cd arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q -k "get_"`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core && make up` (если стенд PostgreSQL/NATS ещё не поднят), затем
|
||||
`cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q -k "get_"`
|
||||
Expected: FAIL — `KeyError: 'origin'` / неверное число строк.
|
||||
|
||||
- [ ] **Step 3: Реализовать в `api/src/schemas/statements.py`.**
|
||||
@ -691,19 +695,19 @@ load_line_catalog`; `build_out`:
|
||||
|
||||
- [ ] **Step 5: Запустить — проходят**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q`
|
||||
Expected: PASS (все, включая старые PATCH-тесты: `_first_cell` берёт строку с суммой — это строка источника).
|
||||
|
||||
- [ ] **Step 6: `make check`**
|
||||
|
||||
Run: `cd arm-core && make check`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core && make check`
|
||||
Expected: lint + unit-тесты зелёные.
|
||||
|
||||
- [ ] **Step 7: Коммит**
|
||||
|
||||
```bash
|
||||
git -C arm-core add api/src/schemas/statements.py api/src/services/statements.py api/tests/test_api_statements.py
|
||||
git -C arm-core commit -m "feat(statements): GET формы достраивает строки справочника и ячейки (#80)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core add api/src/schemas/statements.py api/src/services/statements.py api/tests/test_api_statements.py
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core commit -m "feat(statements): GET формы достраивает строки справочника и ячейки (#80)"
|
||||
```
|
||||
|
||||
---
|
||||
@ -952,7 +956,7 @@ async def test_patch_duplicate_line_code_rejected(
|
||||
|
||||
- [ ] **Step 2: Запустить — падают**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q -k "patch"`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q -k "patch"`
|
||||
Expected: новые тесты FAIL (422 массивом на `line_code` — поле запрещено `extra="forbid"`), старые PASS.
|
||||
|
||||
- [ ] **Step 3: `CellPatch`** в `api/src/schemas/statements.py` (импорт `model_validator` из `pydantic`):
|
||||
@ -1115,16 +1119,16 @@ FinancialStatementValue`. Константа `LINE_EXISTS = "строка уже
|
||||
|
||||
- [ ] **Step 6: Запустить — проходят**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q`
|
||||
Expected: PASS.
|
||||
|
||||
- [ ] **Step 7: `make check`, коммит**
|
||||
|
||||
Run: `cd arm-core && make check` — зелёный.
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core && make check` — зелёный.
|
||||
|
||||
```bash
|
||||
git -C arm-core add api/src/schemas/statements.py api/src/repositories/statements.py api/src/services/statements.py api/tests/test_api_statements.py
|
||||
git -C arm-core commit -m "feat(statements): правка по line_code создаёт строку и ячейку формы (#80)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core add api/src/schemas/statements.py api/src/repositories/statements.py api/src/services/statements.py api/tests/test_api_statements.py
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core commit -m "feat(statements): правка по line_code создаёт строку и ячейку формы (#80)"
|
||||
```
|
||||
|
||||
---
|
||||
@ -1180,7 +1184,7 @@ async def test_template_line_checks_follow_filled_amounts(
|
||||
|
||||
- [ ] **Step 2: Запустить — падает**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q -k template_line_checks`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_api_statements.py -q -k template_line_checks`
|
||||
Expected: FAIL на последнем assert — очищенная 1700 (сумма `None` = 0) даёт нарушение в обеих колонках.
|
||||
|
||||
- [ ] **Step 3: Реализация** — заменить тело `statement_amounts` после выборки колонок:
|
||||
@ -1218,14 +1222,14 @@ Docstring дополнить: «Созданные правкой строки (
|
||||
|
||||
- [ ] **Step 4: Запустить — проходит; `make check`**
|
||||
|
||||
Run: `cd arm-core/api && .venv/bin/pytest tests/test_api_statements.py tests/test_form_confirmable.py tests/test_auto_confirm.py -q`
|
||||
затем `cd arm-core && make check`. Expected: PASS.
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core/api && .venv/bin/pytest tests/test_api_statements.py tests/test_form_confirmable.py tests/test_auto_confirm.py -q`
|
||||
затем `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core && make check`. Expected: PASS.
|
||||
|
||||
- [ ] **Step 5: Коммит**
|
||||
|
||||
```bash
|
||||
git -C arm-core add api/src/repositories/statements.py api/tests/test_api_statements.py
|
||||
git -C arm-core commit -m "feat(statements): пустые созданные строки не участвуют в проверках §7 (#80)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core add api/src/repositories/statements.py api/tests/test_api_statements.py
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core commit -m "feat(statements): пустые созданные строки не участвуют в проверках §7 (#80)"
|
||||
```
|
||||
|
||||
---
|
||||
@ -1252,16 +1256,16 @@ git -C arm-core commit -m "feat(statements): пустые созданные с
|
||||
созданные строки не участвуют в §7 (`statement_amounts`). Решения — `openspec/changes/statement-template-lines/design.md`.»
|
||||
- [ ] **Step 3: Полная проверка**
|
||||
|
||||
Run: `cd arm-core && make check-full`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core && make check-full`
|
||||
Expected: все цели зелёные; вывод сохранить для описания PR. Если `e2e` пропущен (нет профиля `services`) — так и
|
||||
указать в PR.
|
||||
|
||||
- [ ] **Step 4: Коммит, push, PR**
|
||||
|
||||
```bash
|
||||
git -C arm-core add README.md CLAUDE.md openspec/changes/statement-template-lines/design.md
|
||||
git -C arm-core commit -m "docs: полный состав строк ББ/ОФР в README и CLAUDE.md (#80)"
|
||||
git -C arm-core push -u origin feat/80-statement-template-lines
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core add README.md CLAUDE.md openspec/changes/statement-template-lines/design.md
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core commit -m "docs: полный состав строк ББ/ОФР в README и CLAUDE.md (#80)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-core push -u origin feat/80-statement-template-lines
|
||||
tea pulls create --login home --repo RSHB/arm-core --head feat/80-statement-template-lines --base main \
|
||||
--title "Полный состав строк ББ/ОФР на экране проверки (#80)" --description "<описание>"
|
||||
```
|
||||
@ -1277,13 +1281,13 @@ design.md + рулинги исполнения), таблица находок
|
||||
**Подготовка (до кода):**
|
||||
```bash
|
||||
cd /Users/andrey.epifancev/projects/awp-ca
|
||||
git -C arm-web fetch origin
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/arm-web fetch origin
|
||||
tea issues create --login home --repo RSHB/arm-web --title "Шаблонные строки ББ/ОФР и выделение строк «БАЛАНС»" \
|
||||
--description "Фронт к RSHB/arm-core#80: строки формы с id = null (origin = template) редактируются, правка уходит по line_code; строки 1600/1700 выделены цветом. Спека — arm-core openspec/changes/statement-template-lines."
|
||||
# номер issue → <N>
|
||||
git -C arm-web worktree add -b feat/<N>-statement-template-lines ../.wt/stmt-template/arm-web origin/test
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/arm-web worktree add -b feat/<N>-statement-template-lines ../.wt/stmt-template/arm-web origin/test
|
||||
ln -s ../../web-proto/arm-web/node_modules .wt/stmt-template/arm-web/node_modules
|
||||
cd .wt/stmt-template/arm-web && openspec new change statement-template-lines
|
||||
cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-web && openspec new change statement-template-lines
|
||||
```
|
||||
|
||||
**Files:**
|
||||
@ -1545,16 +1549,16 @@ const lineBackground = (r: LayoutRow) => (r.kind === 'line' && r.grand ? GRAND_B
|
||||
|
||||
- [ ] **Step 8: Проверки**
|
||||
|
||||
Run: `cd .wt/stmt-template/arm-web && make check`
|
||||
Run: `cd /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-web && make check`
|
||||
Expected: biome, `tsc --noEmit`, vitest, `rsbuild build` — зелёные. Ошибки tsc в файлах, которых задача не касалась и
|
||||
которые были до неё, — не чинить, отметить в отчёте (O-маркер).
|
||||
|
||||
- [ ] **Step 9: Коммит, push, PR в `test`**
|
||||
|
||||
```bash
|
||||
git -C .wt/stmt-template/arm-web add -A src openspec/changes/statement-template-lines
|
||||
git -C .wt/stmt-template/arm-web commit -m "feat(review): шаблонные строки ББ/ОФР и выделение строк «БАЛАНС» (#<N>)"
|
||||
git -C .wt/stmt-template/arm-web push -u origin feat/<N>-statement-template-lines
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-web add -A src openspec/changes/statement-template-lines
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-web commit -m "feat(review): шаблонные строки ББ/ОФР и выделение строк «БАЛАНС» (#<N>)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/arm-web push -u origin feat/<N>-statement-template-lines
|
||||
tea pulls create --login home --repo RSHB/arm-web --head feat/<N>-statement-template-lines --base test \
|
||||
--title "Шаблонные строки ББ/ОФР и выделение «БАЛАНС» (#<N>)" --description "<описание>"
|
||||
```
|
||||
@ -1570,12 +1574,12 @@ tea pulls create --login home --repo RSHB/arm-web --head feat/<N>-statement-temp
|
||||
**Подготовка:**
|
||||
```bash
|
||||
cd /Users/andrey.epifancev/projects/awp-ca
|
||||
git -C docs fetch origin
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/docs fetch origin
|
||||
tea issues create --login home --repo RSHB/arm-ka-docs --title "Полный состав строк ББ/ОФР: правило §7, OQ-150, гайды" \
|
||||
--description "Документация к RSHB/arm-core#80 и arm-web#<N>."
|
||||
# номер → <D>
|
||||
rm .wt/stmt-template/docs # это симлинк на main-checkout; вместо него — worktree
|
||||
git -C docs worktree add -b feat/<D>-statement-template-lines ../.wt/stmt-template/docs origin/main
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/docs worktree add -b feat/<D>-statement-template-lines ../.wt/stmt-template/docs origin/main
|
||||
```
|
||||
|
||||
**Files:**
|
||||
@ -1610,9 +1614,9 @@ git -C docs worktree add -b feat/<D>-statement-template-lines ../.wt/stmt-templa
|
||||
- [ ] **Step 5: Коммит, push, PR**
|
||||
|
||||
```bash
|
||||
git -C .wt/stmt-template/docs add context dev
|
||||
git -C .wt/stmt-template/docs commit -m "docs: полный состав строк ББ/ОФР — §7, OQ-150, гайды (#<D>)"
|
||||
git -C .wt/stmt-template/docs push -u origin feat/<D>-statement-template-lines
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/docs add context dev
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/docs commit -m "docs: полный состав строк ББ/ОФР — §7, OQ-150, гайды (#<D>)"
|
||||
git -C /Users/andrey.epifancev/projects/awp-ca/.wt/stmt-template/docs push -u origin feat/<D>-statement-template-lines
|
||||
tea pulls create --login home --repo RSHB/arm-ka-docs --head feat/<D>-statement-template-lines --base main \
|
||||
--title "Полный состав строк ББ/ОФР: §7, OQ-150, гайды (#<D>)" --description "Closes #<D>. К RSHB/arm-core#80, arm-web#<N>."
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user