Kanban board tasků — filtr dle priority, labelu nebo runu.
| ID | Název | Status | Priorita | Vytvořeno |
|---|---|---|---|---|
| 147 | Nastavit BUILD_ACCESS_TOKEN secret Nastavení zablokováno: CF API 10053 binding conflict (živý worker měl BUILD_ACCESS_TOKEN jako var). Fix: nejdřív deploy (odstraní var binding), pak wrangler secret put BUILD_ACCESS_TOKEN. Zdokumentováno v access-setup.md. | Hotovo | Střední | 12. 5. 2026 |
| 148 | Dokumentace CI/CD secrets v access-setup.md access-setup.md: přidána tabulka vars vs secrets (BUILD_ACCESS_CLIENT_ID public var, BUILD_ACCESS_TOKEN/CF_API_TOKEN/WEBHOOK_URL secrets), pořadí setup (deploy first → secret put), per-owner CF token flow přes dočasný AUTH_ADMIN_TOKEN. | Hotovo | Střední | 12. 5. 2026 |
| 143 | BUILD_ACCESS_CLIENT_ID a WEBHOOK_URL do wrangler.jsonc BUILD_ACCESS_CLIENT_ID (public client_id service tokenu) přidán do vars — hodnota je v kódu, není secret. WEBHOOK_URL přidán s default prázdný string. BUILD_ACCESS_TOKEN přesunut z vars do secrets-only (wrangler vars a secret nemůžou mít stejné jméno). | Hotovo | Střední | 12. 5. 2026 |
| 144 | Nový notifyWebhook helper Nový helper src/common/notifyWebhook.ts: POST JSON payload na URL, swallows all errors, canceluje response body (aby nezůstala otevřená CF Workers connection). Exportován z common/index.ts. | Hotovo | Střední | 12. 5. 2026 |
| 145 | buildRunner volá webhook po každém buildu buildRunner.ts po recordAndAck zkontroluje env.WEBHOOK_URL — pokud nastaven, zavolá notifyWebhook s payload { repoId, buildId, status, commitSha }. Empty string je falsy, takže nenastaven = skip. | Hotovo | Střední | 12. 5. 2026 |
| 146 | cf-typegen + typecheck cf-typegen přegeneroval worker-configuration.d.ts s novými vars (BUILD_ACCESS_CLIENT_ID, WEBHOOK_URL). BUILD_ACCESS_TOKEN přidán do env-augment.d.ts jako ambient type. Typecheck prošel čistě. | Hotovo | Střední | 12. 5. 2026 |
| 142 | Oprava clone auth (CF-Access extraheaders) Git clone v containeru posílal HTTP basic auth, ale git.vyvoj.dev je za CF Access (vyžaduje Client-Id + Client-Secret headers). Přepnuto na git -c http.extraheader syntax — oba headers předány jako env var přes setEnvVars. | Hotovo | Střední | 12. 5. 2026 |
| 140 | Research CF R2 backup a replikační možnosti R2 nemá nativní cross-account replikaci. Zdokumentovány tři varianty: rclone (cross-account), Scheduled Worker (same-account), Super Slurper (jednorázový export). | Hotovo | Střední | 11. 5. 2026 |
| 141 | run-013-r2-backup.md a dokumentace backup strategie run-013-r2-backup.done.md s design doporučením a poznámkou o bucket.list() paginaci (max 1000 objektů/call) přidáno do sprint dokumentace. | Hotovo | Střední | 11. 5. 2026 |
| 136 | Sprint 005 adresář a dokumentace Sprint 005 adresář chyběl — vytvořen, sprint.md a run-012 soubory zapsány ve stejném formátu jako Sprint 004. | Hotovo | Střední | 11. 5. 2026 |
| 137 | Research Cloudflare Observability a Logpush Workers Observability auto-zachycuje HTTP metadata (IP, Ray, path, status) — 7 dní retence. Pro delší retenci doporučen Logpush → R2, zdokumentováno v sprint.md. | Hotovo | Střední | 11. 5. 2026 |
| 138 | Audit logging do git.ts git.ts nemělo žádný logging. Přidány tři audit eventy (git:service-advertise, git:fetch-start, git:push-start/auth-failed) s owner/repoId/IP kontextem. | Hotovo | Střední | 11. 5. 2026 |
| 139 | Logpush doporučení v sprint dokumentaci Logpush doporučení přidáno do sprint.md s porovnáním variant (Workers Observability vs Logpush → R2 vs externí) a konkrétními wrangler příkazy. | Hotovo | Střední | 11. 5. 2026 |
| 133 | i18n pro builds BuildsCard potřeboval překlady pro 8 stavů buildu a 4 sloupce tabulky. Přidáno 18 klíčů admin.builds.* + help.step6_title do dict.cs.ts. | Hotovo | Střední | 11. 5. 2026 |
| 134 | HelpPage sekce automatický deploy Uživatel nevěděl, že server umí auto-deploy. Přidán Step 6 'Automatický deploy workerů' v /napoveda — vysvětluje detekci, frontu, kontejner a kde najít výsledek. e2e-notes.md dokumentuje postup pro manuální ověření. | Hotovo | Střední | 11. 5. 2026 |
| 135 | Sprint audit a access-setup docs Sprint 004 neměl zdokumentovanou CI/CD architekturu. Přidána sekce do access-setup.md (architektura push→deploy, potřebné secrets, diagnostika, limity). Sprint audit: 5/6 DoD splněno, E2E deferred. | Hotovo | Střední | 11. 5. 2026 |
| 132 | Builds karta v admin UI Admin UI nemělo viditelnost buildů. Přidán BuildsCard.tsx s tabulkou buildů, expandovatelným log tailem a status badges (zelená/červená). Data přicházejí ze server-side fetchnutého getBuildHistory() RPC v adminPage.ts. | Hotovo | Střední | 11. 5. 2026 |
| 128 | redactSecrets helper a AVA test Secrets v build logu by prosakly do DO storage. Přidán redactSecrets.ts s regex chainem (Bearer/JWT/hex/base64/KEY=) a truncateLog pro UTF-8 safe ořez. AVA test pokrývá 10 vzorů. | Hotovo | Střední | 11. 5. 2026 |
| 129 | BuildRecord typ a RepoDO RPCs pro záznamy buildů RepoDO neměl kde ukládat výsledky buildů. Přidán BuildRecord typ (stav, log tail, version_id) do repoState.ts a recordBuild/getBuildHistory RPC do repoDO.ts — ring buffer 50 záznamů per repo. | Hotovo | Střední | 11. 5. 2026 |
| 130 | Build runner consumer — skutečná implementace handleBuildMessage byl no-op (log + ack). Nahrazen skutečným buildRunner.ts: getSandbox → setEnvVars → git clone přes credential helper → checkout → npm ci → build → wrangler deploy → recordBuild do DO. destroy() vždy v finally. | Hotovo | Střední | 11. 5. 2026 |
| 131 | Vitest worker test pro build pipeline Build runner potřeboval worker-context test bez module-level mockování. Řešení: sandboxFactory parametr s default getSandbox, testy injektují mock. Pokrývá happy path (success + version_id parsing) + clone fail + deploy fail. | Hotovo | Střední | 11. 5. 2026 |
| 125 | Produkční Dockerfile Dockerfile byl jen v docs/sprints/004-ci-cd/Dockerfile.spike (proof-of-concept), produkce ho neměla. Promotnul jsem ho do rootu jako Dockerfile, wrangler pinnutý na 4.37.1 (= devDep verze v package.json) aby kontejner a dev tooling mluvily stejným CLI. Base image cloudflare/sandbox:0.7.0 + git + ca-certificates + smoke check. | Hotovo | Střední | 11. 5. 2026 |
| 126 | AUTH_DO cfTokens schema + RPC + admin endpoint AUTH_DO neměl kde držet CF API tokeny per owner — build runner potřebuje předat reálný token wrangler deploy v containeru. Přidal jsem typed key cfTokens do AuthStateSchema + RPC getCfToken/setCfToken (plaintext, nehashujem — token jde do CLI, ne pro verifikaci). HTTP endpoint POST /auth/api/cf-token v auth.ts (Bearer admin gate, ne admin.ts — ten má per-owner Basic auth = nesprávný gate pro system secret). UI pro ownery je až Sprint 005. | Hotovo | Střední | 11. 5. 2026 |
| 127 | Wrangler bindings pro Sandbox container Wrangler.jsonc neměl Sandbox container ani DO binding — runtime tedy neuměl spustit sandbox.exec(). Přidal jsem containers[] (lite, max_instances 1 per architecture §2 R3 serial build), Sandbox DO binding, migrations v3 new_sqlite_classes [Sandbox] (Sandbox SDK vyžaduje SQLite-backed DOs). BUILD_ACCESS_TOKEN secret zůstává mimo JSON — manuálně přes wrangler secret put. | Hotovo | Střední | 11. 5. 2026 |
| 124 | Sandbox SDK install + re-export Sandbox SDK nebyl v projektu — bez něj nešlo importovat Sandbox class ani postavit container binding. Nainstaloval jsem @cloudflare/sandbox@0.7.0 (verze sladěná se Sandbox Docker image) a re-exportuju Sandbox class z src/index.ts; Workers runtime ji potřebuje vidět na worker entry, jinak DO binding nezaregistruje. | Hotovo | Střední | 11. 5. 2026 |
| 123 | Vitest worker test pro enqueue logiku Producer logika potřebovala test coverage před plug-in build runneru v Run 010. Vitest worker test seedne pack-first repo s definovanou root tree a verifikuje 3 scénáře: worker repo enqueue / no-config skip / re-push HEAD-unchanged. Vše pass. | Hotovo | Střední | 11. 5. 2026 |
| 119 | Korekce architecture.md (AUTH_DO storage shape) Run zadání předpokládalo že AUTH_DO je Drizzle SQLite, ve skutečnosti je to typed KV storage (asTypedStorage). Architecture.md D4 + D5 + Decision summary opraveny, cf_api_token storage přesunut do Run 010 kde ho build-runner skutečně konzumuje. Také D5 implementace upravena z DO RPC na Worker-side helper, aby se neporušilo single-hop boundary. | Hotovo | Střední | 11. 5. 2026 |
| 120 | RepoDO markBuildHead RPC Bez transakčního trackingu by enqueue na feature-branch push nebo re-push téhož commitu vždy zařadil duplicitní build job. Přidán RPC markBuildHead na RepoDO + lastBuildHead key ve schema, single-threaded DO storage dělá read-then-write transakci natural — žádný blockConcurrencyWhile potřeba. | Hotovo | Střední | 11. 5. 2026 |
| 121 | Worker-side detekce wrangler config Detekce musela běžet Worker-side (ne v DO), jinak by Worker → DO → R2 porušila single-hop pravidlo z AGENTS.md. Nová detectWorkerProject v src/maintenance/buildDetect.ts čte HEAD commit a root tree přes existing readCommit/readTree, vrací tagged result (shouldBuild + configType jsonc/toml). | Hotovo | Střední | 11. 5. 2026 |
| 122 | Build queue producer a wire-up Producer-side build pipeline chyběla celá: nový buildEnqueue.ts s 3-step guard chain (HEAD → markBuildHead → detect → BUILD_QUEUE.send), dispatcher rozšířen v queue.ts o build kind, wire-up v routes/git.ts po addRepoToOwner s vlastním try/catch, BUILD_QUEUE binding v wrangler.jsonc. | Hotovo | Střední | 11. 5. 2026 |
| 110 | Dockerfile prototype pro build container Produkční build container chybí specifikaci. Vytvořen Dockerfile.spike extending cloudflare/sandbox:0.7.0 s git + wrangler@3 + smoke step; komentář o cílové image size ~600 MB jako vstup pro Run 010 produkční Dockerfile. | Hotovo | Střední | 10. 5. 2026 |
| 111 | Standalone spike worker s POST /spike-build endpoint Feasibility Sandbox SDK ve workeru nebyla nikdy ověřena. Vytvořen standalone worker v docs/sprints/004-ci-cd/spike/ (4 soubory, mimo hlavní package.json) s POST /spike-build endpointem volajícím sandbox.exec. Spuštění blokované absencí Dockeru v dev env — acceptance pro Run 010. | Hotovo | Střední | 10. 5. 2026 |
| 108 | Sandbox SDK průzkum přes context7 docs Sandbox SDK je v cloudflare:sandbox-sdk skillu i context7 docs. Tři queries (exec+filesystem, lifecycle, wrangler containers binding) → potvrzeno: sandbox.exec vrací {stdout,stderr,exitCode,success}, getSandbox podporuje sleepAfter/keepAlive, containers binding v wrangler.jsonc je zaužívaný shape. | Hotovo | Střední | 10. 5. 2026 |
| 109 | Architecture dokument s 5 rozhodnutími Bez explicitních rozhodnutí by Run 009-011 psaly hypotézy. Vytvořen kanonický doc s Mermaid push→deploy flow, pěti rozhodnutími (delivery, lifecycle, timeout, secrets, detekce), 9-řádkovou failure modes tabulkou a decision summary jako vstupem pro Run 009. | Hotovo | Střední | 10. 5. 2026 |