Prerekvizity

Nástroje

NástrojMinimální verzeOvěření
Python3.10+python --version
PyYAMLlibovolnápip install pyyaml
GitHub CLI (gh)2.40+gh --version
Git2.30+git --version

GitHub CLI scopes

gh auth login
gh auth refresh -s repo,project,read:project,admin:org

Ověření:

gh auth status
# Musí ukazovat scopes: repo, project, admin:org

Organizace a tým

Před začátkem je třeba mít:

  • GitHub organizaci (např. my-org)
  • Definovaný tým: jména, role (Arch, Dev, DevSecOps, PM, QA, BO), FTE, kapacity
  • Alespoň základní backlog (1 Epic, 2-3 Features, 5-10 Stories)

Role v EDPA

RolePopisTypické evidence v Gitu
BOBusiness OwnerIssue komentáře, validace
PMProduct Manager / Product OwnerBacklog management, specifikace
ArchArchitektCode review, design decisions
DevVývojářCommity, PR, assignee
DevSecOpsDevSecOps EngineerCI/CD, security, infra commity
QATest EngineerTestovací commity, review

Fáze 1: Infrastruktura (Den 1, ~4 hodiny)

Cesta A: Claude Code (doporučeno)

V terminálu s Claude Code nainstalovaným:

/edpa setup

Claude Code provede kroky 1.1-1.6 automaticky — vytvoří repo, nakonfiguruje tým, nastaví Issue Types a vytvoří GitHub Project.

Cesta B: Manuální CLI

Následující kroky popisují manuální postup bez Claude Code.

1.1 Nainstalovat EDPA plugin

Varianta A: Shell installer (doporučeno)

cd my-project
curl -fsSL https://edpa.technomaton.com/install.sh | sh

Varianta B: Manuální kopie

cd my-project
gh repo clone technomaton/edpa /tmp/edpa
cp -r /tmp/edpa/plugin/ .claude/
rm -rf /tmp/edpa

Výsledná struktura:

my-project/
  .edpa/
    config.yaml          # Hlavní konfigurace
    people.yaml          # Tým a projekt
    initiatives/         # 1 soubor = 1 initiative
    epics/               # 1 soubor = 1 epic
    features/            # 1 soubor = 1 feature
    stories/             # 1 soubor = 1 story
    changelog.jsonl      # Changelog syncu
    sync_state.json      # Stav poslední synchronizace
    iterations/          # Plány a výsledky iterací
  .github/workflows/
    branch-check.yml     # CI: kontrola branch naming
    iteration-close.yml  # CI: uzavření iterace (workflow_dispatch)
    sync-projects-to-git.yml   # Cron: Projects -> Git (15 min)
    sync-git-to-projects.yml   # Push trigger: Git -> Projects
  .claude/edpa/templates/
    people.yaml.tmpl   # Šablona kapacitního registru
    cw_heuristics.yaml.tmpl    # Šablona CW heuristik
    project.yaml.tmpl    # Šablona projektové konfigurace
  .claude/edpa/scripts/
    engine.py       # EDPA výpočetní jádro
    backlog.py      # Správa backlogu (tree, show, wsjf, validate)
    sync.py         # Bidirekční sync GitHub Projects <-> Git
    issue_types.py  # Správa Issue Types na org úrovni
    project_setup.py      # Automatické vytvoření GitHub Projectu
    project_views.py      # Views setup
    create_project_views.py    # Playwright automatizace views (volitelné)
    evaluate_cw.py       # CW kalibrace (MAD evaluator)
  .edpa/data/              # Ground truth data (po PI)
  .edpa/reports/           # Generované reporty per iterace
  .edpa/snapshots/         # Zmrazené snapshoty iterací
  docs/                  # Dokumentace

1.2 Nakonfigurovat tým (people.yaml)

# /edpa setup generates .edpa/config/people.yaml automatically

Upravit .edpa/config/people.yaml:

cadence:
  iteration_weeks: 2                    # 1 (AI-native) nebo 2 (classic)
  pi_weeks: 10                          # 5 nebo 10
  delivery_iterations_per_pi: 4         # PI minus IP iterace
  ip_iterations_per_pi: 1              # Innovation & Planning

teams:
  - id: "Muj Tym"
    planning_factor: 0.8               # Plánujeme na 80% kapacity

people:
  - id: alice
    name: "Alice Nováková"
    role: Arch                          # Arch, Dev, DevSecOps, PM, QA, BO
    team: "Muj Tym"
    fte: 0.5
    capacity_per_iteration: 40          # hodiny (FTE x 80 pro 2-týdenní iter.)
    email: "alice@example.com"
    availability: confirmed

  - id: bob
    name: "Bob Svoboda"
    role: Dev
    team: "Muj Tym"
    fte: 1.0
    capacity_per_iteration: 80
    email: "bob@example.com"
    availability: confirmed
Důležité: planning_factor je plánovací heuristika (plánujeme na 80%). EDPA engine počítá vždy se 100% kapacity — buffer absorbuje neplánované práce.

1.3 Nakonfigurovat projekt (project.yaml)

# /edpa setup generates .edpa/config/project.yaml automatically

Upravit .edpa/config/project.yaml:

project:
  name: "Muj Projekt"
  registration: ""
  program: ""
  organizations:
    - name: "Moje Organizace"
  domain: "mujprojekt.cz"

governance:
  methodology: "EDPA v1.4.0-beta"
  calculation_mode: "simple"            # simple (JS x CW) nebo full (JS x CW x RS)
  audit_mode: "full"

naming:
  pi_pattern: "PI-{year}-{pi_num}"
  iteration_pattern: "PI-{year}-{pi_num}.{iter_num}"
  branch_pattern: "{type}/{item_id}-{description}"
  item_prefixes:
    initiative: "I"
    epic: "E"
    feature: "F"
    story: "S"
    task: "T"
    defect: "D"

1.4 Nakonfigurovat CW heuristiky

# /edpa setup generates .edpa/config/heuristics.yaml automatically

Výchozí hodnoty jsou kalibrované Monte Carlo simulací (1000 scénářů, 66 362 záznamů, p<0.001). Pro začátek stačí bez úprav.

Evidence roleCW váha
owner (assignee)1.00
key (PR author)0.60
reviewer (commit/PR review)0.25
consulted (komentář)0.15

Role-specifické korekce (strategické role jsou Gitem podhodnoceny):

RoleKorekceDůvod
BO consulted0.30 (+0.15)Rozhodování neviditelné v Gitu
PM consulted0.20 (+0.05)Specifikace neviditelná v Gitu
Arch reviewer0.30 (+0.05)Design review neviditelný

1.5 Nakonfigurovat .edpa/config/edpa.yaml

pi:
  current: PI-2026-1
  year: 2026
  num: 1
  iteration_weeks: 2
  pi_weeks: 10
  iterations:
    - id: PI-2026-1.1
      dates: "1.4.–14.4.2026"
      status: planned
    - id: PI-2026-1.2
      dates: "15.4.–28.4.2026"
      status: planned
    - id: PI-2026-1.3
      dates: "29.4.–12.5.2026"
      status: planned
    - id: PI-2026-1.4
      dates: "13.5.–26.5.2026"
      status: planned
    - id: PI-2026-1.5
      dates: "27.5.–9.6.2026"
      status: planned
      type: IP  # Innovation & Planning

sync:
  github_org: "my-org"
  github_project_number: 1
  sync_interval: "15m"
  auto_commit: true

1.6 Nastavit Issue Types na organizaci

Claude Code (doporučeno):

/edpa setup

Issue Types se vytvoří automaticky jako součást setupu.

Manuální CLI:

# Zobrazit aktuální typy
python3 .claude/edpa/scripts/issue_types.py list --org my-org

# Vytvořit EDPA sadu Issue Types
python3 .claude/edpa/scripts/issue_types.py setup --org my-org

# Dry-run (jen ukáže co by se stalo)
python3 .claude/edpa/scripts/issue_types.py setup --org my-org --dry-run

EDPA vytvoří tyto Issue Types:

TypBarvaPopis
InitiativePINKBusiness case, investiční záměr
EpicPURPLEStrategický cíl, 6-9 měsíců
FeatureBLUEMusí se vejít do Planning Intervalu
StoryGREENDodáváno v iteraci
DefectREDDefekt v existující funkcionalitě
TaskYELLOWTechnická práce
Poznámka: Enabler je label (Business vs Enabler klasifikace, SAFe), ne Issue Type.

1.7 Naplnit backlog

EDPA používá file-per-item strukturu — každý work item je samostatný YAML soubor:

.edpa/
  people.yaml
  config.yaml
  initiatives/
    I-1.yaml         # 1 soubor = 1 initiative
  epics/
    E-1.yaml         # 1 soubor = 1 epic
  features/
    F-1.yaml         # 1 soubor = 1 feature
  stories/
    S-1.yaml         # 1 soubor = 1 story
  iterations/
    PI-2026-1.1.yaml # plán iterace

Příklad story souboru (.edpa/backlog/stories/S-1.yaml):

id: S-1
type: Story
title: "Implementace parseru"
status: Backlog
parent: F-1
js: 5
assignee: dev1
iteration: PI-2026-1.1

Přidání nového itemu:

# Claude Code:
/edpa setup    # interaktivně přidá items

# CLI:
python3 .claude/edpa/scripts/backlog.py add --type Story --parent F-1 --title "..." --js 5 --assignee dev1
python3 .claude/edpa/scripts/backlog.py add --type Epic --title "..." --js 13 --bv 13 --tc 8 --rr 5

Ověřit integritu:

python3 .claude/edpa/scripts/backlog.py validate

Zobrazit hierarchii:

python3 .claude/edpa/scripts/backlog.py tree
python3 .claude/edpa/scripts/backlog.py tree --level epic

Zobrazit WSJF prioritizaci:

python3 .claude/edpa/scripts/backlog.py wsjf
python3 .claude/edpa/scripts/backlog.py wsjf --level feature

1.8 Vytvořit GitHub Project

Claude Code (doporučeno):

/edpa setup

GitHub Project se vytvoří automaticky jako součást setupu.

Manuální CLI:

python3 .claude/edpa/scripts/project_setup.py \
  --org my-org \
  --repo my-project \
  --project-title "EDPA -- Muj Projekt"

The script performs 9 steps:

  1. Creates labels (Enabler)
  2. Creates GitHub Project v2 at org level
  3. Creates custom fields: Job Size, BV, TC, RR, WSJF Score, Team + 4 Status fields (Initiative/Epic/Feature/Story Status with SAFe workflows)
  4. Links project to repository
  5. Queries native Issue Types from organization
  6. Creates issues from item files in .edpa/ with native Issue Types
  7. Sets field values on all project items
  8. Links sub-issues (parent-child hierarchy Initiative→Epic→Feature→Story)
  9. Updates .edpa/config/edpa.yaml with project number

1.9 Nastavit Project views

Claude Code (doporučeno):

/edpa setup

Views se nastaví automaticky jako součást setupu.

Manuální CLI:

Cesta A: Manuální setup s instrukcemi

python3 .claude/edpa/scripts/project_views.py instructions --org my-org --project 1
ViewTypeFilter/Sort
All ItemsTableAll items, sorted by WSJF
BoardBoardFunnel / Analyzing / Backlog / Implementing / Done
EpicsTabletype:Epic, sorted by WSJF
FeaturesTabletype:Feature, sorted by WSJF
WSJF RankingTableGrouped by Issue Type, sorted by WSJF
Current IterationBoardFiltered by current iteration, daily standup view
My WorkTableassignee:@me, personal overview
RoadmapRoadmapTimeline by Planning Interval

Cesta B: Označit jako šablonu

python3 .claude/edpa/scripts/project_views.py template --org my-org --project 1

Cesta C: Vytvořit z šablony

python3 .claude/edpa/scripts/project_views.py create-from-template \
  --org my-org --template 1 --title "Novy Projekt"

Ověření:

python3 .claude/edpa/scripts/project_views.py verify --org my-org --project 1

1.10 Configure Automations and Status Fields

Status fields (4 typed):

project_setup.py automatically creates 4 status fields on GitHub Projects — one per work-item level:

FieldApplies toWorkflow
Initiative StatusInitiativeFunnel → Reviewing → Analyzing → Ready → Implementing → Done
Epic StatusEpicFunnel → Reviewing → Analyzing → Ready → Implementing → Done
Feature StatusFeatureFunnel → Analyzing → Backlog → Implementing → Validating → Deploying → Releasing → Done
Story StatusStoryFunnel → Analyzing → Backlog → Implementing → Validating → Deploying → Releasing → Done

Engine logic: status == "Done" = finished. Everything else = in-work. No Blocked/Spillover labels.

GitHub Projects Automations — what to enable:

AutomationRecommendationReason
Item added to project → Set status "Funnel"EnableNew issues get a default status
Auto-add issues from linked repoEnableIssues from repo automatically in project
PR merged → Set status "Done"Do not enablePremature — item may still need QA
Item closed → Auto-archiveNEVERArchived items disappear from API → sync.py loses them → EDPA engine loses data
Item reopened → Set status "Implementing"Do not enableConflicts with sync — reopened item may need different status

Configure: project → ... menu → Workflows → enable only recommended ones.

Granularity guardrails:

  • Story: max Job Size 8 (classic 2/10) or 5 (AI-native 1/5)
  • Feature: max Job Size 13
  • Epic: max Job Size 20
  • Over limit → break down into smaller items

Definition of Ready — no item enters delivery without:

  • Issue Type set
  • Parent issue linked (sub-issue)
  • Job Size estimated
  • BV + TC + RR filled
  • Primary Owner assigned
  • Iteration or Planning Interval assigned

Recommended Insights charts (project → Insights tab → New chart):

  • Burn-down — X: time, Y: item count, Group: Status
  • Items by Status — bar chart
  • Items by Team — workload distribution
  • Items by Issue Type — hierarchy balance

Insights = real-time dashboards. EDPA engine = governance-grade calculations (derived hours, CW). They complement each other.

1.11 Verify Setup

Claude Code (doporučeno):

/edpa close-iteration    # demo run (bez reálných dat)
/edpa sync status        # ověřit sync

Manuální CLI:

# Demo EDPA engine (bez reálných dat)
python3 .claude/edpa/scripts/engine.py --demo

# Validace backlogu
python3 .claude/edpa/scripts/backlog.py validate

# Status projektu
python3 .claude/edpa/scripts/backlog.py status

# Sync status
python3 .claude/edpa/scripts/sync.py status

1.12 Commit Initial Configuration

git add .edpa/config/people.yaml .edpa/config/project.yaml .edpa/config/heuristics.yaml
git add .edpa/
git commit -m "feat(edpa): initial EDPA setup for my-project"
git push origin main

Fáze 2: První iterace (Týden 1-2)

2.1 Iteration Planning

  1. Potvrzení kapacity — tým potvrdí dostupnost na iteraci
  2. Výběr stories — z backlogu dle WSJF pořadí, na 80% kapacity
# WSJF ranking features
python3 .claude/edpa/scripts/backlog.py wsjf --level feature

# Tree pro konkrétní iteraci
python3 .claude/edpa/scripts/backlog.py tree --iteration PI-2026-1.1
  1. Přiřazení assignees — každá story musí mít assignee
  2. Aktualizace backloguiteration: PI-2026-1.1 na vybraných stories

2.2 Denní práce

Branch naming konvence (CI kontrola v .github/workflows/branch-check.yml):

# Formát: {type}/{ITEM_ID}-{popis}
git checkout -b feature/S-200-omop-parser
git checkout -b feature/F-102-anon-engine
git checkout -b defect/D-215-upload-validation
git checkout -b chore/T-050-ci-pipeline

Povolené typy: feature, defect, hotfix, chore

Commit konvence:

git commit -m "feat(S-200): implement OMOP CDM parser"
git commit -m "fix(S-215): validate upload file size"
git commit -m "test(S-201): add unit tests for parser"
git commit -m "docs(E-10): update epic hypothesis"

EDPA engine rozpoznává reference S-XXX, F-XXX, E-XXX v commitech a PR pro detekci evidence.

Pull Request workflow:

git push origin feature/S-200-omop-parser
gh pr create --title "S-200: OMOP CDM parser implementation" \
  --body "Closes #42

## Changes
- Implemented OMOP CDM parser
- Added schema validation

## Testing
- Unit tests: 15 passing
"

PR review = evidence pro EDPA (reviewer dostane CW dle role).

2.3 Sync (automaticky)

Bidirekční synchronizace mezi GitHub Projects (UI pro PM/BO) a item files v .edpa/ (Git-native):

Automaticky přes GitHub Actions:

  • sync-projects-to-git.yml — každých 15 minut stahuje změny z Projects do Gitu
  • sync-git-to-projects.yml — při push do main se změnou v .edpa/ propaguje do Projects

Claude Code (doporučeno):

/edpa sync pull      # GitHub Projects → item files in .edpa/
/edpa sync push      # item files in .edpa/ → GitHub Projects
/edpa sync diff      # zobrazit co by se změnilo
/edpa sync status    # stav synchronizace

Manuální CLI:

# Pull: GitHub Projects -> item files in .edpa/
python3 .claude/edpa/scripts/sync.py pull

# Push: item files in .edpa/ -> GitHub Projects
python3 .claude/edpa/scripts/sync.py push

# Diff: zobrazit co by se změnilo
python3 .claude/edpa/scripts/sync.py diff

# Status
python3 .claude/edpa/scripts/sync.py status

2.4 Iteration Close

Na konci každé iterace (po 2 týdnech):

Claude Code (doporučeno):

/edpa close-iteration PI-2026-1.1

Manuální CLI:

python3 .claude/edpa/scripts/engine.py --edpa-root .edpa --iteration PI-2026-1.1

Výstupy:

.edpa/reports/iteration-PI-2026-1.1/
  edpa_results.json      # Kompletní výpočet (JSON)
  vykaz-alice.md         # Výkaz pro každou osobu
  item-costs.xlsx        # Náklady per položka (Excel)
.edpa/snapshots/
  PI-2026-1.1.json       # Zmrazený snapshot

Režim výpočtu:

RežimVzorecPoužití
simpleJS × CWVýchozí — Job Size × Contribution Weight
fullJS × CW × RSS Role Strength — pro přesnější alokaci

Invarianty (engine automaticky kontroluje):

  • Součet hodin osoby = její kapacita (odchylka < 0.01h)
  • Součet poměrů = 1.0 (odchylka < 0.001)
  • Žádné záporné hodiny
  • Pokud invariant selže, engine hlásí FAIL

2.5 Aktualizace iteračního plánu

Po uzavření iterace vytvořit/aktualizovat .edpa/iterations/PI-2026-1.1.yaml:

iteration:
  id: PI-2026-1.1
  pi: PI-2026-1
  dates: "1.4.–14.4.2026"
  status: closed

planning:
  capacity: 380
  planning_factor: 0.80
  planned_sp: 24
  stories:
    - S-200
    - S-201
    - S-202

delivery:
  delivered_sp: 24
  predictability: "100%"
  velocity: 24
  spillover: []
  unplanned: []
  notes: "První iterace -- plný delivery."

Fáze 3: PI Close (Po 4-5 iteracích)

Cesta A: Claude Code (doporučeno)

/edpa calibrate

Claude Code spustí CW kalibraci, vyhodnotí MAD a návrh úprav heuristik.

/edpa reports

Cesta B: Manuální CLI

3.1 Retrospektiva

Na konci PI (po 4 delivery iteracích + 1 IP iterace):

  1. Projít auto-detekci vs. realita na 5-10 stories
  2. Pro každou story porovnat: kdo byl auto-detekován, jaké CW engine přiřadil, odpovídá realitě?

3.2 Zaznamenat ground truth

Vytvořit .edpa/data/ground_truth.yaml:

# Ground truth pro CW kalibraci
records:
  - item_id: S-200
    person_id: alice
    evidence_role: reviewer
    auto_cw: 0.25
    confirmed_cw: 0.35
    person_role: Arch
    notes: "Alice dělala design review + arch. rozhodnutí"

  - item_id: S-200
    person_id: bob
    evidence_role: owner
    auto_cw: 1.00
    confirmed_cw: 1.00
    person_role: Dev
    notes: "Přesně -- Bob byl assignee a udělal všechnu práci"

  # ... alespoň 20 záznamů pro kalibraci

3.3 Kalibrace CW heuristik

Claude Code (doporučeno):

/edpa calibrate

Manuální CLI:

python3 .claude/edpa/scripts/evaluate_cw.py \
  --ground-truth .edpa/data/ground_truth.yaml \
  --heuristics .edpa/config/heuristics.yaml

Výstup:

MAD=0.041200
RECORDS=20
TOTAL_DEVIATION=0.824000

Interpretace MAD (Mean Absolute Deviation):

MADHodnoceníAkce
< 0.03VýbornéBez změny
0.03 - 0.06DobréDrobné korekce (volitelné)
0.06 - 0.10PřijatelnéZvážit úpravu role_overrides
> 0.10ŠpatnéNutná kalibrace

3.4 Plánování dalšího PI

  1. Nové epicy/features — přidat jako soubory do .edpa/backlog/epics/ a .edpa/backlog/features/
  2. WSJF prioritizace: python3 .claude/edpa/scripts/backlog.py wsjf
  3. Kapacitní plánování — aktualizovat .edpa/config/people.yaml
  4. Aktualizovat .edpa/config/edpa.yaml — nový PI, iterace, datumy

Fáze 4: Kontinuální provoz

S Claude Code (doporučeno)

Každá iterace:

/edpa close-iteration PI-2026-1.X    # uzavření iterace
/edpa reports                         # generování reportů

Každý PI:

/edpa calibrate                       # CW kalibrace

Každá iterace (každé 2 týdny)

  1. Planning — vybrat stories, přiřadit assignees
  2. Denní práce — branch naming, commity s referencemi, PR review
  3. Iteration Close — EDPA engine, generování reportů
  4. Sync — automaticky verzuje změny (GitHub Actions cron 15min)
  5. Review — tým zkontroluje výkazy, zahlásí korektury

Každý PI (každých 10 týdnů)

  1. Retrospektiva — auto-detected CW vs realita
  2. Ground truth — zaznamenat alespoň 20 nových záznamů
  3. CW kalibraceevaluate_cw.py, vyhodnotit MAD
  4. Velocity trend — porovnat delivery across iterací
  5. Predictability — (delivered_sp / planned_sp) across iterací

Automatizace přes GitHub Actions

WorkflowTriggerCo dělá
branch-check.ymlPR opened/syncKontroluje branch naming konvenci
iteration-close.ymlworkflow_dispatchSpustí EDPA engine, commitne výsledky
sync-projects-to-git.ymlcron (15min)Pull: Projects → item files
sync-git-to-projects.ymlpush na .edpa/Push: item files → Projects

Checklist — Co mít hotové

Den 1

  • Repo vytvořené s EDPA strukturou
  • .edpa/config/people.yaml — tým s rolemi, FTE, kapacitami
  • .edpa/config/project.yaml — název projektu, metadata
  • .edpa/config/heuristics.yaml — výchozí heuristiky
  • .edpa/config/edpa.yaml — PI, iterace, datumy, sync
  • Issue Types nastavené na organizaci
  • Backlog naplněný (alespoň 1 Epic, 3 Features, 10 Stories)
  • backlog.py validate projde bez chyb
  • GitHub Project vytvořen
  • Project views nastaveny
  • engine.py --demo projde úspěšně

Týden 1

  • Tým pracuje s branch naming konvencí
  • Commity referují work items (feat(S-XXX): ...)
  • PR reviews probíhají
  • Sync funguje (sync.py status)
  • Item files v .edpa/ se automaticky aktualizují

Konec iterace 1

  • EDPA engine spuštěn pro iteraci
  • edpa_results.json vygenerován
  • Výkazy vygenerovány (per-person)
  • Všechny invarianty prošly (all_invariants_passed: true)
  • Tým zkontroloval výsledky
  • Iterační soubor vytvořen v .edpa/iterations/

Konec iterace 2-4

  • Velocity stabilní (odchylka < 20%)
  • Prediktabilita > 80%
  • Žádné nevyřešené sync konflikty

Konec PI 1

  • Ground truth zaznamenáno (min. 20 záznamů)
  • CW kalibrace provedena (evaluate_cw.py)
  • MAD vyhodnoceno (cíl: < 0.06)
  • Heuristiky upraveny (pokud MAD > 0.06)
  • Plánování PI 2 — nové epicy, WSJF, kapacity

CLI Reference

Claude Code příkazy (doporučeno)

PříkazPopis
/edpa setupPočáteční setup projektu — repo, tým, Issue Types, GitHub Project
/edpa close-iteration PI-2026-1.XUzavření iterace — stažení evidence, EDPA engine, reporty
/edpa reportsGenerování reportů a výkazů
/edpa calibrateCW kalibrace — vyhodnocení MAD, návrh úprav heuristik

engine.py — EDPA výpočetní jádro

PříkazPopis
engine.py --edpa-root .edpa --iteration IDPlný EDPA výpočet pro iteraci (čte z .edpa/backlog/)
engine.py --demoDemo s vestavěnými ukázkovými daty
engine.py --iteration ID --capacity ... --heuristics ...Legacy režim s explicitními soubory

backlog.py — Správa backlogu

PříkazPopis
backlog.py treeZobrazí plnou hierarchii (I → E → F → S)
backlog.py tree --level epicJen epicy
backlog.py tree --iteration PI-2026-1.1Filtr stories na iteraci
backlog.py show S-200Detail položky
backlog.py statusCelkový status projektu
backlog.py wsjfWSJF prioritizace (všechny úrovně)
backlog.py validateKontrola integrity backlogu

sync.py — Bidirekční sync

PříkazPopis
sync.py pullGitHub Projects → item files in .edpa/
sync.py pushitem files in .edpa/ → GitHub Projects
sync.py diffZobrazí rozdíly (dry-run)
sync.py statusStav poslední synchronizace
sync.py conflictsNevyřešené konflikty

issue_types.py — Issue Types (org-level)

PříkazPopis
issue_types.py list --org ORGZobrazí aktuální typy
issue_types.py setup --org ORGVytvoří EDPA sadu Issue Types
issue_types.py setup --org ORG --dry-runDry-run setup
issue_types.py migrate --org ORG --repo REPOMigruje labels → Issue Types

project_setup.py — Inicializace GitHub Projectu

PříkazPopis
project_setup.py --org ORG --repo REPOVytvoří kompletní Project
project_setup.py --org ORG --repo REPO --dry-runJen ukáže co by udělal

evaluate_cw.py — CW Kalibrace

PříkazPopis
evaluate_cw.py --ground-truth .edpa/data/ground_truth.yaml --heuristics .edpa/config/heuristics.yamlSpočítá MAD

Architektura

GitHub Projects (UI)  <-->  .edpa/ item files (Git)
       |                          |
  PM/BO pracují            Verzované, auditovatelné
       |                          |
  Issue Types (org)        EDPA engine (výpočet)
       |                          |
  Custom fields            Reports + Snapshots

Tok dat

                    +---------------------------+
                    |    GitHub Projects (UI)    |
                    |  PM/BO spravují backlog    |
                    +---------------------------+
                         |              ^
           sync pull     |              |     sync push
         (cron 15min)    v              |   (push trigger)
                    +---------------------------+
                    |  .edpa/ item files (Git)   |
                    |  Source of truth           |
                    +---------------------------+
                              |
                    +---------+---------+
                    |                   |
              +----------+       +----------+
              |  Engine  |       |  Backlog |
              | (výpočet)|       |  CLI     |
              +----------+       +----------+
                    |                   |
              +----------+       +----------+
              | Reports  |       |  WSJF    |
              | Snapshots|       |  Tree    |
              | Výkazy   |       |  Validate|
              +----------+       +----------+

Evidence detection

SignálVáhaEvidence role
GitHub issue assignee4.0owner
/contribute @person weight:X3.0key
PR author referencing item2.0key
Commit author s S-XXX/F-XXX1.0reviewer
PR reviewer1.0reviewer
Issue/PR komentář0.5consulted

Nejvyšší signál určuje evidence role (signály se nesčítají).

Výpočet EDPA (simple mode)

Pro každou osobu v iteraci:

  1. Detekovat evidence na každé položce
  2. Pro každý pár (osoba, položka): score = JS × CW
  3. Pro každou osobu: ratio_i = score_i / sum(scores)
  4. Odvozené hodiny: hours_i = ratio_i × capacity
Invariant: sum(hours) = capacity (přesně, ne přibližně).

Troubleshooting

gh auth — chybějící scopes

ERROR: insufficient scopes for organization query

Řešení:

gh auth refresh -s repo,project,read:project,admin:org
gh auth status  # ověřit

Issue Types — "Not Found" při setup

ERROR: Organization not found or insufficient permissions

Řešení:

  • Ověřit že jste člen organizace s admin právy
  • Issue Types vyžadují org-level přístup (ne personal account)
  • gh auth refresh -s admin:org

Backlog validate — chyby

ERROR: S-200 references non-existent feature F-999

Řešení: ověřit že všechny feature: reference v stories ukazují na existující features.

WARNING: S-200 Job Size exceeds maximum (JS=13, max=8)

Řešení: Story JS max 8 (classic) nebo 5 (AI-native). Rozdělit velkou story na menší.

EDPA engine — invariant failure

INVARIANT FAILURE -- check results
All invariants passed: NO

Možné příčiny:

  • Osoba nemá žádné evidence (není assignee, žádné commity)
  • Všechny CW jsou 0
  • Kapacita je 0

Řešení: ověřit že každá osoba má alespoň 1 přiřazený work item, commity/PR referují správné item ID, kapacity > 0 v .edpa/config/people.yaml.

Sync — konflikty

CONFLICT: S-200 modified in both Git and Projects

Řešení:

Claude Code (doporučeno):

/edpa sync diff       # zobrazit rozdíly
/edpa sync push       # po vyřešení konfliktu

Manuální CLI:

# Zobrazit konflikty
python3 .claude/edpa/scripts/sync.py conflicts

# Diff
python3 .claude/edpa/scripts/sync.py diff

Ručně vyřešit v příslušném item souboru v .edpa/, pak:

python3 .claude/edpa/scripts/sync.py push

Sync — loop prevence

Workflow sync-git-to-projects.yml obsahuje:

if: github.actor != 'github-actions[bot]'

To zabraňuje nekonečné smyčce: push → sync → push → sync...

GitHub Project — custom fields chybí

ERROR: Field "Job Size" not found on project

Řešení: spustit znovu project_setup.py nebo ručně: Settings → Custom fields → Add field.

Branch naming CI failure

Branch name does not follow EDPA convention.
Required format: {type}/{item-id}-{description}

Řešení: formát feature/S-200-omop-parser. Typy: feature, defect, hotfix, chore. main, develop, release/* jsou výjimky.

MAD příliš vysoké (> 0.10)

Řešení:

  1. Analyzovat záznamy s největším abs(auto_cw - confirmed_cw)
  2. Seskupit dle role
  3. Pokud BO má konzistentně vyšší confirmed_cw → zvýšit role_overrides.BO.consulted
  4. Pokud Arch reviewer je podhodnocen → zvýšit role_overrides.Arch.reviewer
  5. Znovu evaluovat

Iteration close — "config not found"

ERROR: .edpa/config/people.yaml not found. Run EDPA setup first.

Řešení:

# /edpa setup generates .edpa/config/people.yaml automatically
# /edpa setup generates .edpa/config/heuristics.yaml automatically
# /edpa setup generates .edpa/config/project.yaml automatically

Slovníček

TermínVýznam
PIPlanning Interval (10 týdnů = 4 delivery + 1 IP iterace)
IPInnovation & Planning (poslední iterace PI)
JSJob Size — relativní velikost práce (Fibonacci)
BVBusiness Value — obchodní hodnota
TCTime Criticality — časová kritičnost
RRRisk Reduction — snížení rizika
WSJFWeighted Shortest Job First = (BV+TC+RR)/JS
CWContribution Weight — váha příspěvku (0.0 - 1.0)
RSRole Strength — síla role (volitelné v full mode)
MADMean Absolute Deviation — průměrná absolutní odchylka
EvidenceDoklad o práci (commit, PR, assignee, komentář)
Ground truthPotvrzená realita od týmu (pro kalibraci)