tickets(quotesdb): assign all tickets to domain sub-projects with dependency graph

Evaluated all quotesdb tickets and assigned each to the correct sub-project
dependency (api/f3dc74, ui/c3503b, qa/ce1e4f, infra/25c413). Also wired
inter-ticket dependencies to enforce correct implementation order within each
domain and cross-domain (e.g. QA test suites depend on the API handlers they
exercise). Validated with `nbd graph --json` — 78 nodes, 200 edges, no cycles.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
quotesdb
Elijah Voigt 3 months ago
parent 6d40671f28
commit 1c90c0fac1

@ -3,5 +3,5 @@ title = "Implement 4-word passphrase auth_code generator (must work in WASM/work
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6ed325"] dependencies = ["f3dc74", "1f5bb5", "6ed325"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement ui/src/main.rs — Yew app shell, BrowserRouter, route defini
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["93515e"] dependencies = ["c3503b", "93515e", "dc3d2b"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement PUT /api/quotes — create quote, generate NanoID, generate a
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e", "03bb91", "175382"] dependencies = ["f3dc74", "a5049d", "d792e2", "03bb91", "175382", "6f2e18"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] D1 binding chicken-and-egg — D1 ID not known until after app
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["25c413"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] OpenTofu state backend — local file (gitignored) vs Terrafor
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["25c413"]
+++ +++

@ -3,5 +3,5 @@ title = "Write api/README.md, api/docs/PLANNING.md, api/docs/ARCHITECTURE.md"
priority = 3 priority = 3
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["a6bce1"] dependencies = ["f3dc74", "a6bce1"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Auth code storage strategy — localStorage persistence vs com
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["c3503b"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] HTTP client selection for integration tests — reqwest vs hyp
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["ce1e4f"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement shared QuoteCard component — displays text, author, source,
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["04f865"] dependencies = ["c3503b", "93515e"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Yew version selection and yew-router compatibility (0.21+?)"
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["c3503b"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement tag join logic — fetch tags per quote, insert/replace tags
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["a5049d"] dependencies = ["f3dc74", "a5049d"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Cloudflare Workers WASM size limit — free tier 1MB limit may
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement Home page (/) — fetch and display random quote, 'Browse all
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1e6a09", "0d987f"] dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "fc2f51"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement Submit page (/submit) — quote creation form, display return
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1e6a09"] dependencies = ["c3503b", "04f865", "1e6a09", "fc2f51"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement API client module — typed fetch wrappers for all quotesdb-a
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["04f865"] dependencies = ["c3503b", "93515e"]
+++ +++

@ -3,5 +3,5 @@ title = "Set up api/Cargo.toml with all crate dependencies (axum, tokio, workers
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6f2e18", "6ed325", "e8a330"] dependencies = ["f3dc74", "a91260"]
+++ +++

@ -3,5 +3,5 @@ title = "quotesdb/infra"
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "project" ticket_type = "project"
dependencies = ["2d1371", "d0da0b", "a23489", "ae6a82", "ae886f", "657836", "75489a", "71b1d4", "af56a7", "d5839a"] dependencies = []
+++ +++

@ -3,5 +3,5 @@ title = "Implement GET /api/ — serve OpenAPI spec as JSON"
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e", "2ec8b1"] dependencies = ["f3dc74", "1f5bb5", "2ec8b1"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Test harness: how to import and start quotesdb-api in tests (w
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["ce1e4f"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement pagination component — prev/next buttons, current page indi
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["04f865"] dependencies = ["c3503b", "93515e"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement GET /api/quotes/random — random row query (must be register
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e"] dependencies = ["f3dc74", "a5049d", "d792e2", "175382"]
+++ +++

@ -3,5 +3,5 @@ title = "Set up infra/ OpenTofu project — providers.tf, terraform.tf, .gitigno
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["07feaa"] dependencies = ["25c413", "07feaa"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] OpenAPI spec serving strategy — embed YAML at compile time v
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Local dev config: Turso (file SQLite) vs D1 binding selection
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "Write ui/README.md, ui/docs/PLANNING.md, ui/docs/ARCHITECTURE.md"
priority = 3 priority = 3
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1a274d", "5cdbd9", "5f1112", "b3ef98", "1ba523"] dependencies = ["c3503b", "1a274d", "1ba523", "5f1112", "b3ef98", "5cdbd9"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: PUT /api/quotes — create (auto auth_code, custom auth_cod
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "05f8ae"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Database migration strategy for Cloudflare Workers (startup vs
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] D1 migrations in OpenTofu — null_resource local-exec vs sepa
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["25c413"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement Browse page (/browse) — paginated quote list with author/ta
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1e6a09", "0d987f", "2c5a57", "d3d502"] dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "2c5a57", "d3d502", "fc2f51"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement POST /api/quotes/:id — partial update, verify X-Auth-Code h
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e", "175382"] dependencies = ["f3dc74", "a5049d", "d792e2", "175382"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement GET /api/quotes/:id — fetch by NanoID, return 404 if not fo
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e", "175382"] dependencies = ["f3dc74", "a5049d", "d792e2", "175382"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] CSS/styling approach for Wasm — plain CSS, CDN Tailwind, or
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["c3503b"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement Quote detail page (/quotes/:id) — view, edit form with auth
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1e6a09", "0d987f", "f850c6"] dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "f850c6", "fc2f51"]
+++ +++

@ -3,5 +3,5 @@ title = "Set up tests/Cargo.toml with integration test dependencies (reqwest/hyp
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["2ab7a8", "a91260", "0d84fa"] dependencies = ["ce1e4f", "0d84fa"]
+++ +++

@ -3,5 +3,5 @@ title = "Configure custom domain quotes.elijah.run → Cloudflare Pages (DNS rec
priority = 6 priority = 6
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["ae886f"] dependencies = ["25c413", "ae886f"]
+++ +++

@ -3,5 +3,5 @@ title = "Set up api/src/main.rs — Cloudflare Workers entry point and Axum rout
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1f5bb5", "a5049d"] dependencies = ["f3dc74", "1f5bb5"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] 4-word passphrase crate selection for WASM target (no_std/wasm
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] NanoID crate WASM compatibility with workers-rs target"
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "Document secrets management — Cloudflare API token, account ID, how t
priority = 6 priority = 6
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["2d1371"] dependencies = ["25c413", "2d1371"]
+++ +++

@ -3,5 +3,5 @@ title = "Document D1 schema migration workflow — how to apply SQL schema chang
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["d0da0b", "5c0c64"] dependencies = ["25c413", "d0da0b"]
+++ +++

@ -3,5 +3,5 @@ title = "Write tests/README.md"
priority = 3 priority = 3
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["789d0f", "4a4c26", "f9f448", "aa0eab", "93f1b6", "fae330", "8c87db", "e8f5cf", "893eba"] dependencies = ["ce1e4f", "9b581f"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: GET /api/ — OpenAPI spec returned as valid JSON with expe
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "28e7d9"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement GET /api/quotes — paginated list with author filter (case-i
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e", "175382"] dependencies = ["f3dc74", "a5049d", "d792e2", "175382"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: tag operations — create with tags, list by tag filter, up
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "175382"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: DELETE /api/quotes/:id — valid auth 204 no body, wrong au
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "b20b5a"]
+++ +++

@ -3,5 +3,5 @@ title = "Set up ui/Cargo.toml with Yew/Wasm dependencies (yew, yew-router, gloo,
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["166996", "5e3e37"] dependencies = ["c3503b", "166996"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: GET /api/quotes — pagination (page=1, page=N, out-of-rang
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "886bfd"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement test server harness — spawn quotesdb-api with temp SQLite D
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["5f5ba0", "fba598", "f3dc74"] dependencies = ["ce1e4f", "5f5ba0", "2ab7a8", "fba598"]
+++ +++

@ -3,5 +3,5 @@ title = "Define Cloudflare Workers script resource — WASM artifact, D1 binding
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["2d1371", "d0da0b", "07cafb", "efee79"] dependencies = ["25c413", "2d1371", "d0da0b", "07cafb", "efee79"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement database connection module and SQLx migrations (quotes + quot
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1f5bb5", "580e66", "33ed29"] dependencies = ["f3dc74", "1f5bb5", "e8a330", "580e66", "33ed29"]
+++ +++

@ -3,5 +3,5 @@ title = "Write unit tests in api/src/tests.rs covering all handlers, auth logic,
priority = 6 priority = 6
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["28e7d9", "886bfd", "2ce22e", "5dbb7d", "05f8ae", "5d9f5a", "b20b5a", "d792e2"] dependencies = ["f3dc74", "2ce22e", "5dbb7d", "886bfd", "05f8ae", "5d9f5a", "b20b5a", "28e7d9"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] workers-rs compatibility with native Rust test binaries (may n
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Local dev CORS and Trunk API proxy config (trunk serve proxyin
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["c3503b"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: GET /api/quotes/random — 200 with quote, 404 when databas
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "2ce22e"]
+++ +++

@ -3,5 +3,5 @@ title = "Define Cloudflare Worker route/domain — worker.dev subdomain or custo
priority = 6 priority = 6
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["a23489"] dependencies = ["25c413", "a23489"]
+++ +++

@ -3,5 +3,5 @@ title = "Define Cloudflare Pages project resource — build config, output dir,
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["2d1371", "fc9bfd", "182210"] dependencies = ["25c413", "2d1371", "fc9bfd", "e2bd9b"]
+++ +++

@ -3,5 +3,5 @@ title = "Document local dev environment — Turso/SQLite instead of D1, any wran
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["2d1371"] dependencies = ["f3dc74", "33ed29"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement DELETE /api/quotes/:id — verify X-Auth-Code, cascade delete
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e"] dependencies = ["f3dc74", "a5049d", "d792e2"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement Author page (/author/:name) — paginated list of quotes by a
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["1e6a09", "0d987f", "2c5a57"] dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "2c5a57", "d3d502", "fc2f51"]
+++ +++

@ -3,5 +3,5 @@ title = "quotesdb/ui"
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "project" ticket_type = "project"
dependencies = ["93515e", "dc3d2b", "04f865", "1e6a09", "1a274d", "5cdbd9", "5f1112", "b3ef98", "1ba523", "0d987f", "f850c6", "2c5a57", "d3d502", "fc2f51", "372790"] dependencies = []
+++ +++

@ -3,5 +3,5 @@ title = "quotesdb/qa"
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "project" ticket_type = "project"
dependencies = ["5f5ba0", "9b581f", "789d0f", "4a4c26", "f9f448", "aa0eab", "93f1b6", "fae330", "8c87db", "e8f5cf", "893eba", "75e3f0"] dependencies = []
+++ +++

@ -3,5 +3,5 @@ title = "Define Cloudflare D1 database resource and document binding name for th
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["2d1371"] dependencies = ["25c413", "2d1371", "5c0c64"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement tag filter component — tag input/select for browse and auth
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["04f865"] dependencies = ["c3503b", "93515e"]
+++ +++

@ -3,5 +3,5 @@ title = "Write infra/README.md — setup, apply, destroy instructions and requir
priority = 3 priority = 3
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["ae6a82", "657836", "75489a", "71b1d4", "af56a7"] dependencies = ["25c413", "2d1371", "d0da0b", "a23489", "ae886f", "ae6a82"]
+++ +++

@ -3,5 +3,5 @@ title = 'Implement error handling — consistent {"error": "..."} envelope for 4
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["6e829e"] dependencies = ["f3dc74", "1f5bb5", "6e829e"]
+++ +++

@ -3,5 +3,5 @@ title = "Set up ui/Trunk.toml and ui/index.html — build configuration and Wasm
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["93515e", "a9534d"] dependencies = ["c3503b", "a9534d"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Cloudflare Pages SPA routing — 404 fallback config for clien
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["25c413"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] SQLx + workers-rs + Cloudflare D1 compatibility (known issues?
priority = 9 priority = 9
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["f3dc74"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: router ordering — verify /api/quotes/random is not matche
priority = 6 priority = 6
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "6e829e"]
+++ +++

@ -3,7 +3,7 @@ title = "quotesdb"
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "project" ticket_type = "project"
dependencies = ["f3dc74", "c3503b", "ce1e4f", "25c413"] dependencies = ["ce1e4f", "f3dc74", "c3503b", "25c413"]
+++ +++
# QuotesDB Implementation Plan # QuotesDB Implementation Plan

@ -3,5 +3,5 @@ title = "[TRIAGE] Correct cloudflare_workers_script resource name in current Clo
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["25c413"]
+++ +++

@ -3,5 +3,5 @@ title = "quotesdb/api"
priority = 7 priority = 7
status = "todo" status = "todo"
ticket_type = "project" ticket_type = "project"
dependencies = ["1f5bb5", "6e829e", "a5049d", "28e7d9", "886bfd", "2ce22e", "5dbb7d", "05f8ae", "5d9f5a", "b20b5a", "03bb91", "175382", "d792e2", "a6bce1", "08af7a"] dependencies = []
+++ +++

@ -3,5 +3,5 @@ title = "Implement auth code modal/prompt component — dialog requesting X-Auth
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["04f865", "0bc655"] dependencies = ["c3503b", "93515e", "0bc655"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: GET /api/quotes/:id — 200 with quote, 404 not found, sche
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "5dbb7d"]
+++ +++

@ -3,5 +3,5 @@ title = "Test suite: POST /api/quotes/:id — valid auth 200, wrong auth 403, no
priority = 5 priority = 5
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["9b581f"] dependencies = ["ce1e4f", "9b581f", "5d9f5a"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Integration test isolation strategy — per-test temp DB vs sh
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["ce1e4f"]
+++ +++

@ -3,5 +3,5 @@ title = "Implement error display component — consistent error state UI across
priority = 4 priority = 4
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = ["04f865"] dependencies = ["c3503b", "93515e"]
+++ +++

@ -3,5 +3,5 @@ title = "[TRIAGE] Cloudflare Pages build strategy — Pages CI build vs pre-buil
priority = 8 priority = 8
status = "todo" status = "todo"
ticket_type = "task" ticket_type = "task"
dependencies = [] dependencies = ["25c413"]
+++ +++

@ -159,6 +159,19 @@ CREATE TABLE quote_tags (
--- ---
## API Specification
The API spec lives at `api/openapi.yaml` (OpenAPI 3.1.0, YAML format).
- The spec is the source of truth for all endpoint contracts.
- Validate with Redocly CLI after any changes:
```sh
redocly lint api/openapi.yaml
```
---
## Validation ## Validation
Run in order from the relevant sub-directory before closing any ticket: Run in order from the relevant sub-directory before closing any ticket:
@ -170,6 +183,11 @@ cargo clippy # 3. best practices
cargo test # 4. correctness cargo test # 4. correctness
``` ```
For API spec changes:
```sh
redocly lint api/openapi.yaml
```
For infra tickets: For infra tickets:
```sh ```sh
tofu validate tofu validate

Loading…
Cancel
Save