vyvoj-dash

Tasky

34 tasků

Kanban board tasků — filtr dle priority, labelu nebo runu.

Priorita:
Run: n nový 1-5 přesun
Backlog
0
Prázdné
To Do
0
Prázdné
In Progress
0
Prázdné
Hotovo
34
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.

Střední
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.

Střední
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).

Střední
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.

Střední
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.

Střední
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ě.

Střední
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.

Střední
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).

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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í.

Střední
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.

Střední
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.

Střední
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ů.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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).

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
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.

Střední
Zrušeno
0
Prázdné
Vráceno
0
Prázdné