33 lines
2.7 KiB
Bash
33 lines
2.7 KiB
Bash
# /harness-retro: проектный skill, шаблон, метрики 11.10, удалённые скрипты (#29).
|
||
S="$ROOT/.claude/skills/harness-retro"
|
||
assert_file "SKILL.md" "$S/SKILL.md"
|
||
assert_grep "SKILL.md: name" '^name: harness-retro$' "$S/SKILL.md"
|
||
for step in 'retro_metrics\.py' 'hook_blocks_export\.py' 'hook_cases_build\.py' 'retro_leftovers\.py' '--corrections' 'EnterWorktree' 'tea pulls create'; do
|
||
assert_grep "SKILL.md упоминает $step" "$step" "$S/SKILL.md"
|
||
done
|
||
assert_file "template.md" "$S/template.md"
|
||
for sec in "## 1. Цифры" "## 2. Находки" "## 3. Поправки владельца" "## 4. Что сработало" "## 5. Бэклог" "## 6. Решения владельца" "## 7. Что не измерялось"; do
|
||
assert_grep "шаблон: $sec" "^$sec" "$S/template.md"
|
||
done
|
||
J="$ROOT/docs/retro/2026-10-11.metrics.json"
|
||
assert_eq "метрики 11.10: схема, cd снят, ложные" "$(python3 -c 'import json,sys; d=json.load(open(sys.argv[1])); m=d["metrics"]; print(d["schema"], "retired" in m["cd_main"], m["false_blocks"]["false"], m["hook_blocks"])' "$J")" "1 True 72 76"
|
||
out=$(python3 - "$ROOT/docs/retro/scripts" "$J" <<'PY'
|
||
import json, sys
|
||
sys.path.insert(0, sys.argv[1])
|
||
import retro_metrics
|
||
prev = json.load(open(sys.argv[2]))
|
||
doc = {"metrics": {"sessions": 3, "turns": 7, "hook_blocks": 1}, "period": {"since": "2026-10-11", "until": "2026-10-24"},
|
||
"sources": {"sessions": 3, "dirs": [], "bad_lines": 0}}
|
||
print(retro_metrics.to_markdown(doc, prev))
|
||
PY
|
||
)
|
||
assert_grep "сравнение с 11.10: сессии" '^\| Сессий \| 3 \| 44 \| -41 \|$' <(printf '%s' "$out")
|
||
assert_grep "сравнение с 11.10: блокировки" '^\| Блокировок хуков \| 1 \| 76 \| -75 \|$' <(printf '%s' "$out")
|
||
assert_grep "сравнение с 11.10: cd снят" '^\| cd в основной checkout на main \| — \| — \| не считается' <(printf '%s' "$out")
|
||
assert_grep "сравнение с 11.10: ходы считались по строкам" '^\| Ходов модели \| 7 \| 12 121 \(по строкам' <(printf '%s' "$out")
|
||
assert_eq "retro_stats.py удалён" "$([ -e "$ROOT/docs/retro/scripts/retro_stats.py" ] && echo есть || echo нет)" "нет"
|
||
assert_eq "retro_blocks.py удалён" "$([ -e "$ROOT/docs/retro/scripts/retro_blocks.py" ] && echo есть || echo нет)" "нет"
|
||
assert_eq "CLAUDE.md без ссылок на удалённые скрипты" "$(grep -c 'retro_stats\|retro_blocks' "$ROOT/CLAUDE.md")" "0"
|
||
assert_grep "CLAUDE.md: retro_metrics в командах" 'retro_metrics\.py' "$ROOT/CLAUDE.md"
|
||
assert_grep "HARNESS.md: раздел Ретро" '^## Ретро' "$ROOT/docs/HARNESS.md"
|