From 1c90c0fac1d3bff2e2efa4237272bde3741dff1c Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Sat, 28 Feb 2026 21:31:16 -0800 Subject: [PATCH] tickets(quotesdb): assign all tickets to domain sub-projects with dependency graph MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- quotesdb/.nbd/tickets/03bb91.md | 2 +- quotesdb/.nbd/tickets/04f865.md | 2 +- quotesdb/.nbd/tickets/05f8ae.md | 2 +- quotesdb/.nbd/tickets/07cafb.md | 2 +- quotesdb/.nbd/tickets/07feaa.md | 2 +- quotesdb/.nbd/tickets/08af7a.md | 2 +- quotesdb/.nbd/tickets/0bc655.md | 2 +- quotesdb/.nbd/tickets/0d84fa.md | 2 +- quotesdb/.nbd/tickets/0d987f.md | 2 +- quotesdb/.nbd/tickets/166996.md | 2 +- quotesdb/.nbd/tickets/175382.md | 2 +- quotesdb/.nbd/tickets/182210.md | 2 +- quotesdb/.nbd/tickets/1a274d.md | 2 +- quotesdb/.nbd/tickets/1ba523.md | 2 +- quotesdb/.nbd/tickets/1e6a09.md | 2 +- quotesdb/.nbd/tickets/1f5bb5.md | 2 +- quotesdb/.nbd/tickets/25c413.md | 2 +- quotesdb/.nbd/tickets/28e7d9.md | 2 +- quotesdb/.nbd/tickets/2ab7a8.md | 2 +- quotesdb/.nbd/tickets/2c5a57.md | 2 +- quotesdb/.nbd/tickets/2ce22e.md | 2 +- quotesdb/.nbd/tickets/2d1371.md | 2 +- quotesdb/.nbd/tickets/2ec8b1.md | 2 +- quotesdb/.nbd/tickets/33ed29.md | 2 +- quotesdb/.nbd/tickets/372790.md | 2 +- quotesdb/.nbd/tickets/4a4c26.md | 2 +- quotesdb/.nbd/tickets/580e66.md | 2 +- quotesdb/.nbd/tickets/5c0c64.md | 2 +- quotesdb/.nbd/tickets/5cdbd9.md | 2 +- quotesdb/.nbd/tickets/5d9f5a.md | 2 +- quotesdb/.nbd/tickets/5dbb7d.md | 2 +- quotesdb/.nbd/tickets/5e3e37.md | 2 +- quotesdb/.nbd/tickets/5f1112.md | 2 +- quotesdb/.nbd/tickets/5f5ba0.md | 2 +- quotesdb/.nbd/tickets/657836.md | 2 +- quotesdb/.nbd/tickets/6e829e.md | 2 +- quotesdb/.nbd/tickets/6ed325.md | 2 +- quotesdb/.nbd/tickets/6f2e18.md | 2 +- quotesdb/.nbd/tickets/71b1d4.md | 2 +- quotesdb/.nbd/tickets/75489a.md | 2 +- quotesdb/.nbd/tickets/75e3f0.md | 2 +- quotesdb/.nbd/tickets/789d0f.md | 2 +- quotesdb/.nbd/tickets/886bfd.md | 2 +- quotesdb/.nbd/tickets/893eba.md | 2 +- quotesdb/.nbd/tickets/8c87db.md | 2 +- quotesdb/.nbd/tickets/93515e.md | 2 +- quotesdb/.nbd/tickets/93f1b6.md | 2 +- quotesdb/.nbd/tickets/9b581f.md | 2 +- quotesdb/.nbd/tickets/a23489.md | 2 +- quotesdb/.nbd/tickets/a5049d.md | 2 +- quotesdb/.nbd/tickets/a6bce1.md | 2 +- quotesdb/.nbd/tickets/a91260.md | 2 +- quotesdb/.nbd/tickets/a9534d.md | 2 +- quotesdb/.nbd/tickets/aa0eab.md | 2 +- quotesdb/.nbd/tickets/ae6a82.md | 2 +- quotesdb/.nbd/tickets/ae886f.md | 2 +- quotesdb/.nbd/tickets/af56a7.md | 2 +- quotesdb/.nbd/tickets/b20b5a.md | 2 +- quotesdb/.nbd/tickets/b3ef98.md | 2 +- quotesdb/.nbd/tickets/c3503b.md | 2 +- quotesdb/.nbd/tickets/ce1e4f.md | 2 +- quotesdb/.nbd/tickets/d0da0b.md | 2 +- quotesdb/.nbd/tickets/d3d502.md | 2 +- quotesdb/.nbd/tickets/d5839a.md | 2 +- quotesdb/.nbd/tickets/d792e2.md | 2 +- quotesdb/.nbd/tickets/dc3d2b.md | 2 +- quotesdb/.nbd/tickets/e2bd9b.md | 2 +- quotesdb/.nbd/tickets/e8a330.md | 2 +- quotesdb/.nbd/tickets/e8f5cf.md | 2 +- quotesdb/.nbd/tickets/ec118c.md | 2 +- quotesdb/.nbd/tickets/efee79.md | 2 +- quotesdb/.nbd/tickets/f3dc74.md | 2 +- quotesdb/.nbd/tickets/f850c6.md | 2 +- quotesdb/.nbd/tickets/f9f448.md | 2 +- quotesdb/.nbd/tickets/fae330.md | 2 +- quotesdb/.nbd/tickets/fba598.md | 2 +- quotesdb/.nbd/tickets/fc2f51.md | 2 +- quotesdb/.nbd/tickets/fc9bfd.md | 2 +- quotesdb/CLAUDE.md | 18 ++++++++++++++++++ 79 files changed, 96 insertions(+), 78 deletions(-) diff --git a/quotesdb/.nbd/tickets/03bb91.md b/quotesdb/.nbd/tickets/03bb91.md index 65a7cc0..84639ba 100644 --- a/quotesdb/.nbd/tickets/03bb91.md +++ b/quotesdb/.nbd/tickets/03bb91.md @@ -3,5 +3,5 @@ title = "Implement 4-word passphrase auth_code generator (must work in WASM/work priority = 7 status = "todo" ticket_type = "task" -dependencies = ["6ed325"] +dependencies = ["f3dc74", "1f5bb5", "6ed325"] +++ diff --git a/quotesdb/.nbd/tickets/04f865.md b/quotesdb/.nbd/tickets/04f865.md index 1cff4af..68d7635 100644 --- a/quotesdb/.nbd/tickets/04f865.md +++ b/quotesdb/.nbd/tickets/04f865.md @@ -3,5 +3,5 @@ title = "Implement ui/src/main.rs — Yew app shell, BrowserRouter, route defini priority = 8 status = "todo" ticket_type = "task" -dependencies = ["93515e"] +dependencies = ["c3503b", "93515e", "dc3d2b"] +++ diff --git a/quotesdb/.nbd/tickets/05f8ae.md b/quotesdb/.nbd/tickets/05f8ae.md index 44e9e30..d7b10ee 100644 --- a/quotesdb/.nbd/tickets/05f8ae.md +++ b/quotesdb/.nbd/tickets/05f8ae.md @@ -3,5 +3,5 @@ title = "Implement PUT /api/quotes — create quote, generate NanoID, generate a priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e", "03bb91", "175382"] +dependencies = ["f3dc74", "a5049d", "d792e2", "03bb91", "175382", "6f2e18"] +++ diff --git a/quotesdb/.nbd/tickets/07cafb.md b/quotesdb/.nbd/tickets/07cafb.md index c808bd9..60f5047 100644 --- a/quotesdb/.nbd/tickets/07cafb.md +++ b/quotesdb/.nbd/tickets/07cafb.md @@ -3,5 +3,5 @@ title = "[TRIAGE] D1 binding chicken-and-egg — D1 ID not known until after app priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["25c413"] +++ diff --git a/quotesdb/.nbd/tickets/07feaa.md b/quotesdb/.nbd/tickets/07feaa.md index 6104ab6..8a16138 100644 --- a/quotesdb/.nbd/tickets/07feaa.md +++ b/quotesdb/.nbd/tickets/07feaa.md @@ -3,5 +3,5 @@ title = "[TRIAGE] OpenTofu state backend — local file (gitignored) vs Terrafor priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["25c413"] +++ diff --git a/quotesdb/.nbd/tickets/08af7a.md b/quotesdb/.nbd/tickets/08af7a.md index 6b1220c..49746c9 100644 --- a/quotesdb/.nbd/tickets/08af7a.md +++ b/quotesdb/.nbd/tickets/08af7a.md @@ -3,5 +3,5 @@ title = "Write api/README.md, api/docs/PLANNING.md, api/docs/ARCHITECTURE.md" priority = 3 status = "todo" ticket_type = "task" -dependencies = ["a6bce1"] +dependencies = ["f3dc74", "a6bce1"] +++ diff --git a/quotesdb/.nbd/tickets/0bc655.md b/quotesdb/.nbd/tickets/0bc655.md index bcee0c7..c0a60c3 100644 --- a/quotesdb/.nbd/tickets/0bc655.md +++ b/quotesdb/.nbd/tickets/0bc655.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Auth code storage strategy — localStorage persistence vs com priority = 7 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["c3503b"] +++ diff --git a/quotesdb/.nbd/tickets/0d84fa.md b/quotesdb/.nbd/tickets/0d84fa.md index f132b9d..e6d1b90 100644 --- a/quotesdb/.nbd/tickets/0d84fa.md +++ b/quotesdb/.nbd/tickets/0d84fa.md @@ -3,5 +3,5 @@ title = "[TRIAGE] HTTP client selection for integration tests — reqwest vs hyp priority = 7 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["ce1e4f"] +++ diff --git a/quotesdb/.nbd/tickets/0d987f.md b/quotesdb/.nbd/tickets/0d987f.md index 379a8e5..361b75e 100644 --- a/quotesdb/.nbd/tickets/0d987f.md +++ b/quotesdb/.nbd/tickets/0d987f.md @@ -3,5 +3,5 @@ title = "Implement shared QuoteCard component — displays text, author, source, priority = 5 status = "todo" ticket_type = "task" -dependencies = ["04f865"] +dependencies = ["c3503b", "93515e"] +++ diff --git a/quotesdb/.nbd/tickets/166996.md b/quotesdb/.nbd/tickets/166996.md index 1e8a340..6baf316 100644 --- a/quotesdb/.nbd/tickets/166996.md +++ b/quotesdb/.nbd/tickets/166996.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Yew version selection and yew-router compatibility (0.21+?)" priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["c3503b"] +++ diff --git a/quotesdb/.nbd/tickets/175382.md b/quotesdb/.nbd/tickets/175382.md index 4e8daea..59a50ad 100644 --- a/quotesdb/.nbd/tickets/175382.md +++ b/quotesdb/.nbd/tickets/175382.md @@ -3,5 +3,5 @@ title = "Implement tag join logic — fetch tags per quote, insert/replace tags priority = 5 status = "todo" ticket_type = "task" -dependencies = ["a5049d"] +dependencies = ["f3dc74", "a5049d"] +++ diff --git a/quotesdb/.nbd/tickets/182210.md b/quotesdb/.nbd/tickets/182210.md index a3f7e90..d041e61 100644 --- a/quotesdb/.nbd/tickets/182210.md +++ b/quotesdb/.nbd/tickets/182210.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Cloudflare Workers WASM size limit — free tier 1MB limit may priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/1a274d.md b/quotesdb/.nbd/tickets/1a274d.md index a6fc8fa..be930dd 100644 --- a/quotesdb/.nbd/tickets/1a274d.md +++ b/quotesdb/.nbd/tickets/1a274d.md @@ -3,5 +3,5 @@ title = "Implement Home page (/) — fetch and display random quote, 'Browse all priority = 5 status = "todo" ticket_type = "task" -dependencies = ["1e6a09", "0d987f"] +dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "fc2f51"] +++ diff --git a/quotesdb/.nbd/tickets/1ba523.md b/quotesdb/.nbd/tickets/1ba523.md index 3e1e667..5de02a1 100644 --- a/quotesdb/.nbd/tickets/1ba523.md +++ b/quotesdb/.nbd/tickets/1ba523.md @@ -3,5 +3,5 @@ title = "Implement Submit page (/submit) — quote creation form, display return priority = 5 status = "todo" ticket_type = "task" -dependencies = ["1e6a09"] +dependencies = ["c3503b", "04f865", "1e6a09", "fc2f51"] +++ diff --git a/quotesdb/.nbd/tickets/1e6a09.md b/quotesdb/.nbd/tickets/1e6a09.md index af8497f..2128c41 100644 --- a/quotesdb/.nbd/tickets/1e6a09.md +++ b/quotesdb/.nbd/tickets/1e6a09.md @@ -3,5 +3,5 @@ title = "Implement API client module — typed fetch wrappers for all quotesdb-a priority = 7 status = "todo" ticket_type = "task" -dependencies = ["04f865"] +dependencies = ["c3503b", "93515e"] +++ diff --git a/quotesdb/.nbd/tickets/1f5bb5.md b/quotesdb/.nbd/tickets/1f5bb5.md index 3fac609..16d2fe3 100644 --- a/quotesdb/.nbd/tickets/1f5bb5.md +++ b/quotesdb/.nbd/tickets/1f5bb5.md @@ -3,5 +3,5 @@ title = "Set up api/Cargo.toml with all crate dependencies (axum, tokio, workers priority = 8 status = "todo" ticket_type = "task" -dependencies = ["6f2e18", "6ed325", "e8a330"] +dependencies = ["f3dc74", "a91260"] +++ diff --git a/quotesdb/.nbd/tickets/25c413.md b/quotesdb/.nbd/tickets/25c413.md index 051831b..96e51fb 100644 --- a/quotesdb/.nbd/tickets/25c413.md +++ b/quotesdb/.nbd/tickets/25c413.md @@ -3,5 +3,5 @@ title = "quotesdb/infra" priority = 7 status = "todo" ticket_type = "project" -dependencies = ["2d1371", "d0da0b", "a23489", "ae6a82", "ae886f", "657836", "75489a", "71b1d4", "af56a7", "d5839a"] +dependencies = [] +++ diff --git a/quotesdb/.nbd/tickets/28e7d9.md b/quotesdb/.nbd/tickets/28e7d9.md index c324815..e82dea8 100644 --- a/quotesdb/.nbd/tickets/28e7d9.md +++ b/quotesdb/.nbd/tickets/28e7d9.md @@ -3,5 +3,5 @@ title = "Implement GET /api/ — serve OpenAPI spec as JSON" priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e", "2ec8b1"] +dependencies = ["f3dc74", "1f5bb5", "2ec8b1"] +++ diff --git a/quotesdb/.nbd/tickets/2ab7a8.md b/quotesdb/.nbd/tickets/2ab7a8.md index b93a666..1e438b2 100644 --- a/quotesdb/.nbd/tickets/2ab7a8.md +++ b/quotesdb/.nbd/tickets/2ab7a8.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Test harness: how to import and start quotesdb-api in tests (w priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["ce1e4f"] +++ diff --git a/quotesdb/.nbd/tickets/2c5a57.md b/quotesdb/.nbd/tickets/2c5a57.md index 25f27d3..697b2bd 100644 --- a/quotesdb/.nbd/tickets/2c5a57.md +++ b/quotesdb/.nbd/tickets/2c5a57.md @@ -3,5 +3,5 @@ title = "Implement pagination component — prev/next buttons, current page indi priority = 5 status = "todo" ticket_type = "task" -dependencies = ["04f865"] +dependencies = ["c3503b", "93515e"] +++ diff --git a/quotesdb/.nbd/tickets/2ce22e.md b/quotesdb/.nbd/tickets/2ce22e.md index 3d67d0d..a9ebec7 100644 --- a/quotesdb/.nbd/tickets/2ce22e.md +++ b/quotesdb/.nbd/tickets/2ce22e.md @@ -3,5 +3,5 @@ title = "Implement GET /api/quotes/random — random row query (must be register priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e"] +dependencies = ["f3dc74", "a5049d", "d792e2", "175382"] +++ diff --git a/quotesdb/.nbd/tickets/2d1371.md b/quotesdb/.nbd/tickets/2d1371.md index 1704069..3bc0777 100644 --- a/quotesdb/.nbd/tickets/2d1371.md +++ b/quotesdb/.nbd/tickets/2d1371.md @@ -3,5 +3,5 @@ title = "Set up infra/ OpenTofu project — providers.tf, terraform.tf, .gitigno priority = 8 status = "todo" ticket_type = "task" -dependencies = ["07feaa"] +dependencies = ["25c413", "07feaa"] +++ diff --git a/quotesdb/.nbd/tickets/2ec8b1.md b/quotesdb/.nbd/tickets/2ec8b1.md index 230649b..fb3159e 100644 --- a/quotesdb/.nbd/tickets/2ec8b1.md +++ b/quotesdb/.nbd/tickets/2ec8b1.md @@ -3,5 +3,5 @@ title = "[TRIAGE] OpenAPI spec serving strategy — embed YAML at compile time v priority = 7 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/33ed29.md b/quotesdb/.nbd/tickets/33ed29.md index ad9370c..6750e8e 100644 --- a/quotesdb/.nbd/tickets/33ed29.md +++ b/quotesdb/.nbd/tickets/33ed29.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Local dev config: Turso (file SQLite) vs D1 binding selection priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/372790.md b/quotesdb/.nbd/tickets/372790.md index aa930ef..5c4bf59 100644 --- a/quotesdb/.nbd/tickets/372790.md +++ b/quotesdb/.nbd/tickets/372790.md @@ -3,5 +3,5 @@ title = "Write ui/README.md, ui/docs/PLANNING.md, ui/docs/ARCHITECTURE.md" priority = 3 status = "todo" ticket_type = "task" -dependencies = ["1a274d", "5cdbd9", "5f1112", "b3ef98", "1ba523"] +dependencies = ["c3503b", "1a274d", "1ba523", "5f1112", "b3ef98", "5cdbd9"] +++ diff --git a/quotesdb/.nbd/tickets/4a4c26.md b/quotesdb/.nbd/tickets/4a4c26.md index 7ddc22a..b8c63f4 100644 --- a/quotesdb/.nbd/tickets/4a4c26.md +++ b/quotesdb/.nbd/tickets/4a4c26.md @@ -3,5 +3,5 @@ title = "Test suite: PUT /api/quotes — create (auto auth_code, custom auth_cod priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "05f8ae"] +++ diff --git a/quotesdb/.nbd/tickets/580e66.md b/quotesdb/.nbd/tickets/580e66.md index 8b604ef..b59db3c 100644 --- a/quotesdb/.nbd/tickets/580e66.md +++ b/quotesdb/.nbd/tickets/580e66.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Database migration strategy for Cloudflare Workers (startup vs priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/5c0c64.md b/quotesdb/.nbd/tickets/5c0c64.md index 5e3e162..cf39be9 100644 --- a/quotesdb/.nbd/tickets/5c0c64.md +++ b/quotesdb/.nbd/tickets/5c0c64.md @@ -3,5 +3,5 @@ title = "[TRIAGE] D1 migrations in OpenTofu — null_resource local-exec vs sepa priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["25c413"] +++ diff --git a/quotesdb/.nbd/tickets/5cdbd9.md b/quotesdb/.nbd/tickets/5cdbd9.md index 9ef1400..1403054 100644 --- a/quotesdb/.nbd/tickets/5cdbd9.md +++ b/quotesdb/.nbd/tickets/5cdbd9.md @@ -3,5 +3,5 @@ title = "Implement Browse page (/browse) — paginated quote list with author/ta priority = 5 status = "todo" ticket_type = "task" -dependencies = ["1e6a09", "0d987f", "2c5a57", "d3d502"] +dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "2c5a57", "d3d502", "fc2f51"] +++ diff --git a/quotesdb/.nbd/tickets/5d9f5a.md b/quotesdb/.nbd/tickets/5d9f5a.md index 1da1358..c387150 100644 --- a/quotesdb/.nbd/tickets/5d9f5a.md +++ b/quotesdb/.nbd/tickets/5d9f5a.md @@ -3,5 +3,5 @@ title = "Implement POST /api/quotes/:id — partial update, verify X-Auth-Code h priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e", "175382"] +dependencies = ["f3dc74", "a5049d", "d792e2", "175382"] +++ diff --git a/quotesdb/.nbd/tickets/5dbb7d.md b/quotesdb/.nbd/tickets/5dbb7d.md index 5270a13..f0c8905 100644 --- a/quotesdb/.nbd/tickets/5dbb7d.md +++ b/quotesdb/.nbd/tickets/5dbb7d.md @@ -3,5 +3,5 @@ title = "Implement GET /api/quotes/:id — fetch by NanoID, return 404 if not fo priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e", "175382"] +dependencies = ["f3dc74", "a5049d", "d792e2", "175382"] +++ diff --git a/quotesdb/.nbd/tickets/5e3e37.md b/quotesdb/.nbd/tickets/5e3e37.md index efc6ab9..4978ed3 100644 --- a/quotesdb/.nbd/tickets/5e3e37.md +++ b/quotesdb/.nbd/tickets/5e3e37.md @@ -3,5 +3,5 @@ title = "[TRIAGE] CSS/styling approach for Wasm — plain CSS, CDN Tailwind, or priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["c3503b"] +++ diff --git a/quotesdb/.nbd/tickets/5f1112.md b/quotesdb/.nbd/tickets/5f1112.md index d8b5797..afa50fd 100644 --- a/quotesdb/.nbd/tickets/5f1112.md +++ b/quotesdb/.nbd/tickets/5f1112.md @@ -3,5 +3,5 @@ title = "Implement Quote detail page (/quotes/:id) — view, edit form with auth priority = 5 status = "todo" ticket_type = "task" -dependencies = ["1e6a09", "0d987f", "f850c6"] +dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "f850c6", "fc2f51"] +++ diff --git a/quotesdb/.nbd/tickets/5f5ba0.md b/quotesdb/.nbd/tickets/5f5ba0.md index 2ec61ce..7066107 100644 --- a/quotesdb/.nbd/tickets/5f5ba0.md +++ b/quotesdb/.nbd/tickets/5f5ba0.md @@ -3,5 +3,5 @@ title = "Set up tests/Cargo.toml with integration test dependencies (reqwest/hyp priority = 8 status = "todo" ticket_type = "task" -dependencies = ["2ab7a8", "a91260", "0d84fa"] +dependencies = ["ce1e4f", "0d84fa"] +++ diff --git a/quotesdb/.nbd/tickets/657836.md b/quotesdb/.nbd/tickets/657836.md index ca7e375..8adce9d 100644 --- a/quotesdb/.nbd/tickets/657836.md +++ b/quotesdb/.nbd/tickets/657836.md @@ -3,5 +3,5 @@ title = "Configure custom domain quotes.elijah.run → Cloudflare Pages (DNS rec priority = 6 status = "todo" ticket_type = "task" -dependencies = ["ae886f"] +dependencies = ["25c413", "ae886f"] +++ diff --git a/quotesdb/.nbd/tickets/6e829e.md b/quotesdb/.nbd/tickets/6e829e.md index 4cd1ca1..5f2e595 100644 --- a/quotesdb/.nbd/tickets/6e829e.md +++ b/quotesdb/.nbd/tickets/6e829e.md @@ -3,5 +3,5 @@ title = "Set up api/src/main.rs — Cloudflare Workers entry point and Axum rout priority = 8 status = "todo" ticket_type = "task" -dependencies = ["1f5bb5", "a5049d"] +dependencies = ["f3dc74", "1f5bb5"] +++ diff --git a/quotesdb/.nbd/tickets/6ed325.md b/quotesdb/.nbd/tickets/6ed325.md index e735771..68a7968 100644 --- a/quotesdb/.nbd/tickets/6ed325.md +++ b/quotesdb/.nbd/tickets/6ed325.md @@ -3,5 +3,5 @@ title = "[TRIAGE] 4-word passphrase crate selection for WASM target (no_std/wasm priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/6f2e18.md b/quotesdb/.nbd/tickets/6f2e18.md index 32de2cb..d209840 100644 --- a/quotesdb/.nbd/tickets/6f2e18.md +++ b/quotesdb/.nbd/tickets/6f2e18.md @@ -3,5 +3,5 @@ title = "[TRIAGE] NanoID crate WASM compatibility with workers-rs target" priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/71b1d4.md b/quotesdb/.nbd/tickets/71b1d4.md index 20c5729..c7bf102 100644 --- a/quotesdb/.nbd/tickets/71b1d4.md +++ b/quotesdb/.nbd/tickets/71b1d4.md @@ -3,5 +3,5 @@ title = "Document secrets management — Cloudflare API token, account ID, how t priority = 6 status = "todo" ticket_type = "task" -dependencies = ["2d1371"] +dependencies = ["25c413", "2d1371"] +++ diff --git a/quotesdb/.nbd/tickets/75489a.md b/quotesdb/.nbd/tickets/75489a.md index 81f9e21..838fbad 100644 --- a/quotesdb/.nbd/tickets/75489a.md +++ b/quotesdb/.nbd/tickets/75489a.md @@ -3,5 +3,5 @@ title = "Document D1 schema migration workflow — how to apply SQL schema chang priority = 7 status = "todo" ticket_type = "task" -dependencies = ["d0da0b", "5c0c64"] +dependencies = ["25c413", "d0da0b"] +++ diff --git a/quotesdb/.nbd/tickets/75e3f0.md b/quotesdb/.nbd/tickets/75e3f0.md index e8f5af3..34f4a8c 100644 --- a/quotesdb/.nbd/tickets/75e3f0.md +++ b/quotesdb/.nbd/tickets/75e3f0.md @@ -3,5 +3,5 @@ title = "Write tests/README.md" priority = 3 status = "todo" ticket_type = "task" -dependencies = ["789d0f", "4a4c26", "f9f448", "aa0eab", "93f1b6", "fae330", "8c87db", "e8f5cf", "893eba"] +dependencies = ["ce1e4f", "9b581f"] +++ diff --git a/quotesdb/.nbd/tickets/789d0f.md b/quotesdb/.nbd/tickets/789d0f.md index e190e16..9f413cb 100644 --- a/quotesdb/.nbd/tickets/789d0f.md +++ b/quotesdb/.nbd/tickets/789d0f.md @@ -3,5 +3,5 @@ title = "Test suite: GET /api/ — OpenAPI spec returned as valid JSON with expe priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "28e7d9"] +++ diff --git a/quotesdb/.nbd/tickets/886bfd.md b/quotesdb/.nbd/tickets/886bfd.md index 7d4817b..9aff201 100644 --- a/quotesdb/.nbd/tickets/886bfd.md +++ b/quotesdb/.nbd/tickets/886bfd.md @@ -3,5 +3,5 @@ title = "Implement GET /api/quotes — paginated list with author filter (case-i priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e", "175382"] +dependencies = ["f3dc74", "a5049d", "d792e2", "175382"] +++ diff --git a/quotesdb/.nbd/tickets/893eba.md b/quotesdb/.nbd/tickets/893eba.md index 892cf54..a5e8cf7 100644 --- a/quotesdb/.nbd/tickets/893eba.md +++ b/quotesdb/.nbd/tickets/893eba.md @@ -3,5 +3,5 @@ title = "Test suite: tag operations — create with tags, list by tag filter, up priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "175382"] +++ diff --git a/quotesdb/.nbd/tickets/8c87db.md b/quotesdb/.nbd/tickets/8c87db.md index 1bd8398..40c94ba 100644 --- a/quotesdb/.nbd/tickets/8c87db.md +++ b/quotesdb/.nbd/tickets/8c87db.md @@ -3,5 +3,5 @@ title = "Test suite: DELETE /api/quotes/:id — valid auth 204 no body, wrong au priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "b20b5a"] +++ diff --git a/quotesdb/.nbd/tickets/93515e.md b/quotesdb/.nbd/tickets/93515e.md index 50c98a9..f44c950 100644 --- a/quotesdb/.nbd/tickets/93515e.md +++ b/quotesdb/.nbd/tickets/93515e.md @@ -3,5 +3,5 @@ title = "Set up ui/Cargo.toml with Yew/Wasm dependencies (yew, yew-router, gloo, priority = 8 status = "todo" ticket_type = "task" -dependencies = ["166996", "5e3e37"] +dependencies = ["c3503b", "166996"] +++ diff --git a/quotesdb/.nbd/tickets/93f1b6.md b/quotesdb/.nbd/tickets/93f1b6.md index 6468a64..f92b07e 100644 --- a/quotesdb/.nbd/tickets/93f1b6.md +++ b/quotesdb/.nbd/tickets/93f1b6.md @@ -3,5 +3,5 @@ title = "Test suite: GET /api/quotes — pagination (page=1, page=N, out-of-rang priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "886bfd"] +++ diff --git a/quotesdb/.nbd/tickets/9b581f.md b/quotesdb/.nbd/tickets/9b581f.md index 16e0d00..c9e252f 100644 --- a/quotesdb/.nbd/tickets/9b581f.md +++ b/quotesdb/.nbd/tickets/9b581f.md @@ -3,5 +3,5 @@ title = "Implement test server harness — spawn quotesdb-api with temp SQLite D priority = 8 status = "todo" ticket_type = "task" -dependencies = ["5f5ba0", "fba598", "f3dc74"] +dependencies = ["ce1e4f", "5f5ba0", "2ab7a8", "fba598"] +++ diff --git a/quotesdb/.nbd/tickets/a23489.md b/quotesdb/.nbd/tickets/a23489.md index d4e4617..e33d263 100644 --- a/quotesdb/.nbd/tickets/a23489.md +++ b/quotesdb/.nbd/tickets/a23489.md @@ -3,5 +3,5 @@ title = "Define Cloudflare Workers script resource — WASM artifact, D1 binding priority = 7 status = "todo" ticket_type = "task" -dependencies = ["2d1371", "d0da0b", "07cafb", "efee79"] +dependencies = ["25c413", "2d1371", "d0da0b", "07cafb", "efee79"] +++ diff --git a/quotesdb/.nbd/tickets/a5049d.md b/quotesdb/.nbd/tickets/a5049d.md index abae173..8f0fa1b 100644 --- a/quotesdb/.nbd/tickets/a5049d.md +++ b/quotesdb/.nbd/tickets/a5049d.md @@ -3,5 +3,5 @@ title = "Implement database connection module and SQLx migrations (quotes + quot priority = 8 status = "todo" ticket_type = "task" -dependencies = ["1f5bb5", "580e66", "33ed29"] +dependencies = ["f3dc74", "1f5bb5", "e8a330", "580e66", "33ed29"] +++ diff --git a/quotesdb/.nbd/tickets/a6bce1.md b/quotesdb/.nbd/tickets/a6bce1.md index 4999008..b68027f 100644 --- a/quotesdb/.nbd/tickets/a6bce1.md +++ b/quotesdb/.nbd/tickets/a6bce1.md @@ -3,5 +3,5 @@ title = "Write unit tests in api/src/tests.rs covering all handlers, auth logic, priority = 6 status = "todo" ticket_type = "task" -dependencies = ["28e7d9", "886bfd", "2ce22e", "5dbb7d", "05f8ae", "5d9f5a", "b20b5a", "d792e2"] +dependencies = ["f3dc74", "2ce22e", "5dbb7d", "886bfd", "05f8ae", "5d9f5a", "b20b5a", "28e7d9"] +++ diff --git a/quotesdb/.nbd/tickets/a91260.md b/quotesdb/.nbd/tickets/a91260.md index eee9d28..2cfae76 100644 --- a/quotesdb/.nbd/tickets/a91260.md +++ b/quotesdb/.nbd/tickets/a91260.md @@ -3,5 +3,5 @@ title = "[TRIAGE] workers-rs compatibility with native Rust test binaries (may n priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/a9534d.md b/quotesdb/.nbd/tickets/a9534d.md index b14f6d7..b512281 100644 --- a/quotesdb/.nbd/tickets/a9534d.md +++ b/quotesdb/.nbd/tickets/a9534d.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Local dev CORS and Trunk API proxy config (trunk serve proxyin priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["c3503b"] +++ diff --git a/quotesdb/.nbd/tickets/aa0eab.md b/quotesdb/.nbd/tickets/aa0eab.md index bc95f05..1f91d8e 100644 --- a/quotesdb/.nbd/tickets/aa0eab.md +++ b/quotesdb/.nbd/tickets/aa0eab.md @@ -3,5 +3,5 @@ title = "Test suite: GET /api/quotes/random — 200 with quote, 404 when databas priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "2ce22e"] +++ diff --git a/quotesdb/.nbd/tickets/ae6a82.md b/quotesdb/.nbd/tickets/ae6a82.md index e5cb1ec..7d581d7 100644 --- a/quotesdb/.nbd/tickets/ae6a82.md +++ b/quotesdb/.nbd/tickets/ae6a82.md @@ -3,5 +3,5 @@ title = "Define Cloudflare Worker route/domain — worker.dev subdomain or custo priority = 6 status = "todo" ticket_type = "task" -dependencies = ["a23489"] +dependencies = ["25c413", "a23489"] +++ diff --git a/quotesdb/.nbd/tickets/ae886f.md b/quotesdb/.nbd/tickets/ae886f.md index 8dccf45..5ecd05c 100644 --- a/quotesdb/.nbd/tickets/ae886f.md +++ b/quotesdb/.nbd/tickets/ae886f.md @@ -3,5 +3,5 @@ title = "Define Cloudflare Pages project resource — build config, output dir, priority = 7 status = "todo" ticket_type = "task" -dependencies = ["2d1371", "fc9bfd", "182210"] +dependencies = ["25c413", "2d1371", "fc9bfd", "e2bd9b"] +++ diff --git a/quotesdb/.nbd/tickets/af56a7.md b/quotesdb/.nbd/tickets/af56a7.md index 21dda52..bf20434 100644 --- a/quotesdb/.nbd/tickets/af56a7.md +++ b/quotesdb/.nbd/tickets/af56a7.md @@ -3,5 +3,5 @@ title = "Document local dev environment — Turso/SQLite instead of D1, any wran priority = 5 status = "todo" ticket_type = "task" -dependencies = ["2d1371"] +dependencies = ["f3dc74", "33ed29"] +++ diff --git a/quotesdb/.nbd/tickets/b20b5a.md b/quotesdb/.nbd/tickets/b20b5a.md index 5e5a731..1d4eb1c 100644 --- a/quotesdb/.nbd/tickets/b20b5a.md +++ b/quotesdb/.nbd/tickets/b20b5a.md @@ -3,5 +3,5 @@ title = "Implement DELETE /api/quotes/:id — verify X-Auth-Code, cascade delete priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e"] +dependencies = ["f3dc74", "a5049d", "d792e2"] +++ diff --git a/quotesdb/.nbd/tickets/b3ef98.md b/quotesdb/.nbd/tickets/b3ef98.md index eef7f03..4c7e1cb 100644 --- a/quotesdb/.nbd/tickets/b3ef98.md +++ b/quotesdb/.nbd/tickets/b3ef98.md @@ -3,5 +3,5 @@ title = "Implement Author page (/author/:name) — paginated list of quotes by a priority = 5 status = "todo" ticket_type = "task" -dependencies = ["1e6a09", "0d987f", "2c5a57"] +dependencies = ["c3503b", "04f865", "1e6a09", "0d987f", "2c5a57", "d3d502", "fc2f51"] +++ diff --git a/quotesdb/.nbd/tickets/c3503b.md b/quotesdb/.nbd/tickets/c3503b.md index 9475d33..9552c87 100644 --- a/quotesdb/.nbd/tickets/c3503b.md +++ b/quotesdb/.nbd/tickets/c3503b.md @@ -3,5 +3,5 @@ title = "quotesdb/ui" priority = 7 status = "todo" ticket_type = "project" -dependencies = ["93515e", "dc3d2b", "04f865", "1e6a09", "1a274d", "5cdbd9", "5f1112", "b3ef98", "1ba523", "0d987f", "f850c6", "2c5a57", "d3d502", "fc2f51", "372790"] +dependencies = [] +++ diff --git a/quotesdb/.nbd/tickets/ce1e4f.md b/quotesdb/.nbd/tickets/ce1e4f.md index 2d3f363..67f5580 100644 --- a/quotesdb/.nbd/tickets/ce1e4f.md +++ b/quotesdb/.nbd/tickets/ce1e4f.md @@ -3,5 +3,5 @@ title = "quotesdb/qa" priority = 7 status = "todo" ticket_type = "project" -dependencies = ["5f5ba0", "9b581f", "789d0f", "4a4c26", "f9f448", "aa0eab", "93f1b6", "fae330", "8c87db", "e8f5cf", "893eba", "75e3f0"] +dependencies = [] +++ diff --git a/quotesdb/.nbd/tickets/d0da0b.md b/quotesdb/.nbd/tickets/d0da0b.md index 4eabdd7..19dc2cf 100644 --- a/quotesdb/.nbd/tickets/d0da0b.md +++ b/quotesdb/.nbd/tickets/d0da0b.md @@ -3,5 +3,5 @@ title = "Define Cloudflare D1 database resource and document binding name for th priority = 7 status = "todo" ticket_type = "task" -dependencies = ["2d1371"] +dependencies = ["25c413", "2d1371", "5c0c64"] +++ diff --git a/quotesdb/.nbd/tickets/d3d502.md b/quotesdb/.nbd/tickets/d3d502.md index 7a69e8c..4b0b71f 100644 --- a/quotesdb/.nbd/tickets/d3d502.md +++ b/quotesdb/.nbd/tickets/d3d502.md @@ -3,5 +3,5 @@ title = "Implement tag filter component — tag input/select for browse and auth priority = 5 status = "todo" ticket_type = "task" -dependencies = ["04f865"] +dependencies = ["c3503b", "93515e"] +++ diff --git a/quotesdb/.nbd/tickets/d5839a.md b/quotesdb/.nbd/tickets/d5839a.md index b14a0f0..0c2697c 100644 --- a/quotesdb/.nbd/tickets/d5839a.md +++ b/quotesdb/.nbd/tickets/d5839a.md @@ -3,5 +3,5 @@ title = "Write infra/README.md — setup, apply, destroy instructions and requir priority = 3 status = "todo" ticket_type = "task" -dependencies = ["ae6a82", "657836", "75489a", "71b1d4", "af56a7"] +dependencies = ["25c413", "2d1371", "d0da0b", "a23489", "ae886f", "ae6a82"] +++ diff --git a/quotesdb/.nbd/tickets/d792e2.md b/quotesdb/.nbd/tickets/d792e2.md index 6733792..ecc5721 100644 --- a/quotesdb/.nbd/tickets/d792e2.md +++ b/quotesdb/.nbd/tickets/d792e2.md @@ -3,5 +3,5 @@ title = 'Implement error handling — consistent {"error": "..."} envelope for 4 priority = 5 status = "todo" ticket_type = "task" -dependencies = ["6e829e"] +dependencies = ["f3dc74", "1f5bb5", "6e829e"] +++ diff --git a/quotesdb/.nbd/tickets/dc3d2b.md b/quotesdb/.nbd/tickets/dc3d2b.md index 2492578..e112117 100644 --- a/quotesdb/.nbd/tickets/dc3d2b.md +++ b/quotesdb/.nbd/tickets/dc3d2b.md @@ -3,5 +3,5 @@ title = "Set up ui/Trunk.toml and ui/index.html — build configuration and Wasm priority = 8 status = "todo" ticket_type = "task" -dependencies = ["93515e", "a9534d"] +dependencies = ["c3503b", "a9534d"] +++ diff --git a/quotesdb/.nbd/tickets/e2bd9b.md b/quotesdb/.nbd/tickets/e2bd9b.md index 1e3d8bc..b8c113f 100644 --- a/quotesdb/.nbd/tickets/e2bd9b.md +++ b/quotesdb/.nbd/tickets/e2bd9b.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Cloudflare Pages SPA routing — 404 fallback config for clien priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["25c413"] +++ diff --git a/quotesdb/.nbd/tickets/e8a330.md b/quotesdb/.nbd/tickets/e8a330.md index 8279603..9a57cba 100644 --- a/quotesdb/.nbd/tickets/e8a330.md +++ b/quotesdb/.nbd/tickets/e8a330.md @@ -3,5 +3,5 @@ title = "[TRIAGE] SQLx + workers-rs + Cloudflare D1 compatibility (known issues? priority = 9 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["f3dc74"] +++ diff --git a/quotesdb/.nbd/tickets/e8f5cf.md b/quotesdb/.nbd/tickets/e8f5cf.md index ca9fef0..b56d55c 100644 --- a/quotesdb/.nbd/tickets/e8f5cf.md +++ b/quotesdb/.nbd/tickets/e8f5cf.md @@ -3,5 +3,5 @@ title = "Test suite: router ordering — verify /api/quotes/random is not matche priority = 6 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "6e829e"] +++ diff --git a/quotesdb/.nbd/tickets/ec118c.md b/quotesdb/.nbd/tickets/ec118c.md index 0f45244..bc15c41 100644 --- a/quotesdb/.nbd/tickets/ec118c.md +++ b/quotesdb/.nbd/tickets/ec118c.md @@ -3,7 +3,7 @@ title = "quotesdb" priority = 8 status = "todo" ticket_type = "project" -dependencies = ["f3dc74", "c3503b", "ce1e4f", "25c413"] +dependencies = ["ce1e4f", "f3dc74", "c3503b", "25c413"] +++ # QuotesDB Implementation Plan diff --git a/quotesdb/.nbd/tickets/efee79.md b/quotesdb/.nbd/tickets/efee79.md index bdbfbf5..a298dff 100644 --- a/quotesdb/.nbd/tickets/efee79.md +++ b/quotesdb/.nbd/tickets/efee79.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Correct cloudflare_workers_script resource name in current Clo priority = 7 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["25c413"] +++ diff --git a/quotesdb/.nbd/tickets/f3dc74.md b/quotesdb/.nbd/tickets/f3dc74.md index d702944..3c86edf 100644 --- a/quotesdb/.nbd/tickets/f3dc74.md +++ b/quotesdb/.nbd/tickets/f3dc74.md @@ -3,5 +3,5 @@ title = "quotesdb/api" priority = 7 status = "todo" ticket_type = "project" -dependencies = ["1f5bb5", "6e829e", "a5049d", "28e7d9", "886bfd", "2ce22e", "5dbb7d", "05f8ae", "5d9f5a", "b20b5a", "03bb91", "175382", "d792e2", "a6bce1", "08af7a"] +dependencies = [] +++ diff --git a/quotesdb/.nbd/tickets/f850c6.md b/quotesdb/.nbd/tickets/f850c6.md index 4c687a1..741500c 100644 --- a/quotesdb/.nbd/tickets/f850c6.md +++ b/quotesdb/.nbd/tickets/f850c6.md @@ -3,5 +3,5 @@ title = "Implement auth code modal/prompt component — dialog requesting X-Auth priority = 5 status = "todo" ticket_type = "task" -dependencies = ["04f865", "0bc655"] +dependencies = ["c3503b", "93515e", "0bc655"] +++ diff --git a/quotesdb/.nbd/tickets/f9f448.md b/quotesdb/.nbd/tickets/f9f448.md index 1b29175..d11a155 100644 --- a/quotesdb/.nbd/tickets/f9f448.md +++ b/quotesdb/.nbd/tickets/f9f448.md @@ -3,5 +3,5 @@ title = "Test suite: GET /api/quotes/:id — 200 with quote, 404 not found, sche priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "5dbb7d"] +++ diff --git a/quotesdb/.nbd/tickets/fae330.md b/quotesdb/.nbd/tickets/fae330.md index 6eaeba8..601bd17 100644 --- a/quotesdb/.nbd/tickets/fae330.md +++ b/quotesdb/.nbd/tickets/fae330.md @@ -3,5 +3,5 @@ title = "Test suite: POST /api/quotes/:id — valid auth 200, wrong auth 403, no priority = 5 status = "todo" ticket_type = "task" -dependencies = ["9b581f"] +dependencies = ["ce1e4f", "9b581f", "5d9f5a"] +++ diff --git a/quotesdb/.nbd/tickets/fba598.md b/quotesdb/.nbd/tickets/fba598.md index d1759e5..7607d8e 100644 --- a/quotesdb/.nbd/tickets/fba598.md +++ b/quotesdb/.nbd/tickets/fba598.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Integration test isolation strategy — per-test temp DB vs sh priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["ce1e4f"] +++ diff --git a/quotesdb/.nbd/tickets/fc2f51.md b/quotesdb/.nbd/tickets/fc2f51.md index 06ebb0c..c976798 100644 --- a/quotesdb/.nbd/tickets/fc2f51.md +++ b/quotesdb/.nbd/tickets/fc2f51.md @@ -3,5 +3,5 @@ title = "Implement error display component — consistent error state UI across priority = 4 status = "todo" ticket_type = "task" -dependencies = ["04f865"] +dependencies = ["c3503b", "93515e"] +++ diff --git a/quotesdb/.nbd/tickets/fc9bfd.md b/quotesdb/.nbd/tickets/fc9bfd.md index 75e2f9d..2bbf90f 100644 --- a/quotesdb/.nbd/tickets/fc9bfd.md +++ b/quotesdb/.nbd/tickets/fc9bfd.md @@ -3,5 +3,5 @@ title = "[TRIAGE] Cloudflare Pages build strategy — Pages CI build vs pre-buil priority = 8 status = "todo" ticket_type = "task" -dependencies = [] +dependencies = ["25c413"] +++ diff --git a/quotesdb/CLAUDE.md b/quotesdb/CLAUDE.md index 0b3063a..65343ba 100644 --- a/quotesdb/CLAUDE.md +++ b/quotesdb/CLAUDE.md @@ -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 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 ``` +For API spec changes: +```sh +redocly lint api/openapi.yaml +``` + For infra tickets: ```sh tofu validate