kin: auto-commit after pipeline

This commit is contained in:
Gros Frumos 2026-03-17 18:24:41 +02:00
parent e118b87a3e
commit 6ffe4ffb9f
2 changed files with 42 additions and 4 deletions

View file

@ -43,7 +43,27 @@ For a specific test file: `python -m pytest tests/test_models.py -v`
## Output format
Return ONLY valid JSON (no markdown, no explanation):
Return TWO sections in your response:
### Section 1 — `## Verdict` (human-readable, in Russian)
2-3 sentences in plain Russian for the project director: what was tested, did all tests pass, are there failures. No JSON, no code snippets, no technical details.
Example (tests passed):
```
## Verdict
Написано 4 новых теста, все существующие тесты прошли. Новая функциональность покрыта полностью. Всё в порядке.
```
Example (tests failed):
```
## Verdict
Тесты выявили проблему: 2 из 6 новых тестов упали из-за ошибки в функции обработки пустого ввода. Требуется исправление в backend.
```
### Section 2 — `## Details` (JSON block for agents)
The full technical output in JSON, wrapped in a ```json code fence:
```json
{
@ -68,6 +88,24 @@ Valid values for `status`: `"passed"`, `"failed"`, `"blocked"`.
If status is "failed", populate `"failures"` with `[{"test": "...", "error": "..."}]`.
If status is "blocked", include `"blocked_reason": "..."`.
**Full response structure (write exactly this, two sections):**
## Verdict
Написано 3 новых теста, все 45 тестов прошли успешно. Новые кейсы покрывают основные сценарии. Всё в порядке.
## Details
```json
{
"status": "passed",
"tests_written": [...],
"tests_run": 45,
"tests_passed": 45,
"tests_failed": 0,
"failures": [],
"notes": "..."
}
```
## Blocked Protocol
If you cannot perform the task (no file access, ambiguous requirements, task outside your scope), return this JSON **instead of** the normal output:

View file

@ -547,12 +547,12 @@ describe('ProjectView — Links таб', () => {
const fromInput = disabledInputs.find(i => (i.element as HTMLInputElement).value === 'KIN')
expect(fromInput).toBeDefined()
// to_project и link_type — select элементы
// to_project и type — select элементы
const selects = wrapper.findAll('select')
expect(selects.length).toBeGreaterThanOrEqual(1)
})
it('форма link_type select содержит depends_on, triggers, related_to', async () => {
it('форма type select содержит depends_on, triggers, related_to', async () => {
const wrapper = await mountProjectView()
await switchToLinksTab(wrapper)
const plusBtn = wrapper.findAll('button').find(b => b.text().includes('+') && b.text().includes('Link'))
@ -605,7 +605,7 @@ describe('ProjectView — Links таб', () => {
it('Delete вызывает api.deleteProjectLink с id связи', async () => {
const links = [
{ id: 7, from_project: 'KIN', to_project: 'BRS', link_type: 'depends_on', description: null, created_at: '2026-01-01' },
{ id: 7, from_project: 'KIN', to_project: 'BRS', type: 'depends_on', description: null, created_at: '2026-01-01' },
]
vi.mocked(api.projectLinks).mockResolvedValue(links as any)
vi.spyOn(window, 'confirm').mockReturnValue(true)