doc-polish

star 0

Spustí filing pipeline OD PROSTŘEDKA — re-run analýz jen na problémech z předchozího kola + kompletní test suite (přílohy, datumy, §, počty dní, čitelnost, render, OCR, judge sim, compliance, red team) + lock release do TIME_CAPSULE. Trigger: 'polish', 'doc-polish', 'run from middle', 'nova verze hotova', 'zkontroluj novou verzi', 'serie testu', 'pre-ship check', 'lock release'.

LG13-21 By LG13-21 schedule Updated 5/30/2026

name: doc-polish description: "Spustí filing pipeline OD PROSTŘEDKA — re-run analýz jen na problémech z předchozího kola + kompletní test suite (přílohy, datumy, §, počty dní, čitelnost, render, OCR, judge sim, compliance, red team) + lock release do TIME_CAPSULE. Trigger: 'polish', 'doc-polish', 'run from middle', 'nova verze hotova', 'zkontroluj novou verzi', 'serie testu', 'pre-ship check', 'lock release'." version: 1.1.0 status: stable user-invocable: true

/doc-polish — Mid-pipeline polish loop

CO DĚLÁ

Filing pipeline od prostředka. Máme hotový dokument (prošel Phase 1 nebo předchozím kolem). Teď: targeted re-run + full test suite + lock release.

NE od nuly. Phase 1 (Build) se neopakuje. ANO: nové kolo verify + specifické checks + render + lock.


QUICK RUN

# Targeted (jen problémy z prev kola)
python L:/GitHub/legal-ship-2026/scripts/doc_polish.py --file <doc.md>

# Full scope
python L:/GitHub/legal-ship-2026/scripts/doc_polish.py --file <doc.md> --scope full

# S lock release do TIME_CAPSULE
python L:/GitHub/legal-ship-2026/scripts/doc_polish.py --file <doc.md> --release-lock

# S CHANGELOG z předchozího kola (pro targeted scope)
python L:/GitHub/legal-ship-2026/scripts/doc_polish.py \
  --file <doc.md> \
  --prev-changelog CHANGELOG_polish_<TS>.txt

Backing script: L:/GitHub/legal-ship-2026/scripts/doc_polish.py Volá: filing_pipeline.py (attachments/fact-check/law-check/admin-check) + petit_finder.py + capsule_manager.py


VSTUPY

/doc-polish <doc.md>                         — cílový dokument
/doc-polish <doc.md> --prev-changelog <log>  — CHANGELOG z předchozího kola
/doc-polish <doc.md> --scope targeted        — jen problémy z prev kola (default)
/doc-polish <doc.md> --scope full            — plný rerun všech checks
/doc-polish <doc.md> --release-lock          — na konci zapsat lock do TIME_CAPSULE

Pokud Tom nezadá vstupy → ptát se: "Který soubor? Mám CHANGELOG z předchozího kola?"


FÁZE 0 — CONTEXT LOAD (povinné, <30s)

# 1. Načti dokument
doc = Path(DOC_PATH).read_text(encoding="utf-8")

# 2. Načti CHANGELOG z předchozího kola (pokud existuje)
changelog_path = PREV_CHANGELOG or find_latest_changelog(DOC_PATH)
prev_issues = parse_changelog_problems(changelog_path)  # CRITICAL + WARNING items

# 3. Zobraz scope
if prev_issues:
    print(f"Targeted scope: {len(prev_issues)} problémů z předchozího kola")
    for i in prev_issues:
        print(f"  [{i.severity}] {i.description}")
else:
    print("Žádný CHANGELOG → full scope")
    scope = "full"

FÁZE 1 — TARGETED RE-RUN (~2 min)

Opakuj POUZE kontroly relevantní pro problémy z prev kola. Pokud prev kolo nenašlo § problémy → § check přeskoč.

prev CRITICAL §465a → spustit legal check
prev CRITICAL datum → spustit validation check
prev WARNING délka → spustit readability check

Každý check: najde → opraví → zapíše do CHANGELOG.


FÁZE 2 — SPECIFIC CHECKS (série, povinné vždy)

2.1 Přílohy — kompletnost

# Každá příloha zmíněná v textu = soubor na disku (a naopak)
# Formát: P01, P02, K00, K01 ...
referenced = re.findall(r'\b(P\d{2}|K\d{2})\b', doc)
on_disk = list_attachments(doc_dir)
missing = set(referenced) - set(on_disk)
extra = set(on_disk) - set(referenced)
# CRITICAL pokud missing; WARNING pokud extra

Navíc: správné pořadí (P01 < P02 < ... bez mezer), soubory neprázdné, PDF readable.

2.2 Datumy — konzistence

# Najdi všechny datumy v dokumentu
dates = re.findall(r'\d{1,2}\.\s*\d{1,2}\.\s*\d{4}', doc)
# Kontrola:
# - žádná budoucí data pro minulé události
# - žádné relativní ("dnes", "včera", "minulý týden")
# - konzistence (stejná událost = stejné datum všude)
# - OSPOD pohovor = 1. 4. 2026, incident = 29. 1. 2026, atd.

2.3 § — validita a konzistence

DEPRECATED = {"§ 452": "→ použít § 465j", "§ 76 OSŘ": "→ § 465j ZŘS"}
REQUIRED_FOR_PR = ["§ 909", "§ 858", "§ 888"]
# Kontrola deprecated §
# Kontrola povinných § pro typ podání (PR/PO/MER)
# §869 odst. 1 vs odst. 2 (neplést!)
# Novela z. 268/2025 Sb. — §465a-j

2.4 Počty dní

# Výpočty: 29.1.2026 → dnes = X dní
# Všechny "X dní" v textu ověřit výpočtem
# "120 dní" vs. "126 dní" vs. aktuální počet
# Fallback lhůty (7 dní, 3 dny, 14 dní) — jsou splnitelné?
from datetime import date
incident = date(2026, 1, 29)
today = date.today()
days = (today - incident).days
# Najdi všechna "N dní" v doc a porovnej s výpočtem

2.5 Počty elementů (slim structure)

# Max 2-3 MAIN argumenty, zbytek = COMPLEMENTARY nebo příloha
# Hledej sekce: Nové skutečnosti, Právní argumentace, Důkazní návrhy
# Každá sekce: max 3 hlavní body
# Ostatní → přesunout do přílohy nebo sloučit
# VÝROK struktura: max 3 výroky (I, II, III) + fallback

2.6 Stručnost + přesun do příloh

# Věty delší než 3 řádky → kandidát na zkrácení
# Odstavce delší než 8 řádků → kandidát na přesun do přílohy
# Opakující se argumenty → sloučit
# Emocionální slova → nahradit fakty
SUBJECTIVE = ["cítím", "věřím", "myslím", "jsem přesvědčen", "bohužel", "tragicky"]
EMOTIONAL = ["šokující", "kruté", "nepřijatelné", "záměrně", "záludně"]
# CRITICAL: emocionální slova o protistraně

2.7 Čitelnost — 3-Second Scan Test

Soudce skenuje 3 vteřiny:
- Vidí VÝROK / petit jasně? (musí být v prvních 3 odstavcích nebo v sekci PETIT)
- Vidí sp.zn. a datum? (záhlaví)
- Vidí klíčový argument? (bold nebo tučně)

2.8 Nadbytečné a duplicitní části

# Najdi odstavce s podobným obsahem (fuzzy match >80%)
# Najdi opakující se fráze (3+ výskyty stejné věty)
# Najdi sekce bez obsahu (jen nadpis, žádný text)
# Záhlaví: jen jednou na začátku
# Podpis: jen jednou na konci

FÁZE 3 — RENDER + AUTOMATICKÉ TESTY

3.1 Render

python F18/renderer/render.py <doc.md> --output <doc_polished.pdf>

Kontrola: PDF neprázdný, stránky ≥ 2, text selectable (ne obrázek).

3.2 OCR sanity

# Porovnej MD zdroj vs. PDF OCR výstup
# Žádné rozbité znaky (č→c, š→s, ě→e)
# Správná diakritika

3.3 Fast Read (soudce má 90 vteřin)

Přečti celý dokument jako soudce pod časovým tlakem:
- Je jasné CO žádáme? (petit/výrok)
- Je jasné PROČ? (klíčový argument — max 1 věta)
- Je jasné KDY? (datum/lhůta)
- Nic matoucího nebo zavádějícího v prvních 2 stranách?

3.4 Judge Simulation

Viz filing-pipeline 2.1-2.5 — ale rychle, jen kritické:

  • Validation: data, sp.zn., jména ✓
  • Compliance: child-first, žádné útoky ✓
  • Opposition: hlavní argument obstojí? ✓
  • Security: žádné interní markery ✓
  • Legal: § správné ✓

3.5 Judge Fatigue Check

Soudce číst 50+ podání denně. Je naše podání:
- Kratší než 8 stran? (ideál: 4-6)
- Bez zbytečných opakování?
- Petit na začátku nebo jasně označený?
- Font ≥ 12, řádkování ≥ 1.2?
- Odstavce ≤ 6 řádků?

3.6 Compliance Quick Check

python scripts/legal_compliance_check.py --file <doc.md> --quick
# Score ≥ 85 → PASS
# Score < 85 → FAIL (vypsat problémy)

3.7 Red Team

Mysli jako Mgr. Flaška (advokát protistrany):
- Co napadneš jako první?
- Jaký argument obrátíš?
- Co chybí co by slabinu zakrylo?
Top 3 útoky → mají odpovědi v dokumentu?

3.8 Total Analysis (petit check)

# Spustí petit_finder.py na aktuální doc
python scripts/petit_finder.py --single <doc.md> --output petit_check/
# Výstup: enforcement_score per výrok, issues list
# PASS: všechny výroky ≥ 80
# FAIL: výrok < 80 → vypsat problém

FÁZE 4 — VERDICT

# Agreguje všechna findings ze Fáze 1-3
criticals = [f for f in all_findings if f.severity == "CRITICAL"]
warnings = [f for f in all_findings if f.severity == "WARNING"]

if criticals:
    verdict = "NO_GO"
elif warnings > 3:
    verdict = "CONDITIONAL_GO"
else:
    verdict = "GO"

# Zapíše CHANGELOG entry
# Vytvoří polish_report.md

FÁZE 5 — LOCK RELEASE (pokud --release-lock nebo verdict=GO)

from scripts.capsule_manager import CapsuleManager

capsule = CapsuleManager()
capsule.write_lock(
    instance="legal",          # nebo strat/coder
    status="READY" if verdict == "GO" else "PENDING",
    doc=DOC_PATH,
    checks_passed=[...],
    warnings=[w.description for w in warnings],
    blockers=[c.description for c in criticals],
)

# Kontrola: jsou všechny locks uvolněny?
if capsule.all_locks_ready():
    print("✅ VŠECHNY LOCKS UVOLNĚNY")
    print(f"TIME_CAPSULE: {capsule.capsule_path}")
    print("Tom může spustit CHECK_CAPSULE_LOCKS.bat")
else:
    pending = capsule.pending_locks()
    print(f"⏳ Čeká: {pending}")

VÝSTUPY

<doc_dir>/
├── <doc>_polished_<TS>.pdf    ← finální PDF
├── CHANGELOG_polish_<TS>.txt  ← co bylo nalezeno a opraveno
├── polish_report_<TS>.md      ← executive summary (GO/NO-GO + top issues)
└── petit_check/               ← petit_finder výstup

TIME_CAPSULE_ISDS_READY/
├── LOCKS/
│   └── lock_<instance>.json   ← tento instance lock
└── (ostatní locks od jiných instancí)

PRAVIDLA

  • Opravuj přímo v dokumentu (ne "doporučuji") nebo napiš WARNING
  • Max 2 průchody per problém (viz filing-pipeline)
  • NIKDY nepřepisuj celý dokument kvůli 1 chybě
  • CHANGELOG: každá změna musí mít záznam
  • Render: vždy před lock release
  • STOP #1452: lock release ≠ odeslání; odeslání výhradně Tom přes BAT

RELATED

  • filing-pipeline — celá pipeline od nuly (Phase 1+2+3)
  • legal-total-analysis — full pre-flight audit (9 kroků)
  • capsule_manager.py — TIME_CAPSULE lock management
  • CHECK_CAPSULE_LOCKS.bat — Tom spouští pro finální check + ISDS
Install via CLI
npx skills add https://github.com/LG13-21/lg13-skills --skill doc-polish
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator