From 950a2251e0f6d1afb434e3ad0c6e00e121137034 Mon Sep 17 00:00:00 2001 From: Gros Frumos Date: Tue, 17 Mar 2026 16:03:26 +0200 Subject: [PATCH] kin: auto-commit after pipeline --- tests/test_qa_gaps.py | 13 ++++----- web/frontend/src/views/SettingsView.vue | 36 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/tests/test_qa_gaps.py b/tests/test_qa_gaps.py index b5c55a4..2fbe968 100644 --- a/tests/test_qa_gaps.py +++ b/tests/test_qa_gaps.py @@ -227,23 +227,20 @@ class TestBlockedReasonPropagation: # --------------------------------------------------------------------------- -# Issue 2: infra_head and research_head missing dept_* routes -# (low severity — documentation gap) +# Issue 2: dept_infra and dept_research routes — FIXED (KIN-ARCH-021) # --------------------------------------------------------------------------- class TestMissingDeptRoutes: - """Issue 2 — agents/specialists.yaml routes section. + """Issue 2 — agents/specialists.yaml routes section. FIXED in KIN-ARCH-021. The specialists.yaml defines 7 departments: backend, frontend, qa, security, infra, research, marketing - But there are only 6 dept_* routes: + After the fix there are 8 dept_* routes: dept_feature, dept_fullstack, dept_security_audit, dept_backend, - dept_frontend, dept_marketing + dept_frontend, dept_marketing, dept_infra, dept_research - infra_head (infra department) and research_head (research department) - have NO dedicated standalone dept_* route. This means the PM cannot - route a task exclusively to the infra or research department via route template. + These tests are regression tests verifying the routes remain present. """ def test_infra_head_has_dedicated_dept_route(self): diff --git a/web/frontend/src/views/SettingsView.vue b/web/frontend/src/views/SettingsView.vue index 59bb026..488078a 100644 --- a/web/frontend/src/views/SettingsView.vue +++ b/web/frontend/src/views/SettingsView.vue @@ -6,13 +6,16 @@ const projects = ref([]) const vaultPaths = ref>({}) const deployCommands = ref>({}) const testCommands = ref>({}) +const autoTestEnabled = ref>({}) const saving = ref>({}) const savingDeploy = ref>({}) const savingTest = ref>({}) +const savingAutoTest = ref>({}) const syncing = ref>({}) const saveStatus = ref>({}) const saveDeployStatus = ref>({}) const saveTestStatus = ref>({}) +const saveAutoTestStatus = ref>({}) const syncResults = ref>({}) const error = ref(null) @@ -23,6 +26,7 @@ onMounted(async () => { vaultPaths.value[p.id] = p.obsidian_vault_path ?? '' deployCommands.value[p.id] = p.deploy_command ?? '' testCommands.value[p.id] = p.test_command ?? '' + autoTestEnabled.value[p.id] = !!(p.auto_test_enabled) } } catch (e) { error.value = String(e) @@ -68,6 +72,21 @@ async function saveTestCommand(projectId: string) { } } +async function toggleAutoTest(projectId: string) { + autoTestEnabled.value[projectId] = !autoTestEnabled.value[projectId] + savingAutoTest.value[projectId] = true + saveAutoTestStatus.value[projectId] = '' + try { + await api.patchProject(projectId, { auto_test_enabled: autoTestEnabled.value[projectId] }) + saveAutoTestStatus.value[projectId] = 'Saved' + } catch (e) { + autoTestEnabled.value[projectId] = !autoTestEnabled.value[projectId] + saveAutoTestStatus.value[projectId] = `Error: ${e}` + } finally { + savingAutoTest.value[projectId] = false + } +} + async function runSync(projectId: string) { syncing.value[projectId] = true syncResults.value[projectId] = null @@ -153,6 +172,23 @@ async function runSync(projectId: string) { +
+ + + {{ saveAutoTestStatus[project.id] }} + +
+