diff --git a/.claude/skills/interface-validate/scripts/interface-validate.ps1 b/.claude/skills/interface-validate/scripts/interface-validate.ps1 index e99fcf49..5737589c 100644 --- a/.claude/skills/interface-validate/scripts/interface-validate.ps1 +++ b/.claude/skills/interface-validate/scripts/interface-validate.ps1 @@ -1,4 +1,4 @@ -# interface-validate v1.1 — Validate 1C CommandInterface.xml structure +# interface-validate v1.2 — Validate 1C CommandInterface.xml structure (+Report-*: общий эталон вывода валидаторов) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][Alias('Path')][string]$CIPath, @@ -55,12 +55,16 @@ function Report-OK([string]$msg) { $script:okCount++ if ($Detailed) { Out-Line "[OK] $msg" } } -function Report-Error([string]$msg) { +function Report-Error { + param([string]$msg) $script:errors++ Out-Line "[ERROR] $msg" - if ($script:errors -ge $MaxErrors) { $script:stopped = $true } + if ($script:errors -ge $MaxErrors) { + $script:stopped = $true + } } -function Report-Warn([string]$msg) { +function Report-Warn { + param([string]$msg) $script:warnings++ Out-Line "[WARN] $msg" } diff --git a/.claude/skills/interface-validate/scripts/interface-validate.py b/.claude/skills/interface-validate/scripts/interface-validate.py index 878ebc77..79568416 100644 --- a/.claude/skills/interface-validate/scripts/interface-validate.py +++ b/.claude/skills/interface-validate/scripts/interface-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# interface-validate v1.1 — Validate 1C CommandInterface.xml structure +# interface-validate v1.2 — Validate 1C CommandInterface.xml structure (+Report-*: общий эталон вывода валидаторов) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Validates CommandInterface.xml sections, command references, order, duplicates.""" import sys, os, argparse, re diff --git a/.claude/skills/subsystem-validate/scripts/subsystem-validate.ps1 b/.claude/skills/subsystem-validate/scripts/subsystem-validate.ps1 index 5b6bed4f..473d46d7 100644 --- a/.claude/skills/subsystem-validate/scripts/subsystem-validate.ps1 +++ b/.claude/skills/subsystem-validate/scripts/subsystem-validate.ps1 @@ -1,4 +1,4 @@ -# subsystem-validate v1.2 — Validate 1C subsystem XML structure +# subsystem-validate v1.3 — Validate 1C subsystem XML structure (+Report-*: общий эталон вывода валидаторов) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][Alias('Path')][string]$SubsystemPath, @@ -52,12 +52,16 @@ function Report-OK([string]$msg) { $script:okCount++ if ($Detailed) { Out-Line "[OK] $msg" } } -function Report-Error([string]$msg) { +function Report-Error { + param([string]$msg) $script:errors++ Out-Line "[ERROR] $msg" - if ($script:errors -ge $MaxErrors) { $script:stopped = $true } + if ($script:errors -ge $MaxErrors) { + $script:stopped = $true + } } -function Report-Warn([string]$msg) { +function Report-Warn { + param([string]$msg) $script:warnings++ Out-Line "[WARN] $msg" } diff --git a/.claude/skills/subsystem-validate/scripts/subsystem-validate.py b/.claude/skills/subsystem-validate/scripts/subsystem-validate.py index 6343d663..1e32214e 100644 --- a/.claude/skills/subsystem-validate/scripts/subsystem-validate.py +++ b/.claude/skills/subsystem-validate/scripts/subsystem-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# subsystem-validate v1.2 — Validate 1C subsystem XML structure +# subsystem-validate v1.3 — Validate 1C subsystem XML structure (+Report-*: общий эталон вывода валидаторов) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Validates subsystem XML file structure, properties, content items, child objects.""" import sys, os, argparse, re diff --git a/.claude/skills/xdto-validate/scripts/xdto-validate.ps1 b/.claude/skills/xdto-validate/scripts/xdto-validate.ps1 index 8d4ba159..ea519b0d 100644 --- a/.claude/skills/xdto-validate/scripts/xdto-validate.ps1 +++ b/.claude/skills/xdto-validate/scripts/xdto-validate.ps1 @@ -1,4 +1,4 @@ -# xdto-validate v1.1 — Validate a 1C XDTO package +# xdto-validate v1.2 — Validate a 1C XDTO package (+Report-*: общий эталон вывода валидаторов) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -47,12 +47,16 @@ function Report-OK([string]$msg) { $script:okCount++ if ($Detailed) { Out-Line "[OK] $msg" } } -function Report-Error([string]$msg) { +function Report-Error { + param([string]$msg) $script:errors++ Out-Line "[ERROR] $msg" - if ($script:errors -ge $MaxErrors) { $script:stopped = $true } + if ($script:errors -ge $MaxErrors) { + $script:stopped = $true + } } -function Report-Warn([string]$msg) { +function Report-Warn { + param([string]$msg) $script:warnings++ Out-Line "[WARN] $msg" } diff --git a/.claude/skills/xdto-validate/scripts/xdto-validate.py b/.claude/skills/xdto-validate/scripts/xdto-validate.py index 880feef7..9f5654c5 100644 --- a/.claude/skills/xdto-validate/scripts/xdto-validate.py +++ b/.claude/skills/xdto-validate/scripts/xdto-validate.py @@ -1,4 +1,4 @@ -# xdto-validate v1.1 — Validate a 1C XDTO package (Python port) +# xdto-validate v1.2 — Validate a 1C XDTO package (Python port) (+Report-*: общий эталон вывода валидаторов) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import os diff --git a/tests/skills/check-inline-drift.mjs b/tests/skills/check-inline-drift.mjs index 17660a6b..ecc8a9c8 100644 --- a/tests/skills/check-inline-drift.mjs +++ b/tests/skills/check-inline-drift.mjs @@ -111,6 +111,40 @@ const FAMILIES = [ ], }, + // ─── Отчёт валидаторов ─────────────────────────────────────────────────── + // Два варианта по способу вывода: буферизованный Out-Line копит отчёт в $script:output, что даёт + // -OutFile (та же выдача в файл) и вставку заголовка в начало; потоковый Write-Host этого не умеет. + // Для модели-потребителя stdout одинаков: на успешном прогоне обе ветки дают одну строку. + { + name: 'validate: report_error', py: null, ps1: 'Report-Error', + variants: [ + { id: 'buffered', authority: 'cf-validate', + consumers: ['cfe-validate', 'epf-validate', 'interface-validate', 'meta-validate', + 'role-validate', 'skd-validate', 'subsystem-validate', 'xdto-validate'] }, + { id: 'streamed', authority: 'form-validate', consumers: ['mxl-validate'], + why: 'потоковый вывод вместо буферизованного — эти навыки не поддерживают -OutFile' }, + ], + }, + { + name: 'validate: report_warn', py: null, ps1: 'Report-Warn', + variants: [ + { id: 'buffered', authority: 'cf-validate', + consumers: ['cfe-validate', 'epf-validate', 'interface-validate', 'meta-validate', + 'role-validate', 'skd-validate', 'subsystem-validate', 'xdto-validate'] }, + { id: 'streamed', authority: 'form-validate', consumers: ['mxl-validate'], + why: 'потоковый вывод вместо буферизованного — эти навыки не поддерживают -OutFile' }, + ], + }, + { + name: 'validate: report_ok', py: null, ps1: 'Report-OK', + variants: [ + { id: 'buffered', authority: 'cf-validate', + consumers: ['cfe-validate', 'epf-validate', 'meta-validate', 'role-validate', 'skd-validate'] }, + { id: 'streamed', authority: 'form-validate', consumers: ['mxl-validate'], + why: 'потоковый вывод вместо буферизованного — эти навыки не поддерживают -OutFile' }, + ], + }, + // ─── Прощающий ввод: разбор строки типа ────────────────────────────────── { name: 'resolve_type_str', py: 'resolve_type_str', ps1: 'Resolve-TypeStr', @@ -229,9 +263,6 @@ const FAMILIES = [ const DRIFTED = [ { name: 'emit_mltext', py: 'emit_mltext', ps1: 'Emit-MLText', maxVariants: { py: 5, ps1: 5 } }, { name: 'get_ml_text', py: 'get_ml_text', ps1: 'Get-MLText', maxVariants: { py: 7, ps1: 6 } }, - { name: 'validate: report_error', py: null, ps1: 'Report-Error', maxVariants: { ps1: 3 } }, - { name: 'validate: report_warn', py: null, ps1: 'Report-Warn', maxVariants: { ps1: 3 } }, - { name: 'validate: report_ok', py: null, ps1: 'Report-OK', maxVariants: { ps1: 3 } }, { name: 'import_fragment', py: 'import_fragment', ps1: 'Import-Fragment', maxVariants: { py: 5, ps1: 4 } }, { name: 'get_child_indent', py: 'get_child_indent', ps1: 'Get-ChildIndent', maxVariants: { py: 4, ps1: 3 } }, { name: 'write_xml_file', py: 'write_xml_file', ps1: null, maxVariants: { py: 3 } },