diff --git a/.gitignore b/.gitignore index 916145e..55a6654 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,6 @@ gate2-*.png # Operator-only credential seed (run out-of-band; never tracked) apps/api/scripts/seed-credential.mjs + +# Graphify build cache (regenerable; committed artifacts live in .planning/graphs/) +graphify-out/ diff --git a/.planning/graphs/GRAPH_REPORT.md b/.planning/graphs/GRAPH_REPORT.md new file mode 100644 index 0000000..5b81d34 --- /dev/null +++ b/.planning/graphs/GRAPH_REPORT.md @@ -0,0 +1,973 @@ +# Graph Report - familysync (2026-06-09) + +## Corpus Check +- 205 files · ~256,858 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 2182 nodes · 2228 edges · 210 communities (185 shown, 25 thin omitted) +- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS · INFERRED: 5 edges (avg confidence: 0.8) +- Token cost: 0 input · 0 output + +## Graph Freshness +- Built from commit: `00cbbb41` +- Run `git rev-parse HEAD` and compare to check if the graph is stale. +- Run `graphify update .` after code changes (no API cost). + +## Community Hubs (Navigation) +- [[_COMMUNITY_Community 0|Community 0]] +- [[_COMMUNITY_Community 1|Community 1]] +- [[_COMMUNITY_Community 2|Community 2]] +- [[_COMMUNITY_Community 3|Community 3]] +- [[_COMMUNITY_Community 4|Community 4]] +- [[_COMMUNITY_Community 5|Community 5]] +- [[_COMMUNITY_Community 6|Community 6]] +- [[_COMMUNITY_Community 7|Community 7]] +- [[_COMMUNITY_Community 8|Community 8]] +- [[_COMMUNITY_Community 9|Community 9]] +- [[_COMMUNITY_Community 10|Community 10]] +- [[_COMMUNITY_Community 11|Community 11]] +- [[_COMMUNITY_Community 12|Community 12]] +- [[_COMMUNITY_Community 13|Community 13]] +- [[_COMMUNITY_Community 14|Community 14]] +- [[_COMMUNITY_Community 15|Community 15]] +- [[_COMMUNITY_Community 16|Community 16]] +- [[_COMMUNITY_Community 17|Community 17]] +- [[_COMMUNITY_Community 18|Community 18]] +- [[_COMMUNITY_Community 19|Community 19]] +- [[_COMMUNITY_Community 20|Community 20]] +- [[_COMMUNITY_Community 21|Community 21]] +- [[_COMMUNITY_Community 22|Community 22]] +- [[_COMMUNITY_Community 23|Community 23]] +- [[_COMMUNITY_Community 24|Community 24]] +- [[_COMMUNITY_Community 25|Community 25]] +- [[_COMMUNITY_Community 26|Community 26]] +- [[_COMMUNITY_Community 27|Community 27]] +- [[_COMMUNITY_Community 28|Community 28]] +- [[_COMMUNITY_Community 29|Community 29]] +- [[_COMMUNITY_Community 30|Community 30]] +- [[_COMMUNITY_Community 31|Community 31]] +- [[_COMMUNITY_Community 32|Community 32]] +- [[_COMMUNITY_Community 33|Community 33]] +- [[_COMMUNITY_Community 34|Community 34]] +- [[_COMMUNITY_Community 35|Community 35]] +- [[_COMMUNITY_Community 36|Community 36]] +- [[_COMMUNITY_Community 37|Community 37]] +- [[_COMMUNITY_Community 38|Community 38]] +- [[_COMMUNITY_Community 39|Community 39]] +- [[_COMMUNITY_Community 40|Community 40]] +- [[_COMMUNITY_Community 41|Community 41]] +- [[_COMMUNITY_Community 42|Community 42]] +- [[_COMMUNITY_Community 43|Community 43]] +- [[_COMMUNITY_Community 44|Community 44]] +- [[_COMMUNITY_Community 45|Community 45]] +- [[_COMMUNITY_Community 46|Community 46]] +- [[_COMMUNITY_Community 47|Community 47]] +- [[_COMMUNITY_Community 48|Community 48]] +- [[_COMMUNITY_Community 49|Community 49]] +- [[_COMMUNITY_Community 50|Community 50]] +- [[_COMMUNITY_Community 51|Community 51]] +- [[_COMMUNITY_Community 52|Community 52]] +- [[_COMMUNITY_Community 53|Community 53]] +- [[_COMMUNITY_Community 54|Community 54]] +- [[_COMMUNITY_Community 55|Community 55]] +- [[_COMMUNITY_Community 56|Community 56]] +- [[_COMMUNITY_Community 57|Community 57]] +- [[_COMMUNITY_Community 58|Community 58]] +- [[_COMMUNITY_Community 59|Community 59]] +- [[_COMMUNITY_Community 60|Community 60]] +- [[_COMMUNITY_Community 61|Community 61]] +- [[_COMMUNITY_Community 62|Community 62]] +- [[_COMMUNITY_Community 63|Community 63]] +- [[_COMMUNITY_Community 64|Community 64]] +- [[_COMMUNITY_Community 65|Community 65]] +- [[_COMMUNITY_Community 66|Community 66]] +- [[_COMMUNITY_Community 67|Community 67]] +- [[_COMMUNITY_Community 68|Community 68]] +- [[_COMMUNITY_Community 69|Community 69]] +- [[_COMMUNITY_Community 70|Community 70]] +- [[_COMMUNITY_Community 71|Community 71]] +- [[_COMMUNITY_Community 72|Community 72]] +- [[_COMMUNITY_Community 73|Community 73]] +- [[_COMMUNITY_Community 74|Community 74]] +- [[_COMMUNITY_Community 75|Community 75]] +- [[_COMMUNITY_Community 76|Community 76]] +- [[_COMMUNITY_Community 77|Community 77]] +- [[_COMMUNITY_Community 78|Community 78]] +- [[_COMMUNITY_Community 79|Community 79]] +- [[_COMMUNITY_Community 80|Community 80]] +- [[_COMMUNITY_Community 81|Community 81]] +- [[_COMMUNITY_Community 82|Community 82]] +- [[_COMMUNITY_Community 83|Community 83]] +- [[_COMMUNITY_Community 84|Community 84]] +- [[_COMMUNITY_Community 85|Community 85]] +- [[_COMMUNITY_Community 86|Community 86]] +- [[_COMMUNITY_Community 87|Community 87]] +- [[_COMMUNITY_Community 88|Community 88]] +- [[_COMMUNITY_Community 89|Community 89]] +- [[_COMMUNITY_Community 90|Community 90]] +- [[_COMMUNITY_Community 91|Community 91]] +- [[_COMMUNITY_Community 92|Community 92]] +- [[_COMMUNITY_Community 93|Community 93]] +- [[_COMMUNITY_Community 94|Community 94]] +- [[_COMMUNITY_Community 95|Community 95]] +- [[_COMMUNITY_Community 96|Community 96]] +- [[_COMMUNITY_Community 97|Community 97]] +- [[_COMMUNITY_Community 98|Community 98]] +- [[_COMMUNITY_Community 99|Community 99]] +- [[_COMMUNITY_Community 100|Community 100]] +- [[_COMMUNITY_Community 101|Community 101]] +- [[_COMMUNITY_Community 102|Community 102]] +- [[_COMMUNITY_Community 103|Community 103]] +- [[_COMMUNITY_Community 104|Community 104]] +- [[_COMMUNITY_Community 105|Community 105]] +- [[_COMMUNITY_Community 106|Community 106]] +- [[_COMMUNITY_Community 107|Community 107]] +- [[_COMMUNITY_Community 108|Community 108]] +- [[_COMMUNITY_Community 109|Community 109]] +- [[_COMMUNITY_Community 110|Community 110]] +- [[_COMMUNITY_Community 111|Community 111]] +- [[_COMMUNITY_Community 112|Community 112]] +- [[_COMMUNITY_Community 113|Community 113]] +- [[_COMMUNITY_Community 114|Community 114]] +- [[_COMMUNITY_Community 115|Community 115]] +- [[_COMMUNITY_Community 116|Community 116]] +- [[_COMMUNITY_Community 117|Community 117]] +- [[_COMMUNITY_Community 118|Community 118]] +- [[_COMMUNITY_Community 119|Community 119]] +- [[_COMMUNITY_Community 120|Community 120]] +- [[_COMMUNITY_Community 121|Community 121]] +- [[_COMMUNITY_Community 122|Community 122]] +- [[_COMMUNITY_Community 123|Community 123]] +- [[_COMMUNITY_Community 124|Community 124]] +- [[_COMMUNITY_Community 125|Community 125]] +- [[_COMMUNITY_Community 126|Community 126]] +- [[_COMMUNITY_Community 127|Community 127]] +- [[_COMMUNITY_Community 128|Community 128]] +- [[_COMMUNITY_Community 129|Community 129]] +- [[_COMMUNITY_Community 130|Community 130]] +- [[_COMMUNITY_Community 131|Community 131]] +- [[_COMMUNITY_Community 132|Community 132]] +- [[_COMMUNITY_Community 133|Community 133]] +- [[_COMMUNITY_Community 134|Community 134]] +- [[_COMMUNITY_Community 135|Community 135]] +- [[_COMMUNITY_Community 136|Community 136]] +- [[_COMMUNITY_Community 137|Community 137]] +- [[_COMMUNITY_Community 138|Community 138]] +- [[_COMMUNITY_Community 139|Community 139]] +- [[_COMMUNITY_Community 140|Community 140]] +- [[_COMMUNITY_Community 141|Community 141]] +- [[_COMMUNITY_Community 142|Community 142]] +- [[_COMMUNITY_Community 143|Community 143]] +- [[_COMMUNITY_Community 144|Community 144]] +- [[_COMMUNITY_Community 145|Community 145]] +- [[_COMMUNITY_Community 146|Community 146]] +- [[_COMMUNITY_Community 147|Community 147]] +- [[_COMMUNITY_Community 148|Community 148]] +- [[_COMMUNITY_Community 149|Community 149]] +- [[_COMMUNITY_Community 150|Community 150]] +- [[_COMMUNITY_Community 151|Community 151]] +- [[_COMMUNITY_Community 152|Community 152]] +- [[_COMMUNITY_Community 153|Community 153]] +- [[_COMMUNITY_Community 154|Community 154]] +- [[_COMMUNITY_Community 155|Community 155]] +- [[_COMMUNITY_Community 156|Community 156]] +- [[_COMMUNITY_Community 157|Community 157]] +- [[_COMMUNITY_Community 158|Community 158]] +- [[_COMMUNITY_Community 159|Community 159]] +- [[_COMMUNITY_Community 160|Community 160]] +- [[_COMMUNITY_Community 161|Community 161]] +- [[_COMMUNITY_Community 162|Community 162]] +- [[_COMMUNITY_Community 163|Community 163]] +- [[_COMMUNITY_Community 164|Community 164]] +- [[_COMMUNITY_Community 165|Community 165]] +- [[_COMMUNITY_Community 166|Community 166]] +- [[_COMMUNITY_Community 167|Community 167]] +- [[_COMMUNITY_Community 168|Community 168]] +- [[_COMMUNITY_Community 169|Community 169]] +- [[_COMMUNITY_Community 170|Community 170]] +- [[_COMMUNITY_Community 171|Community 171]] +- [[_COMMUNITY_Community 172|Community 172]] +- [[_COMMUNITY_Community 173|Community 173]] +- [[_COMMUNITY_Community 174|Community 174]] +- [[_COMMUNITY_Community 175|Community 175]] +- [[_COMMUNITY_Community 176|Community 176]] +- [[_COMMUNITY_Community 177|Community 177]] +- [[_COMMUNITY_Community 178|Community 178]] +- [[_COMMUNITY_Community 179|Community 179]] +- [[_COMMUNITY_Community 180|Community 180]] +- [[_COMMUNITY_Community 181|Community 181]] +- [[_COMMUNITY_Community 182|Community 182]] +- [[_COMMUNITY_Community 183|Community 183]] +- [[_COMMUNITY_Community 184|Community 184]] +- [[_COMMUNITY_Community 185|Community 185]] +- [[_COMMUNITY_Community 186|Community 186]] +- [[_COMMUNITY_Community 187|Community 187]] +- [[_COMMUNITY_Community 188|Community 188]] +- [[_COMMUNITY_Community 189|Community 189]] +- [[_COMMUNITY_Community 190|Community 190]] +- [[_COMMUNITY_Community 191|Community 191]] +- [[_COMMUNITY_Community 193|Community 193]] +- [[_COMMUNITY_Community 194|Community 194]] +- [[_COMMUNITY_Community 195|Community 195]] + +## God Nodes (most connected - your core abstractions) +1. `workflow` - 32 edges +2. `Phase 4: Shared Lists + Live Sync — Research` - 29 edges +3. `Phase 3: Event Write-Back + PWA Install — Research` - 27 edges +4. `Phase 2: Calendar Display - Research` - 20 edges +5. `Phase 1: Foundation + Broker Spike — Research` - 19 edges +6. `Critical Pitfalls` - 19 edges +7. `Pattern Assignments` - 18 edges +8. `Phase 2 — UI Design Contract` - 18 edges +9. `Dev` - 16 edges +10. `compilerOptions` - 15 edges + +## Surprising Connections (you probably didn't know these) +- `loadClientForUser()` --calls--> `createFastmailClient()` [EXTRACTED] + apps/api/src/broker/outboxWorker.ts → apps/api/src/broker/client.ts +- `main()` --calls--> `createFastmailClient()` [EXTRACTED] + apps/api/src/broker/spike.ts → apps/api/src/broker/client.ts +- `loadClientForUser()` --calls--> `decryptPassword()` [EXTRACTED] + apps/api/src/broker/outboxWorker.ts → apps/api/src/broker/crypto.ts +- `runPoll()` --calls--> `decryptPassword()` [EXTRACTED] + apps/api/src/broker/poller.ts → apps/api/src/broker/crypto.ts +- `triggerTargetedResync()` --calls--> `syncCalendar()` [EXTRACTED] + apps/api/src/broker/outboxWorker.ts → apps/api/src/broker/sync.ts + +## Import Cycles +- None detected. + +## Communities (210 total, 25 thin omitted) + +### Community 0 - "Community 0" +Cohesion: 0.05 +Nodes (43): 60 / 30 / 10 split, Agenda view (default: phone), AgendaRow, AppNav, Base palette, Breakpoints, Calendar config constant, Calendar Display (+35 more) + +### Community 1 - "Community 1" +Cohesion: 0.06 +Nodes (35): dependencies, ical.js, lucide-react, react, react-dom, @schedule-x/calendar, @schedule-x/calendar-controls, @schedule-x/event-modal (+27 more) + +### Community 2 - "Community 2" +Cohesion: 0.06 +Nodes (35): Advanced: Multiple Cookies or Custom Options, Advanced: Multiple Operations, Authentication State Reuse, Clear All Cookies, Clear All localStorage, Clear sessionStorage, Common Patterns, Cookies (+27 more) + +### Community 3 - "Community 3" +Cohesion: 0.06 +Nodes (34): Accessibility Baseline, `AddItemInput`, Bottom Tab Bar (phone, ≤767px), `BottomTabBar`, Checked-Off Sink Behavior (D-05), Checker Sign-Off, Color, Component Inventory (+26 more) + +### Community 4 - "Community 4" +Cohesion: 0.06 +Nodes (31): Android install, CalendarPicker (within EventForm — conditional, D-02), Checker Sign-Off, Color, Component Inventory, Copywriting Contract, Delete interaction, DeleteConfirmationDialog (new component) (+23 more) + +### Community 5 - "Community 5" +Cohesion: 0.06 +Nodes (31): dependencies, drizzle-orm, hono, @hono/node-server, @hono/oidc-auth, @hono/zod-validator, ical.js, mysql2 (+23 more) + +### Community 6 - "Community 6" +Cohesion: 0.06 +Nodes (32): workflow, ai_integration_phase, auto_advance, _auto_chain_active, auto_prune_state, code_review, code_review_command, code_review_depth (+24 more) + +### Community 7 - "Community 7" +Cohesion: 0.06 +Nodes (31): Anti-Pattern 1: Fetching from Fastmail on Every Calendar Request, Anti-Pattern 2: Using Email as the App User Key, Anti-Pattern 3: Storing Recurring Events Only as Expanded Instances, Anti-Pattern 4: Separate Microservices for Broker, Lists, Push, Anti-Pattern 5: Per-User CalDAV Credentials in the PWA, Anti-Patterns, Architectural Patterns, Architecture Research (+23 more) + +### Community 8 - "Community 8" +Cohesion: 0.06 +Nodes (30): `apps/api/src/auth/devBypass.ts` (middleware — new file), `apps/api/src/broker/expand.ts` (utility, transform — new file), `apps/api/src/db/schema.ts` (model — modify existing), `apps/api/src/index.ts` (config — modify existing), `apps/api/src/routes/events.ts` (route, request-response — modify existing), `apps/api/tests/broker/expand.test.ts` (test — new file), `apps/api/tests/routes/events.test.ts` (test — new file), `apps/pwa/src/api/client.ts` (utility, request-response — modify existing) (+22 more) + +### Community 9 - "Community 9" +Cohesion: 0.07 +Nodes (29): 401 Guard Pattern, `apps/api/src/db/schema.ts` (model, CRUD — append new tables), `apps/api/src/index.ts` (config, modify), `apps/api/src/lib/listEmitter.ts` (utility, event-driven), `apps/api/src/routes/lists.ts` (route, CRUD), `apps/api/src/routes/sse.ts` (route, streaming — extend existing), `apps/pwa/src/api/listsClient.ts` (utility, request-response), `apps/pwa/src/App.tsx` (component, modify) (+21 more) + +### Community 10 - "Community 10" +Cohesion: 0.07 +Nodes (29): Critical Pitfalls, Integration Gotchas, "Looks Done But Isn't" Checklist, Performance Traps, Pitfall 10: Declarative Web Push vs Standard Web Push — Choose the Right Target, Pitfall 11: EU Digital Markets Act Breaks iOS PWA Entirely for EU Users, Pitfall 12: Service Worker Caching Serves Stale Calendar Data, Pitfall 13: Service Worker Update Staleness — App Never Updates for the Wife (+21 more) + +### Community 11 - "Community 11" +Cohesion: 0.07 +Nodes (27): Alternatives Considered, Architecture, Authelia OIDC Integration, Backend, Backend Framework, Browser-based verification, Calendar Integration: CalDAV, Not JMAP, Constraints (+19 more) + +### Community 12 - "Community 12" +Cohesion: 0.14 +Nodes (19): BACKOFF_SECONDS, DispatchResult, dispatchRow(), HARD_FAIL_STATUSES, loadClientForUser(), OutboxPayloadFields, outboxPayloadSchema, OutboxRow (+11 more) + +### Community 13 - "Community 13" +Cohesion: 0.08 +Nodes (23): `apps/api/src/broker/outboxWorker.ts` — new file, outbox drain loop, `apps/api/src/broker/vevent.ts` — new file, ical.js VEVENT builder, `apps/api/src/broker/write.ts` — new file, tsdav PUT/DELETE wrapper, `apps/api/src/db/schema.ts` — add `calendarOutbox` table + `objectUrl` column on `calendarEvents`, `apps/api/src/routes/events.ts` — extend with write endpoints + sync-status, `apps/pwa/src/api/client.ts` — add write calls + sync-status poll, `apps/pwa/src/components/EventDetailPopover.tsx` — add edit/delete to reserved footer, `apps/pwa/src/components/EventForm.tsx` — new file, create/edit form (+15 more) + +### Community 14 - "Community 14" +Cohesion: 0.08 +Nodes (23): Browser Automation with playwright-cli, Browser Sessions, Commands, Core, DevTools, Example: Debugging with DevTools, Example: Form submission, Example: Interactive session (+15 more) + +### Community 15 - "Community 15" +Cohesion: 0.09 +Nodes (22): Canonical References, Claude's Discretion (deferred to research/planner), Deferred Ideas, Entry gate & transport, Established Patterns, Existing Code Insights, Implementation Decisions, Integration Points (+14 more) + +### Community 16 - "Community 16" +Cohesion: 0.14 +Nodes (18): createEvent(), CreateEventPayload, CreateEventResponse, fetchSyncStatus(), fetchWritableCalendars(), MeResponse, MeUser, OccurrencesResponse (+10 more) + +### Community 17 - "Community 17" +Cohesion: 0.16 +Nodes (14): ContextVariableMap, DEV_USER, devAuthBypass(), claimStr(), deriveDisplayName(), upsertUser(), eventFieldsSchema, eventsQuerySchema (+6 more) + +### Community 18 - "Community 18" +Cohesion: 0.09 +Nodes (21): Backlog, Overview, Phase 1: Foundation + Broker Spike, Phase 2: Calendar Display, Phase 3: Event Write-Back + PWA Install, Phase 4: Shared Lists + Live Sync, Phase 5: Web Push Notifications, Phase 6: UX Polish (+13 more) + +### Community 19 - "Community 19" +Cohesion: 0.09 +Nodes (21): Architecture Approach, Confidence Assessment, Critical Pitfalls, Executive Summary, Expected Features, Gaps to Address, Implications for Roadmap, Key Findings (+13 more) + +### Community 20 - "Community 20" +Cohesion: 0.10 +Nodes (20): Canonical References, Claude's Discretion, Color & ownership legibility, Deferred Ideas, Dev-auth bypass (from D-14, project-level), Established Patterns, Event detail density, Existing Code Insights (+12 more) + +### Community 21 - "Community 21" +Cohesion: 0.10 +Nodes (20): CR-01: Event edit/delete ownership check resolves an arbitrary member's row (uid-only lookup), CR-02: Outbox WR-02 "freshest etag" re-read also queries uid-only — can pick the wrong member's etag, CR-03: All-day end date is exclusive on write but inclusive on edit pre-fill — span grows one day per re-edit, Critical Issues, IN-01: `triggerTargetedResync` re-loads and re-decrypts the credential per row, IN-02: Unknown-status responses retried for the full backoff window before giving up, IN-03: `InstallPrompt` reads `localStorage` synchronously in `useState` initializer without try/catch, IN-04: `resolveUserId` typed as `any` (+12 more) + +### Community 22 - "Community 22" +Cohesion: 0.10 +Nodes (20): 1. Name Browser Sessions Semantically, 2. Always Clean Up, 3. Delete Stale Browser Data, A/B Testing Sessions, Attach by channel name, Attach via browser extension, Attach via CDP endpoint, Attaching to a Running Browser (+12 more) + +### Community 23 - "Community 23" +Cohesion: 0.10 +Nodes (19): Canonical References, Claude's Discretion, Deferred Ideas, Established Patterns, Existing Code Insights, External docs (authoritative), Implementation Decisions, Infrastructure & Deployment Scope (+11 more) + +### Community 24 - "Community 24" +Cohesion: 0.10 +Nodes (19): Architectural Responsibility Map, Assumptions Log, Don't Hand-Roll, Environment Availability, Metadata, Open Questions (RESOLVED), Package Legitimacy Audit, Pattern 1: Building a VEVENT with ical.js (new file: `broker/vevent.ts`) (+11 more) + +### Community 25 - "Community 25" +Cohesion: 0.10 +Nodes (19): Anti-Patterns, Architectural Constraints, Architecture, Caching tsdav clients across polls, Calendar Sync (Background Poller → syncCalendar), Component Responsibilities, Data Flow, Direct Fastmail calls from routes (+11 more) + +### Community 26 - "Community 26" +Cohesion: 0.10 +Nodes (19): agent_skills, brave_search, claude_md_path, commit_docs, exa_search, firecrawl, granularity, hooks (+11 more) + +### Community 27 - "Community 27" +Cohesion: 0.11 +Nodes (18): blockers, completed_tasks, context_notes, decisions, human_actions_pending, next_action, phase, phase_dir (+10 more) + +### Community 28 - "Community 28" +Cohesion: 0.11 +Nodes (18): 1.1 Prerequisite: workspace, 1.2 Prerequisite: seed test, 1.3 Explore the app, 1.4 Write the spec file, 1. Planning, 2.1 Inputs, 2.2 Generate one scenario, 2.3 Generate multiple scenarios (+10 more) + +### Community 29 - "Community 29" +Cohesion: 0.11 +Nodes (17): Accomplishments, Auto-fixed Issues, Decisions Made, Dependency graph, Deviations from Plan, Files Created/Modified, Issues Encountered, Known Stubs (+9 more) + +### Community 30 - "Community 30" +Cohesion: 0.11 +Nodes (17): 1. Color-coded event rendering, 2. All four views render events correctly, 3. Recurring events — DST boundary (CAL-07), 4. All-day events — no date shift (CAL-07), Anti-Patterns Found, Behavioral Spot-Checks, Data-Flow Trace (Level 4), Deferred Items (+9 more) + +### Community 31 - "Community 31" +Cohesion: 0.11 +Nodes (17): Canonical References, Carried forward — locked, NOT re-discussed, Claude's Discretion (researcher / planner decide), Code this phase extends, Deferred Ideas, Established Patterns, Existing Code Insights, Implementation Decisions (+9 more) + +### Community 32 - "Community 32" +Cohesion: 0.11 +Nodes (17): CR-01: Event edit/delete ownership check resolves an arbitrary member's row (uid-only lookup), CR-02: Outbox WR-02 "freshest etag" re-read also queries uid-only, CR-03: All-day end date exclusive on write but inclusive on edit pre-fill, Fixed Issues, IN-01: `triggerTargetedResync` re-loads and re-decrypts the credential per row, IN-02: Unknown-status responses retried for the full backoff window before giving up, IN-03: `InstallPrompt` reads `localStorage` synchronously without try/catch, IN-04: `resolveUserId` typed as `any` (+9 more) + +### Community 33 - "Community 33" +Cohesion: 0.11 +Nodes (17): compilerOptions, declaration, declarationMap, esModuleInterop, forceConsistentCasingInFileNames, lib, module, moduleResolution (+9 more) + +### Community 34 - "Community 34" +Cohesion: 0.12 +Nodes (16): Accomplishments, Decisions Made, Dependency graph, Deviations from Plan, Files Created/Modified, Issues Encountered, Known Stubs, Metrics (+8 more) + +### Community 35 - "Community 35" +Cohesion: 0.12 +Nodes (16): Accomplishments, Dependency graph, Deviations from Plan, Files Created/Modified, Known Stubs, Live Verification Pending (Tasks 2 + 3), Metrics, Performance (+8 more) + +### Community 36 - "Community 36" +Cohesion: 0.12 +Nodes (16): 1. AUTH-01 — Authelia OIDC Login (Member 1: Lucas), 2. AUTH-02 — Session Persistence Across Browser Restart, 3. AUTH-03 — Cross-Member Distinct Color (Member 2: Wife), 4. SSE Smoke Test — Pangolin Pass-Through (D-08), Anti-Patterns Found, Behavioral Spot-Checks, Data-Flow Trace (Level 4), Gaps Summary (+8 more) + +### Community 37 - "Community 37" +Cohesion: 0.12 +Nodes (16): Accomplishments, Decisions Made, Dependency graph, Deviations from Plan, Files Created/Modified, Known Stubs, Metrics, Performance (+8 more) + +### Community 38 - "Community 38" +Cohesion: 0.12 +Nodes (16): Architectural Responsibility Map, Assumptions Log, Don't Hand-Roll, Entry Gate Status: CLEARED, Environment Availability, Metadata, Open Questions, Package Legitimacy Audit (+8 more) + +### Community 39 - "Community 39" +Cohesion: 0.12 +Nodes (16): 1. Start Tracing Before the Problem, 2. Clean Up Old Traces, Analyzing Performance, Basic Usage, Best Practices, Capturing Evidence, Debugging Failed Actions, Limitations (+8 more) + +### Community 40 - "Community 40" +Cohesion: 0.12 +Nodes (16): Alternatives Considered, Authelia OIDC Integration, Backend Framework, Calendar Integration: CalDAV, Not JMAP, Core Technologies, Development Tools, Installation, Live List Sync (+8 more) + +### Community 41 - "Community 41" +Cohesion: 0.12 +Nodes (15): Accomplishments, Auto-fixed Issues, Decisions Made, Dependency graph, Deviations from Plan, Files Created/Modified, Known Stubs, Metrics (+7 more) + +### Community 42 - "Community 42" +Cohesion: 0.12 +Nodes (15): 1. Register FamilySync as an Authelia OIDC confidential client, 2. Set OIDC_AUTH_EXTERNAL_URL in the app's .env, 3. Expose via Pangolin / Newt (Mode A local rig), 4. Apply database schema (first deploy only), 5. Bring up the app and confirm /health over the tunnel, Gate 2 Checklist, Header, /health Tunnel Verification (+7 more) + +### Community 43 - "Community 43" +Cohesion: 0.23 +Nodes (11): createFastmailClient(), FastmailClient, runPoll(), startBrokerPoller(), main(), syncCalendar(), calendarEvents, calendarOutbox (+3 more) + +### Community 44 - "Community 44" +Cohesion: 0.13 +Nodes (14): Accomplishments, Decisions Made, Dependency graph, Deviations from Plan, Files Created/Modified, Known Stubs, Metrics, Operator Setup Required (Authelia Client Registration) (+6 more) + +### Community 45 - "Community 45" +Cohesion: 0.13 +Nodes (14): Accomplishments, Decisions Made, Dependency graph, Deviations from Plan, Files Created/Modified, Issues Encountered, Metrics, Next Phase Readiness (+6 more) + +### Community 46 - "Community 46" +Cohesion: 0.13 +Nodes (14): Accomplishments, Auto-fixed Issues, Decisions Made, Dependency graph, Deviations from Plan, Files Created, Known Stubs, Metrics (+6 more) + +### Community 47 - "Community 47" +Cohesion: 0.13 +Nodes (14): Accomplishments, Auto-fixed Issues, Decisions Made, Deviations from Plan, Files Created/Modified, Issues Encountered, Known Stubs, Next Phase Readiness (+6 more) + +### Community 48 - "Community 48" +Cohesion: 0.13 +Nodes (14): Accomplishments, Auto-fixed Issues, Decisions Made, Deviations from Plan, Files Created/Modified, Issues Closed, Issues Encountered, Known Stubs (+6 more) + +### Community 49 - "Community 49" +Cohesion: 0.13 +Nodes (14): Auto-fixed Issues, Deviations from Plan, IN-03: todayIso exported from calendarStore, Issues Closed, Phase 03 Plan 12: EventForm Gap Closure — Edit Mode, Focus Trap, PWA Assets Summary, PWA-01/PWA-02: Install assets confirmed present (IN-04), Self-Check: PASSED, Tasks Completed (+6 more) + +### Community 50 - "Community 50" +Cohesion: 0.13 +Nodes (14): Behavior when the CalDAV write fails, Calendar selector visibility, Claude's Discretion, Default target calendar for a new event, Deferred Ideas, Edit-conflict (etag mismatch / 412) handling, How the member sees their own change after save (poll-based cache), Move event between calendars on edit (+6 more) + +### Community 51 - "Community 51" +Cohesion: 0.13 +Nodes (14): Auto-fixed Issues, BUG 1 — Missing join on PATCH/:uid/edit and DELETE/:uid (BLOCKING), BUG 2 — Blank displayName from weak OIDC claim reading, BUG 3 — GET /api/events returning all users' events, Bug Details, Deviations from Plan, Known Stubs, Operator Actions Required (+6 more) + +### Community 52 - "Community 52" +Cohesion: 0.16 +Nodes (11): fetchEvents(), fetchMe(), ALLDAY_OCCURRENCE, makeQueryClient(), mockEventsServiceSet, renderWithClient(), TIMED_OCCURRENCE, CalendarOccurrence (+3 more) + +### Community 53 - "Community 53" +Cohesion: 0.13 +Nodes (14): Dev-auth bypass (Phase 2+ local development), FamilySync — Deployment & Live-Verification Runbook, Gate 2 — Live verification checklist (`01-HUMAN-UAT.md`), Newt connector, Prerequisites (both modes), ⚠️ Same-parent-domain requirement (Pitfall 1), ⚠️ SSE idle timeout (Phase 4 dependency, issue #1034), Step 1 — Register the OIDC client in Authelia (+6 more) + +### Community 54 - "Community 54" +Cohesion: 0.13 +Nodes (14): compilerOptions, esModuleInterop, forceConsistentCasingInFileNames, jsx, lib, module, moduleResolution, noEmit (+6 more) + +### Community 55 - "Community 55" +Cohesion: 0.13 +Nodes (14): Add After Validation (v1.x), Anti-Features (Deliberately Exclude), Competitor Feature Analysis, Dependency Notes, Differentiators (Competitive Advantage for This Product), Feature Dependencies, Feature Landscape, Feature Prioritization Matrix (+6 more) + +### Community 56 - "Community 56" +Cohesion: 0.14 +Nodes (13): Area Selection, Broker access model, Claude's Discretion, Credential storage, Deferred Ideas, Deployment scope, Infra validation scope, Member color assignment (+5 more) + +### Community 57 - "Community 57" +Cohesion: 0.14 +Nodes (13): CR-01: Edit-as-move silently strips a recurring series' RRULE, Critical Issues, IN-01: `RRULE_PRESETS` round-trip is lossy for any parameterized RRULE, IN-02: `parseDateTime` silently rewrites a malformed edit value to today/09:00, IN-03: Unchecked `as` casts on JSON-parsed outbox payload fields, Info, Phase 3: Code Review Report (Re-Review, Iteration 2), Summary (+5 more) + +### Community 58 - "Community 58" +Cohesion: 0.14 +Nodes (13): Architectural Constraints & Anti-Patterns, Codebase Concerns, Dependencies at Risk, Fragile Areas, Infrastructure & Deployment Concerns, Known Bugs, Known Limitations (Documented as Design Decisions), Missing Critical Features (+5 more) + +### Community 59 - "Community 59" +Cohesion: 0.18 +Nodes (6): BeforeInstallPromptEvent, InstallPrompt(), IOS_STEPS, isIOSSafariNonStandalone(), useAndroidInstallPrompt(), WalkthroughSheetProps + +### Community 60 - "Community 60" +Cohesion: 0.14 +Nodes (13): BUG A — Event times written 4 hours off (local serialized as UTC), BUG A — write-path timezone serialization, BUG B — Created events attach to the wrong user's calendar; poller creates duplicate calendar rows, BUG B — wrong-calendar attach + duplicate calendar rows, Current Focus, Debug Session: write-path-event-bugs, Eliminated, Environment (+5 more) + +### Community 61 - "Community 61" +Cohesion: 0.27 +Nodes (9): buildCalendarConfig(), CalendarConfig, MemberCalendarConfig, ScheduleXCalendarEntry, deriveScheduleXColors(), hexToContainer(), hexToOnContainer(), hexToRgb() (+1 more) + +### Community 62 - "Community 62" +Cohesion: 0.14 +Nodes (13): Calendar → Fastmail (NOT self-hosted), Display + aggregation → custom app (the actual product), FamilySync Architecture Decisions, Frontend → React PWA, Household, Infrastructure, Lists → custom app backend (MariaDB), Net result (+5 more) + +### Community 63 - "Community 63" +Cohesion: 0.14 +Nodes (13): Authentication & Onboarding, Calendar, Calendar, Display, Lists, Notifications, Out of Scope, PWA & Install (+5 more) + +### Community 64 - "Community 64" +Cohesion: 0.14 +Nodes (13): Clipboard, Complex Workflows, Error Handling, File Downloads, Frames and Iframes, Geolocation, JavaScript Execution, Media Emulation (+5 more) + +### Community 65 - "Community 65" +Cohesion: 0.15 +Nodes (12): Auto-fixed Issues, Dev-Auth Bypass (Task 2), Deviations from Plan, ICS Fixtures (Task 1), Known Stubs, Phase 02 Plan 01: Foundation — Schema Columns, Test Harness, Dev-Auth Bypass Summary, PWA Test Harness (Task 1), RED Test Stubs (Task 1) (+4 more) + +### Community 66 - "Community 66" +Cohesion: 0.15 +Nodes (12): Auto-fixed Issues, Deviations from Plan, Human Verify Checkpoint (Task 3 — awaiting operator), Known Stubs, Phase 02 Plan 05: Calendar UX — Popover, Chrome, States Summary, Self-Check: PASSED, Task 1: EventDetailPopover + CalendarShell wiring (TDD), Task 2: Chrome components, state branches, EventProof retired (+4 more) + +### Community 67 - "Community 67" +Cohesion: 0.15 +Nodes (12): Auto-fixed Issues, Deviations from Plan, Known Stubs, Phase 03 Plan 06: Edit/Delete + SyncStateToast Summary, Self-Check: PASSED, Task 1 — Client calls + Zustand keys (RED: `8357cf9`, GREEN: `8aeacc8`), Task 2 — SyncStateToast (RED: `6874e1a`, GREEN: `aa7c4c3`), Task 3 — EventDetailPopover footer + DeleteConfirmationDialog (RED: `2fbeffe`, GREEN: `40322e1`) (+4 more) + +### Community 68 - "Community 68" +Cohesion: 0.15 +Nodes (12): Auto-fixed Issues, Decisions Made, Deviations from Plan, Infrastructure, Issues Closed, Known Stubs, Phase 03 Plan 10: Outbox Worker ICS Builder Wiring Summary, Self-Check: PASSED (+4 more) + +### Community 69 - "Community 69" +Cohesion: 0.15 +Nodes (9): mockDelete, mockDeleteWhere, mockFrom, mockInsert, mockLimit, mockOnDuplicateKeyUpdate, mockSelect, mockValues (+1 more) + +### Community 70 - "Community 70" +Cohesion: 0.15 +Nodes (12): Accumulated Context, Blockers/Concerns, Current Position, Decisions, Deferred Items, Pending Todos, Performance Metrics, Project Reference (+4 more) + +### Community 71 - "Community 71" +Cohesion: 0.17 +Nodes (11): Architectural Responsibility Map, Assumptions Log, Don't Hand-Roll, Environment Availability, Metadata, Open Questions (DEFERRED TO SPIKE — resolved empirically in Plan 01-04), Package Legitimacy Audit, Phase 1: Foundation + Broker Spike — Research (+3 more) + +### Community 72 - "Community 72" +Cohesion: 0.17 +Nodes (11): Auto-fixed Issues, Deviations from Plan, Known Stubs, Phase 02 Plan 03: PWA Foundation — Token Layer, Color Utils, Calendar Config, Hydration, Store Summary, Self-Check: PASSED, Task 1: Schedule-X Stack + Token Layer + main.tsx Import Order, Task 2: colorUtils + calendarConfig — RED Stubs Turned GREEN, Task 3: hydrateEvents + calendarStore + windowed fetchEvents — RED Stubs Turned GREEN (+3 more) + +### Community 73 - "Community 73" +Cohesion: 0.17 +Nodes (11): Architectural Responsibility Map, Assumptions Log, Don't Hand-Roll, Environment Availability, Metadata, Open Questions, Package Legitimacy Audit, Phase 2: Calendar Display - Research (+3 more) + +### Community 74 - "Community 74" +Cohesion: 0.17 +Nodes (11): Auto-fixed Issues, Deviations from Plan, Known Stubs, Phase 03 Plan 05: Event Write UI (EventForm + Client Calls) Summary, Self-Check: PASSED, Task 1: Typed write client calls + Zustand form-state keys, Task 2: EventForm modal, Task 3: Mount EventForm + "New Event" FAB/toolbar in CalendarShell (+3 more) + +### Community 75 - "Community 75" +Cohesion: 0.17 +Nodes (11): Auto-fixed Issues, Decisions Made, Deviations from Plan, Known Stubs, Phase 03 Plan 09: Route Schema + OIDC Resolution Fix Summary, Self-Check: PASSED, Tasks Completed, TDD Gate Compliance (+3 more) + +### Community 76 - "Community 76" +Cohesion: 0.17 +Nodes (11): Code Style, Coding Conventions, Comments, Database Patterns, Error Handling, Function Design, Import Organization, Logging (+3 more) + +### Community 77 - "Community 77" +Cohesion: 0.17 +Nodes (11): Common Patterns, Coverage, Fixtures and Factories, Known Testing Gaps, Mocking, Test File Organization, Test Framework, Test Setup (+3 more) + +### Community 78 - "Community 78" +Cohesion: 0.17 +Nodes (11): Active, Constraints, Context, Core Value, Evolution, FamilySync, Key Decisions, Out of Scope (+3 more) + +### Community 79 - "Community 79" +Cohesion: 0.18 +Nodes (10): Auto-fixed Issues, Deviations from Plan, Known Stubs, Phase 02 Plan 02: Windowed /api/events — Recurrence Expansion + Color Join Summary, Self-Check: PASSED, Task 1: expandOccurrences() — apps/api/src/broker/expand.ts, Task 2: Windowed /api/events — apps/api/src/routes/events.ts, Task 3: Shared-Family Calendar Marking — RESOLVED BY DEFERRAL (+2 more) + +### Community 80 - "Community 80" +Cohesion: 0.18 +Nodes (10): Auto-fixed Issues, Deviations from Plan, Known Stubs, Phase 02 Plan 04: CalendarShell — Schedule-X Mounted, Wired to Data Pipeline Summary, Self-Check: PASSED, Task 1: CalendarShell + App.tsx, Task 2: CalendarShell Render Smoke Test (CAL-03), Threat Flags (+2 more) + +### Community 81 - "Community 81" +Cohesion: 0.18 +Nodes (10): CR-01: Edit-as-move silently strips a recurring series' RRULE, Fixed Issues, IN-01: `RRULE_PRESETS` round-trip is lossy for parameterized RRULEs, IN-02: `parseDateTime` silently rewrites a malformed edit value to today/09:00, IN-03: Unchecked `as` casts on JSON-parsed outbox payload fields, Phase 3: Code Review Fix Report (Iteration 2), WR-01: Edit form provides no indication recurrence is locked, WR-02: `handleAllDayToggle` can leave end-date inconsistent (+2 more) + +### Community 82 - "Community 82" +Cohesion: 0.18 +Nodes (10): CR-01: Edit-as-move silently strips a recurring series' RRULE, Fixed Issues, IN-01: `RRULE_PRESETS` round-trip is lossy for parameterized RRULEs, IN-02: `parseDateTime` silently rewrites a malformed edit value to today/09:00, IN-03: Unchecked `as` casts on JSON-parsed outbox payload fields, Phase 3: Code Review Fix Report (Iteration 2), WR-01: Edit form provides no indication recurrence is locked, WR-02: `handleAllDayToggle` can leave end-date inconsistent (+2 more) + +### Community 83 - "Community 83" +Cohesion: 0.18 +Nodes (10): Claude's Discretion, Deferred Ideas, List & item behavior — Checked items & delete guard, List & item behavior — Privacy (refined), List & item behavior — Sharing, Lists navigation, Live feel & conflicts, Phase 4: Shared Lists + Live Sync - Discussion Log (+2 more) + +### Community 84 - "Community 84" +Cohesion: 0.18 +Nodes (10): Deviations from Plan, Known Stubs, Quick Task 260606-tv8: Fix Missing Sign-in Redirect in the PWA — Summary, Self-Check: PASSED, Task 1: GET /api/login backend route + tests (commit 237ec49), Task 2: One-shot login-redirect helper + tests (commit 6dc9ccd), Task 3: CalendarShell meQuery wiring (commit c2e0ab1), Threat Flags (+2 more) + +### Community 85 - "Community 85" +Cohesion: 0.25 +Nodes (9): CalendarOccurrence, EventDetailPopover(), formatDateTime(), ScheduleXEventModalProps, ALLDAY_OCCURRENCE, { + mockSetOpenEventId, + mockSetEventForm, + mockSetDeleteDialog, +}, OCCURRENCE_WITH_HTML, TIMED_OCCURRENCE (+1 more) + +### Community 86 - "Community 86" +Cohesion: 0.25 +Nodes (8): CalendarOccurrence, expandOccurrences(), formatUtcOffset(), makeOccurrenceId(), OccurrenceMeta, serializeTime(), __dirname, FIXTURES + +### Community 87 - "Community 87" +Cohesion: 0.29 +Nodes (6): CalendarShell(), isPhone(), resolveDefaultView(), clearLoginRedirect(), maybeRedirectToLogin(), locationStub + +### Community 88 - "Community 88" +Cohesion: 0.18 +Nodes (10): name, packageManager, private, scripts, build, dev:api, dev:pwa, lint (+2 more) + +### Community 89 - "Community 89" +Cohesion: 0.20 +Nodes (10): Anti-Patterns to Avoid, Architecture Patterns, Pattern 1: @hono/oidc-auth Middleware Wiring, Pattern 2: Drizzle/MariaDB Schema, Pattern 3: CalDAV Broker (tsdav), Pattern 4: AES-GCM App-Password Encryption, Pattern 5: Pangolin SSE Smoke Test, Pattern 6: Docker Compose Layout (+2 more) + +### Community 90 - "Community 90" +Cohesion: 0.20 +Nodes (9): IN-01: `RRULE_PRESETS` round-trip is lossy for any parameterized RRULE, IN-02: Move-path RRULE preservation depends silently on `rawVevent` being non-empty, Info, Iteration-2 fixes — verified, Phase 3: Code Review Report (Re-Review, Iteration 3 — final --auto pass), Summary, Warnings, WR-01: Missing cached etag still produces an unconditional PUT/DELETE (D-08 gap) (+1 more) + +### Community 91 - "Community 91" +Cohesion: 0.24 +Nodes (5): COLOR_PALETTE, mockDb, db, pool, healthRouter + +### Community 92 - "Community 92" +Cohesion: 0.20 +Nodes (9): mockCalendarsSelectResult, mockCreateFastmailClient, mockCredentialsSelectResult, mockFetchCalendars, mockSelect, mockSelectFrom, mockSelectLimit, mockSelectWhere (+1 more) + +### Community 93 - "Community 93" +Cohesion: 0.20 +Nodes (9): APIs & External Services, Authentication & Identity, CI/CD & Deployment, Data Storage, Environment Configuration, External Integrations, Monitoring & Observability, Network & Transport (+1 more) + +### Community 94 - "Community 94" +Cohesion: 0.22 +Nodes (5): AppNav(), AppNavProps, ColorLegend(), ColorLegendProps, LegendMember + +### Community 95 - "Community 95" +Cohesion: 0.22 +Nodes (8): 1. AUTH-01 — Live Authelia OIDC login over the public Pangolin URL, 2. AUTH-02 — Session persists across browser restart, 3. AUTH-03 — Second member gets a distinct color, 4. SSE-over-Pangolin smoke test (de-risks Phase 4), Current Test, Gaps, Summary, Tests + +### Community 96 - "Community 96" +Cohesion: 0.22 +Nodes (8): CAL-08: Personal Calendar ACL Spike — Decision Record, Calendars Discovered, Decision, How to Run the Spike, Notes, Questions Resolved, Results, Status + +### Community 97 - "Community 97" +Cohesion: 0.22 +Nodes (8): 1. Color-coded rendering, 2. All four views render + grid scrolls, 3. Recurring events across DST, 4. All-day banners — no date shift, Current Test, Gaps, Summary, Tests + +### Community 98 - "Community 98" +Cohesion: 0.22 +Nodes (9): Anti-Patterns to Avoid, Architecture Patterns, Pattern 1: `/api/events` Windowed Query with Expansion, Pattern 2: Schedule-X Event Format (Temporal, not ISO strings), Pattern 3: Schedule-X Calendar Configuration, Pattern 4: TanStack Query + onRangeUpdate Wiring, Pattern 5: Dev-Auth Bypass Middleware, Recommended Project Structure (+1 more) + +### Community 99 - "Community 99" +Cohesion: 0.22 +Nodes (8): Blocker bugs found + fixed live (all committed + deployed), Deferred / carried forward, Dependency graph, Outcome, Phase 03 Plan 08: Gate 2 Live Verification — Summary, Self-Check, Tech tracking, Verification method + +### Community 100 - "Community 100" +Cohesion: 0.22 +Nodes (8): Advanced Mocking with run-code, CLI Route Commands, Conditional Response Based on Request, Delayed Response, Modify Real Response, Request Mocking, Simulate Network Failures, URL Patterns + +### Community 101 - "Community 101" +Cohesion: 0.22 +Nodes (8): 1. Use Semantic Locators, 2. Explore Before Recording, 3. Add Assertions Manually, Best Practices, Building a Test File, Example Workflow, How It Works, Test Generation + +### Community 102 - "Community 102" +Cohesion: 0.22 +Nodes (8): 1. Use Descriptive Filenames, 2. Record entire hero scripts., Basic Recording, Best Practices, Limitations, Overlay API Summary, Tracing vs Video, Video Recording + +### Community 103 - "Community 103" +Cohesion: 0.22 +Nodes (8): Calendar host decision — RESOLVED, Email scope — RESOLVED, Open, Research Questions, Resolved, RQ-001 — Vikunja MariaDB compatibility — SUPERSEDED, RQ-002 — CalDAV server: Radicale vs Baikal — SUPERSEDED, RQ-003 — Fastmail calendar API: JMAP vs CalDAV + +### Community 104 - "Community 104" +Cohesion: 0.25 +Nodes (8): Common Pitfalls, Pitfall 1: OIDC_AUTH_EXTERNAL_URL Missing Behind Pangolin, Pitfall 2: All-Day Event DATE Stored as DATETIME, Pitfall 3: tsdav createDAVClient Requires Account Discovery Round-Trip, Pitfall 4: node-cron v4 vs v3 API Change, Pitfall 5: Drizzle `onDuplicateKeyUpdate` Requires MariaDB 10.3+, Pitfall 6: Fastmail ctag vs syncToken Field Availability, Pitfall 7: Authelia Client Secret — Plain vs Hashed + +### Community 105 - "Community 105" +Cohesion: 0.25 +Nodes (7): Manual-Only Verifications, Per-Task Verification Map, Phase 1 — Validation Strategy, Sampling Rate, Test Infrastructure, Validation Sign-Off, Wave 0 Requirements (created in Plan 01 Task 1) + +### Community 106 - "Community 106" +Cohesion: 0.25 +Nodes (7): Claude's Discretion, Color & shared-vs-personal, Default view & per-device, Deferred Ideas, Event detail density, Phase 2: Calendar Display - Discussion Log, Visual model → Theming architecture + +### Community 107 - "Community 107" +Cohesion: 0.25 +Nodes (8): Common Pitfalls, Pitfall 1: `firstDayOfWeek` Temporal Numbering Mismatch, Pitfall 2: All-Day Events Shifting by One Day, Pitfall 3: Missing VTIMEZONE Registration Causes DST-Shifted Occurrences, Pitfall 4: Schedule-X ISO String Events Silently Fail, Pitfall 5: Unwindowed `/api/events` Endpoint, Pitfall 6: `@schedule-x/react` Version Behind `@schedule-x/calendar`, Pitfall 7: Dev-Auth Bypass Active in Production + +### Community 108 - "Community 108" +Cohesion: 0.25 +Nodes (7): Manual-Only Verifications, Per-Task Verification Map, Phase 02 — Validation Strategy, Sampling Rate, Test Infrastructure, Validation Sign-Off, Wave 0 Requirements + +### Community 109 - "Community 109" +Cohesion: 0.25 +Nodes (8): Common Pitfalls, Pitfall 1: Service Worker intercepts `/callback` and breaks OIDC login, Pitfall 2: iOS standalone mode breaks on OIDC redirect to auth.DOMAIN, Pitfall 3: D-13 DATE vs DATETIME coercion in VEVENT building, Pitfall 4: ETag not returned after PUT on Fastmail, Pitfall 5: Edit-as-move (D-04) partial-failure, Pitfall 6: `navigateFallbackDenylist` not respected in dev mode, Pitfall 7: Outbox worker runs without a valid DAVCalendar object for re-sync + +### Community 110 - "Community 110" +Cohesion: 0.25 +Nodes (7): Manual-Only Verifications, Per-Task Verification Map, Phase 3 — Validation Strategy, Sampling Rate, Test Infrastructure, Validation Sign-Off, Wave 0 Requirements + +### Community 111 - "Community 111" +Cohesion: 0.25 +Nodes (8): Common Pitfalls, Pitfall 1: SSE fan-out leaking private list events to all clients, Pitfall 2: Float-based positions exhausting precision, Pitfall 3: Raw EventSource reconnect storm, Pitfall 4: `drizzle-kit push` on populated MariaDB, Pitfall 5: dnd-kit drag handle with touch — accidental drags, Pitfall 6: React Router + vite-plugin-pwa navigation fallback, Pitfall 7: SSE auth with `withCredentials` + +### Community 112 - "Community 112" +Cohesion: 0.25 +Nodes (7): Manual-Only Verifications, Per-Task Verification Map, Phase 4 — Validation Strategy, Sampling Rate, Test Infrastructure, Validation Sign-Off, Wave 0 Requirements + +### Community 113 - "Community 113" +Cohesion: 0.25 +Nodes (7): Commits, Deviations from Plan, Evidence Recorded (verbatim), Quick Task 260607-u8o: Record SSE-over-Pangolin Smoke Test PASS Summary, Self-Check: PASSED, Verification, What Was Done + +### Community 114 - "Community 114" +Cohesion: 0.25 +Nodes (7): WritableCalendar, EDIT_OCCURRENCE, LATE_OCCURRENCE, { + mockSetEventForm, + mockSetLastSyncedUid, + mockCreateEvent, + mockUpdateEvent, + mockFetchWritableCalendars, +}, ONE_CALENDAR, RECURRING_OCCURRENCE, TWO_CALENDARS + +### Community 115 - "Community 115" +Cohesion: 0.25 +Nodes (4): DEFAULT_FORM_PAYLOAD, FAKE_CRED_ROW, mockPendingRows, { + mockUpdateSet, + mockUpdate, + mockWherePending, + mockWhereCalEvents, + mockFromFn, + mockSelectFn, + mockDecryptPassword, +} + +### Community 116 - "Community 116" +Cohesion: 0.25 +Nodes (7): Configuration, Frameworks, Key Dependencies, Languages, Platform Requirements, Runtime, Technology Stack + +### Community 117 - "Community 117" +Cohesion: 0.25 +Nodes (7): Codebase Structure, Directory Layout, Directory Purposes, Key File Locations, Naming Conventions, Special Directories, Where to Add New Code + +### Community 118 - "Community 118" +Cohesion: 0.25 +Nodes (4): ErrorBoundary, ErrorBoundaryProps, ErrorBoundaryState, queryClient + +### Community 119 - "Community 119" +Cohesion: 0.25 +Nodes (5): renderPopover(), renderForm(), SyncStateToast(), { + mockLastSyncedUid, + mockSetLastSyncedUid, + mockFetchSyncStatus, +}, renderToast() + +### Community 120 - "Community 120" +Cohesion: 0.29 +Nodes (6): Architectural Decisions, Capability Proven End-to-End, Out of Scope (Deferred to Later Slices), Stack Touched in Phase 1, Subsequent Slice Plan, Walking Skeleton — FamilySync + +### Community 121 - "Community 121" +Cohesion: 0.33 +Nodes (5): deleteEvent(), DeleteConfirmationDialog(), makeQueryClient(), { + mockDeleteEvent, + mockSetDeleteDialog, + mockSetLastSyncedUid, + mockSetOpenEventId, + mockDeleteDialogOpen, + mockDeleteDialogUid, +}, renderDialog() + +### Community 122 - "Community 122" +Cohesion: 0.38 +Nodes (5): decryptPassword(), EncryptedPayload, encryptPassword(), getKey(), getCrypto() + +### Community 123 - "Community 123" +Cohesion: 0.29 +Nodes (4): shimmerStyle, SkeletonCalendar(), SkeletonCalendarProps, SkeletonVariant + +### Community 124 - "Community 124" +Cohesion: 0.38 +Nodes (5): BreakpointGroup, CalendarStore, getBreakpointGroup(), readPersistedView(), viewStorageKey() + +### Community 125 - "Community 125" +Cohesion: 0.33 +Nodes (6): Fixture ICS Files (test corpus), Phase Requirements → Test Map, Sampling Rate, Test Framework, Validation Architecture, Wave 0 Gaps + +### Community 126 - "Community 126" +Cohesion: 0.33 +Nodes (5): .from(calendarEvents).innerJoin(calendars, eq(calendarEvents.calendarId, calendars.id)), Reference idioms already in events.ts:, .where(or(eq(calendars.userId, currentUserId), eq(calendars.isShared, true))), - Working join: GET / at ~line 142-183 uses, - Working ownership predicate: /writable-calendars at ~line 501-509 uses + +### Community 127 - "Community 127" +Cohesion: 0.33 +Nodes (6): git, branching_strategy, create_tag, milestone_branch_template, phase_branch_template, quick_branch_template + +### Community 128 - "Community 128" +Cohesion: 0.40 +Nodes (5): Phase Requirements → Test Map, Sampling Rate, Test Framework, Validation Architecture, Wave 0 Gaps (must create before implementation) + +### Community 129 - "Community 129" +Cohesion: 0.40 +Nodes (5): Core (already installed — no new installs for write-back), Installation, New Installs (PWA layer only), rrule — NOT needed for Phase 3, Standard Stack + +### Community 130 - "Community 130" +Cohesion: 0.40 +Nodes (5): Phase Requirements → Test Map, Sampling Rate, Test Framework, Validation Architecture, Wave 0 Gaps + +### Community 131 - "Community 131" +Cohesion: 0.40 +Nodes (5): Code Examples, Verified Pattern: Drizzle schema conventions (existing schema.ts), Verified Pattern: Hono streamSSE (existing sse.ts), Verified Pattern: NavLink with active styling, Verified Pattern: React Query optimistic update + +### Community 132 - "Community 132" +Cohesion: 0.40 +Nodes (5): Primary (HIGH confidence — VERIFIED from codebase), Primary (HIGH confidence — VERIFIED via npm registry + Context7), Secondary (MEDIUM confidence — CITED from official docs), Sources, Tertiary (LOW confidence — ASSUMED) + +### Community 133 - "Community 133" +Cohesion: 0.40 +Nodes (4): browser, browserName, launchOptions, channel + +### Community 134 - "Community 134" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 01), STRIDE Threat Register, Trust Boundaries + +### Community 135 - "Community 135" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 02), STRIDE Threat Register, Trust Boundaries + +### Community 136 - "Community 136" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 03), STRIDE Threat Register, Trust Boundaries + +### Community 137 - "Community 137" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 04), STRIDE Threat Register, Trust Boundaries + +### Community 138 - "Community 138" +Cohesion: 0.50 +Nodes (4): Claude's Discretion, Deferred Ideas (OUT OF SCOPE), Locked Decisions, User Constraints (from CONTEXT.md) + +### Community 139 - "Community 139" +Cohesion: 0.50 +Nodes (4): Code Examples, Hono app bootstrap with all middleware, Serving PWA static files from Hono, User upsert with color assignment + +### Community 140 - "Community 140" +Cohesion: 0.50 +Nodes (4): Core (Phase 1 scope), Phase 1 backend install, Phase 1 frontend install, Standard Stack + +### Community 141 - "Community 141" +Cohesion: 0.50 +Nodes (4): Primary (HIGH confidence), Secondary (MEDIUM confidence), Sources, Tertiary (LOW confidence) + +### Community 142 - "Community 142" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 01), STRIDE Threat Register, Trust Boundaries + +### Community 143 - "Community 143" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 02), STRIDE Threat Register, Trust Boundaries + +### Community 144 - "Community 144" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 03), STRIDE Threat Register, Trust Boundaries + +### Community 145 - "Community 145" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 04), STRIDE Threat Register, Trust Boundaries + +### Community 146 - "Community 146" +Cohesion: 0.50 +Nodes (3): Artifacts this phase produces (Plan 05), STRIDE Threat Register, Trust Boundaries + +### Community 147 - "Community 147" +Cohesion: 0.50 +Nodes (4): All-Day Event: Server Format to Schedule-X PlainDate, Code Examples, Schedule-X CSS Token Override Pattern, VTIMEZONE Registration + ICAL.RecurExpansion (complete pattern) + +### Community 148 - "Community 148" +Cohesion: 0.50 +Nodes (4): Claude's Discretion, Deferred Ideas (OUT OF SCOPE), Locked Decisions, User Constraints (from CONTEXT.md) + +### Community 149 - "Community 149" +Cohesion: 0.50 +Nodes (4): Core (all versions verified against npm registry 2026-06-04), Installation (PWA only), No New Backend Dependencies Needed, Standard Stack + +### Community 150 - "Community 150" +Cohesion: 0.50 +Nodes (4): Primary (HIGH confidence), Secondary (MEDIUM confidence), Sources, Tertiary (LOW confidence) + +### Community 151 - "Community 151" +Cohesion: 0.50 +Nodes (3): Critical Anti-Patterns (do NOT repeat these), Infrastructure State, Required Reading (in order) + +### Community 152 - "Community 152" +Cohesion: 0.50 +Nodes (4): Claude's Discretion, Deferred Ideas (OUT OF SCOPE), Locked Decisions, User Constraints (from CONTEXT.md) + +### Community 153 - "Community 153" +Cohesion: 0.50 +Nodes (4): Code Examples, Create a recurring event (whole-series RRULE presets), Detect installed state (for hiding install prompts), Sync-state poll with TanStack Query + +### Community 154 - "Community 154" +Cohesion: 0.50 +Nodes (4): Primary (HIGH confidence), Secondary (MEDIUM confidence), Sources, Tertiary (LOW confidence / ASSUMED) + +### Community 155 - "Community 155" +Cohesion: 0.50 +Nodes (3): Phase Goal, STRIDE Threat Register, Trust Boundaries + +### Community 156 - "Community 156" +Cohesion: 0.50 +Nodes (4): Claude's Discretion, Deferred Ideas (OUT OF SCOPE), Locked Decisions, User Constraints (from CONTEXT.md) + +### Community 157 - "Community 157" +Cohesion: 0.50 +Nodes (4): Phase Requirements → Test Map, Test Framework, Validation Architecture, Wave 0 Gaps + +### Community 158 - "Community 158" +Cohesion: 0.50 +Nodes (3): Infrastructure State, Open Decisions for the Planner (intentionally NOT pre-decided), Required Reading (in order) + +### Community 160 - "Community 160" +Cohesion: 0.50 +Nodes (3): Adopt drizzle generate+migrate workflow (retire db:push on MariaDB), Goal, Tasks + +### Community 161 - "Community 161" +Cohesion: 0.50 +Nodes (3): Context to bring into the session, Kick off FamilySync with /gsd:new-project, Pre-work before running + +### Community 162 - "Community 162" +Cohesion: 0.67 +Nodes (3): Applicable ASVS Categories (Level 1), Known Threat Patterns for This Stack, Security Domain + +### Community 163 - "Community 163" +Cohesion: 0.67 +Nodes (3): Applicable ASVS Categories, Known Threat Patterns for This Phase, Security Domain + +### Community 164 - "Community 164" +Cohesion: 0.67 +Nodes (3): Backend: `/api/events` Evolution, Current state (Phase 1), Target state (Phase 2) + +### Community 173 - "Community 173" +Cohesion: 0.67 +Nodes (3): Applicable ASVS Categories, Known Threat Patterns, Security Domain + +### Community 174 - "Community 174" +Cohesion: 0.67 +Nodes (3): Architecture Patterns, Recommended Project Structure Additions, System Architecture Diagram + +### Community 180 - "Community 180" +Cohesion: 0.67 +Nodes (3): Applicable ASVS Categories, Known Threat Patterns for This Phase, Security Domain + +### Community 181 - "Community 181" +Cohesion: 0.67 +Nodes (3): Architecture Patterns, Recommended Project Structure, System Architecture Diagram + +### Community 182 - "Community 182" +Cohesion: 0.67 +Nodes (3): Core (already installed — no new installs needed), New Dependencies (must install), Standard Stack + +### Community 184 - "Community 184" +Cohesion: 0.67 +Nodes (3): plan_review, source_grounding, source_grounding_authority + +## Knowledge Gaps +- **1565 isolated node(s):** `allow`, `version`, `timestamp`, `phase`, `phase_name` (+1560 more) + These have ≤1 connection - possible missing edges or undocumented components. +- **25 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `InstallPrompt()` connect `Community 59` to `Community 87`?** + _High betweenness centrality (0.001) - this node is a cross-community bridge._ +- **Why does `ErrorBoundary` connect `Community 118` to `Community 119`?** + _High betweenness centrality (0.001) - this node is a cross-community bridge._ +- **Why does `useCalendarStore` connect `Community 85` to `Community 16`, `Community 114`, `Community 87`, `Community 119`, `Community 121`, `Community 124`?** + _High betweenness centrality (0.001) - this node is a cross-community bridge._ +- **What connects `allow`, `version`, `timestamp` to the rest of the system?** + _1565 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `Community 0` be split into smaller, more focused modules?** + _Cohesion score 0.045454545454545456 - nodes in this community are weakly interconnected._ +- **Should `Community 1` be split into smaller, more focused modules?** + _Cohesion score 0.05555555555555555 - nodes in this community are weakly interconnected._ +- **Should `Community 2` be split into smaller, more focused modules?** + _Cohesion score 0.05555555555555555 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/.planning/graphs/graph.html b/.planning/graphs/graph.html new file mode 100644 index 0000000..3058dd8 --- /dev/null +++ b/.planning/graphs/graph.html @@ -0,0 +1,307 @@ + + + + +graphify - graphify-out/graph.html + + + + +
+ + + + + \ No newline at end of file diff --git a/.planning/graphs/graph.json b/.planning/graphs/graph.json new file mode 100644 index 0000000..2c48368 --- /dev/null +++ b/.planning/graphs/graph.json @@ -0,0 +1,44361 @@ +{ + "directed": false, + "multigraph": false, + "graph": {}, + "nodes": [ + { + "label": "settings.local.json", + "file_type": "code", + "source_file": ".claude/settings.local.json", + "source_location": "L1", + "_origin": "ast", + "id": "claude_settings_local", + "community": 183, + "norm_label": "settings.local.json" + }, + { + "label": "permissions", + "file_type": "code", + "source_file": ".claude/settings.local.json", + "source_location": "L2", + "_origin": "ast", + "id": "claude_settings_local_permissions", + "community": 183, + "norm_label": "permissions" + }, + { + "label": "allow", + "file_type": "code", + "source_file": ".claude/settings.local.json", + "source_location": "L3", + "_origin": "ast", + "id": "claude_settings_local_permissions_allow", + "community": 183, + "norm_label": "allow" + }, + { + "label": "HANDOFF.json", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L1", + "_origin": "ast", + "id": "planning_handoff", + "community": 27, + "norm_label": "handoff.json" + }, + { + "label": "version", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L2", + "_origin": "ast", + "id": "planning_handoff_version", + "community": 27, + "norm_label": "version" + }, + { + "label": "timestamp", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L3", + "_origin": "ast", + "id": "planning_handoff_timestamp", + "community": 27, + "norm_label": "timestamp" + }, + { + "label": "phase", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L4", + "_origin": "ast", + "id": "planning_handoff_phase", + "community": 27, + "norm_label": "phase" + }, + { + "label": "phase_name", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L5", + "_origin": "ast", + "id": "planning_handoff_phase_name", + "community": 27, + "norm_label": "phase_name" + }, + { + "label": "phase_dir", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L6", + "_origin": "ast", + "id": "planning_handoff_phase_dir", + "community": 27, + "norm_label": "phase_dir" + }, + { + "label": "plan", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L7", + "_origin": "ast", + "id": "planning_handoff_plan", + "community": 27, + "norm_label": "plan" + }, + { + "label": "task", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L8", + "_origin": "ast", + "id": "planning_handoff_task", + "community": 27, + "norm_label": "task" + }, + { + "label": "total_tasks", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L9", + "_origin": "ast", + "id": "planning_handoff_total_tasks", + "community": 27, + "norm_label": "total_tasks" + }, + { + "label": "status", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L10", + "_origin": "ast", + "id": "planning_handoff_status", + "community": 27, + "norm_label": "status" + }, + { + "label": "stage", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L11", + "_origin": "ast", + "id": "planning_handoff_stage", + "community": 27, + "norm_label": "stage" + }, + { + "label": "completed_tasks", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L12", + "_origin": "ast", + "id": "planning_handoff_completed_tasks", + "community": 27, + "norm_label": "completed_tasks" + }, + { + "label": "remaining_tasks", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L18", + "_origin": "ast", + "id": "planning_handoff_remaining_tasks", + "community": 27, + "norm_label": "remaining_tasks" + }, + { + "label": "blockers", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L23", + "_origin": "ast", + "id": "planning_handoff_blockers", + "community": 27, + "norm_label": "blockers" + }, + { + "label": "human_actions_pending", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L24", + "_origin": "ast", + "id": "planning_handoff_human_actions_pending", + "community": 27, + "norm_label": "human_actions_pending" + }, + { + "label": "decisions", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L27", + "_origin": "ast", + "id": "planning_handoff_decisions", + "community": 27, + "norm_label": "decisions" + }, + { + "label": "uncommitted_files", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L32", + "_origin": "ast", + "id": "planning_handoff_uncommitted_files", + "community": 27, + "norm_label": "uncommitted_files" + }, + { + "label": "next_action", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L33", + "_origin": "ast", + "id": "planning_handoff_next_action", + "community": 27, + "norm_label": "next_action" + }, + { + "label": "context_notes", + "file_type": "code", + "source_file": ".planning/HANDOFF.json", + "source_location": "L34", + "_origin": "ast", + "id": "planning_handoff_context_notes", + "community": 27, + "norm_label": "context_notes" + }, + { + "label": "config.json", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L1", + "_origin": "ast", + "id": "planning_config", + "community": 26, + "norm_label": "config.json" + }, + { + "label": "model_profile", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L2", + "_origin": "ast", + "id": "planning_config_model_profile", + "community": 26, + "norm_label": "model_profile" + }, + { + "label": "commit_docs", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L3", + "_origin": "ast", + "id": "planning_config_commit_docs", + "community": 26, + "norm_label": "commit_docs" + }, + { + "label": "parallelization", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L4", + "_origin": "ast", + "id": "planning_config_parallelization", + "community": 26, + "norm_label": "parallelization" + }, + { + "label": "search_gitignored", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L5", + "_origin": "ast", + "id": "planning_config_search_gitignored", + "community": 26, + "norm_label": "search_gitignored" + }, + { + "label": "brave_search", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L6", + "_origin": "ast", + "id": "planning_config_brave_search", + "community": 26, + "norm_label": "brave_search" + }, + { + "label": "firecrawl", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L7", + "_origin": "ast", + "id": "planning_config_firecrawl", + "community": 26, + "norm_label": "firecrawl" + }, + { + "label": "exa_search", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L8", + "_origin": "ast", + "id": "planning_config_exa_search", + "community": 26, + "norm_label": "exa_search" + }, + { + "label": "git", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L9", + "_origin": "ast", + "id": "planning_config_git", + "community": 127, + "norm_label": "git" + }, + { + "label": "branching_strategy", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L10", + "_origin": "ast", + "id": "planning_config_git_branching_strategy", + "community": 127, + "norm_label": "branching_strategy" + }, + { + "label": "create_tag", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L11", + "_origin": "ast", + "id": "planning_config_git_create_tag", + "community": 127, + "norm_label": "create_tag" + }, + { + "label": "phase_branch_template", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L12", + "_origin": "ast", + "id": "planning_config_git_phase_branch_template", + "community": 127, + "norm_label": "phase_branch_template" + }, + { + "label": "milestone_branch_template", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L13", + "_origin": "ast", + "id": "planning_config_git_milestone_branch_template", + "community": 127, + "norm_label": "milestone_branch_template" + }, + { + "label": "quick_branch_template", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L14", + "_origin": "ast", + "id": "planning_config_git_quick_branch_template", + "community": 127, + "norm_label": "quick_branch_template" + }, + { + "label": "workflow", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L16", + "_origin": "ast", + "id": "planning_config_workflow", + "community": 6, + "norm_label": "workflow" + }, + { + "label": "research", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L17", + "_origin": "ast", + "id": "planning_config_workflow_research", + "community": 6, + "norm_label": "research" + }, + { + "label": "plan_check", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L18", + "_origin": "ast", + "id": "planning_config_workflow_plan_check", + "community": 6, + "norm_label": "plan_check" + }, + { + "label": "verifier", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L19", + "_origin": "ast", + "id": "planning_config_workflow_verifier", + "community": 6, + "norm_label": "verifier" + }, + { + "label": "nyquist_validation", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L20", + "_origin": "ast", + "id": "planning_config_workflow_nyquist_validation", + "community": 6, + "norm_label": "nyquist_validation" + }, + { + "label": "auto_advance", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L21", + "_origin": "ast", + "id": "planning_config_workflow_auto_advance", + "community": 6, + "norm_label": "auto_advance" + }, + { + "label": "node_repair", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L22", + "_origin": "ast", + "id": "planning_config_workflow_node_repair", + "community": 6, + "norm_label": "node_repair" + }, + { + "label": "node_repair_budget", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L23", + "_origin": "ast", + "id": "planning_config_workflow_node_repair_budget", + "community": 6, + "norm_label": "node_repair_budget" + }, + { + "label": "ui_phase", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L24", + "_origin": "ast", + "id": "planning_config_workflow_ui_phase", + "community": 6, + "norm_label": "ui_phase" + }, + { + "label": "ui_safety_gate", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L25", + "_origin": "ast", + "id": "planning_config_workflow_ui_safety_gate", + "community": 6, + "norm_label": "ui_safety_gate" + }, + { + "label": "ai_integration_phase", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L26", + "_origin": "ast", + "id": "planning_config_workflow_ai_integration_phase", + "community": 6, + "norm_label": "ai_integration_phase" + }, + { + "label": "tdd_mode", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L27", + "_origin": "ast", + "id": "planning_config_workflow_tdd_mode", + "community": 6, + "norm_label": "tdd_mode" + }, + { + "label": "human_verify_mode", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L28", + "_origin": "ast", + "id": "planning_config_workflow_human_verify_mode", + "community": 6, + "norm_label": "human_verify_mode" + }, + { + "label": "text_mode", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L29", + "_origin": "ast", + "id": "planning_config_workflow_text_mode", + "community": 6, + "norm_label": "text_mode" + }, + { + "label": "research_before_questions", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L30", + "_origin": "ast", + "id": "planning_config_workflow_research_before_questions", + "community": 6, + "norm_label": "research_before_questions" + }, + { + "label": "discuss_mode", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L31", + "_origin": "ast", + "id": "planning_config_workflow_discuss_mode", + "community": 6, + "norm_label": "discuss_mode" + }, + { + "label": "skip_discuss", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L32", + "_origin": "ast", + "id": "planning_config_workflow_skip_discuss", + "community": 6, + "norm_label": "skip_discuss" + }, + { + "label": "code_review", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L33", + "_origin": "ast", + "id": "planning_config_workflow_code_review", + "community": 6, + "norm_label": "code_review" + }, + { + "label": "code_review_depth", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L34", + "_origin": "ast", + "id": "planning_config_workflow_code_review_depth", + "community": 6, + "norm_label": "code_review_depth" + }, + { + "label": "code_review_command", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L35", + "_origin": "ast", + "id": "planning_config_workflow_code_review_command", + "community": 6, + "norm_label": "code_review_command" + }, + { + "label": "pattern_mapper", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L36", + "_origin": "ast", + "id": "planning_config_workflow_pattern_mapper", + "community": 6, + "norm_label": "pattern_mapper" + }, + { + "label": "plan_bounce", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L37", + "_origin": "ast", + "id": "planning_config_workflow_plan_bounce", + "community": 6, + "norm_label": "plan_bounce" + }, + { + "label": "plan_bounce_script", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L38", + "_origin": "ast", + "id": "planning_config_workflow_plan_bounce_script", + "community": 6, + "norm_label": "plan_bounce_script" + }, + { + "label": "plan_bounce_passes", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L39", + "_origin": "ast", + "id": "planning_config_workflow_plan_bounce_passes", + "community": 6, + "norm_label": "plan_bounce_passes" + }, + { + "label": "auto_prune_state", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L40", + "_origin": "ast", + "id": "planning_config_workflow_auto_prune_state", + "community": 6, + "norm_label": "auto_prune_state" + }, + { + "label": "post_planning_gaps", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L41", + "_origin": "ast", + "id": "planning_config_workflow_post_planning_gaps", + "community": 6, + "norm_label": "post_planning_gaps" + }, + { + "label": "security_enforcement", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L42", + "_origin": "ast", + "id": "planning_config_workflow_security_enforcement", + "community": 6, + "norm_label": "security_enforcement" + }, + { + "label": "security_asvs_level", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L43", + "_origin": "ast", + "id": "planning_config_workflow_security_asvs_level", + "community": 6, + "norm_label": "security_asvs_level" + }, + { + "label": "security_block_on", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L44", + "_origin": "ast", + "id": "planning_config_workflow_security_block_on", + "community": 6, + "norm_label": "security_block_on" + }, + { + "label": "_auto_chain_active", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L45", + "_origin": "ast", + "id": "planning_config_workflow_auto_chain_active", + "community": 6, + "norm_label": "_auto_chain_active" + }, + { + "label": "ui_review", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L46", + "_origin": "ast", + "id": "planning_config_workflow_ui_review", + "community": 6, + "norm_label": "ui_review" + }, + { + "label": "use_worktrees", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L47", + "_origin": "ast", + "id": "planning_config_workflow_use_worktrees", + "community": 6, + "norm_label": "use_worktrees" + }, + { + "label": "ship", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L49", + "_origin": "ast", + "id": "planning_config_ship", + "community": 26, + "norm_label": "ship" + }, + { + "label": "pr_body_sections", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L50", + "_origin": "ast", + "id": "planning_config_ship_pr_body_sections", + "community": 26, + "norm_label": "pr_body_sections" + }, + { + "label": "hooks", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L76", + "_origin": "ast", + "id": "planning_config_hooks", + "community": 26, + "norm_label": "hooks" + }, + { + "label": "context_warnings", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L77", + "_origin": "ast", + "id": "planning_config_hooks_context_warnings", + "community": 26, + "norm_label": "context_warnings" + }, + { + "label": "project_code", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L79", + "_origin": "ast", + "id": "planning_config_project_code", + "community": 26, + "norm_label": "project_code" + }, + { + "label": "phase_naming", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L80", + "_origin": "ast", + "id": "planning_config_phase_naming", + "community": 26, + "norm_label": "phase_naming" + }, + { + "label": "agent_skills", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L81", + "_origin": "ast", + "id": "planning_config_agent_skills", + "community": 26, + "norm_label": "agent_skills" + }, + { + "label": "claude_md_path", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L82", + "_origin": "ast", + "id": "planning_config_claude_md_path", + "community": 26, + "norm_label": "claude_md_path" + }, + { + "label": "plan_review", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L83", + "_origin": "ast", + "id": "planning_config_plan_review", + "community": 184, + "norm_label": "plan_review" + }, + { + "label": "source_grounding", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L84", + "_origin": "ast", + "id": "planning_config_plan_review_source_grounding", + "community": 184, + "norm_label": "source_grounding" + }, + { + "label": "source_grounding_authority", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L85", + "_origin": "ast", + "id": "planning_config_plan_review_source_grounding_authority", + "community": 184, + "norm_label": "source_grounding_authority" + }, + { + "label": "mode", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L87", + "_origin": "ast", + "id": "planning_config_mode", + "community": 26, + "norm_label": "mode" + }, + { + "label": "granularity", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L88", + "_origin": "ast", + "id": "planning_config_granularity", + "community": 26, + "norm_label": "granularity" + }, + { + "label": "intel", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L89", + "_origin": "ast", + "id": "planning_config_intel", + "community": 26, + "norm_label": "intel" + }, + { + "label": "enabled", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L90", + "_origin": "ast", + "id": "planning_config_intel_enabled", + "community": 26, + "norm_label": "enabled" + }, + { + "label": "graphify", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L92", + "_origin": "ast", + "id": "planning_config_graphify", + "community": 193, + "norm_label": "graphify" + }, + { + "label": "enabled", + "file_type": "code", + "source_file": ".planning/config.json", + "source_location": "L93", + "_origin": "ast", + "id": "planning_config_graphify_enabled", + "community": 193, + "norm_label": "enabled" + }, + { + "label": "cli.config.json", + "file_type": "code", + "source_file": ".playwright/cli.config.json", + "source_location": "L1", + "_origin": "ast", + "id": "playwright_cli_config", + "community": 133, + "norm_label": "cli.config.json" + }, + { + "label": "browser", + "file_type": "code", + "source_file": ".playwright/cli.config.json", + "source_location": "L2", + "_origin": "ast", + "id": "playwright_cli_config_browser", + "community": 133, + "norm_label": "browser" + }, + { + "label": "browserName", + "file_type": "code", + "source_file": ".playwright/cli.config.json", + "source_location": "L3", + "_origin": "ast", + "id": "playwright_cli_config_browser_browsername", + "community": 133, + "norm_label": "browsername" + }, + { + "label": "launchOptions", + "file_type": "code", + "source_file": ".playwright/cli.config.json", + "source_location": "L4", + "_origin": "ast", + "id": "playwright_cli_config_browser_launchoptions", + "community": 133, + "norm_label": "launchoptions" + }, + { + "label": "channel", + "file_type": "code", + "source_file": ".playwright/cli.config.json", + "source_location": "L5", + "_origin": "ast", + "id": "playwright_cli_config_launchoptions_channel", + "community": 133, + "norm_label": "channel" + }, + { + "label": "drizzle.config.ts", + "file_type": "code", + "source_file": "apps/api/drizzle.config.ts", + "source_location": "L1", + "_origin": "ast", + "id": "api_drizzle_config", + "community": 203, + "norm_label": "drizzle.config.ts" + }, + { + "label": "package.json", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L1", + "_origin": "ast", + "id": "api_package", + "community": 5, + "norm_label": "package.json" + }, + { + "label": "name", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L2", + "_origin": "ast", + "id": "api_package_name", + "community": 5, + "norm_label": "name" + }, + { + "label": "version", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L3", + "_origin": "ast", + "id": "api_package_version", + "community": 5, + "norm_label": "version" + }, + { + "label": "private", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L4", + "_origin": "ast", + "id": "api_package_private", + "community": 5, + "norm_label": "private" + }, + { + "label": "type", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L5", + "_origin": "ast", + "id": "api_package_type", + "community": 5, + "norm_label": "type" + }, + { + "label": "scripts", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L6", + "_origin": "ast", + "id": "api_package_scripts", + "community": 5, + "norm_label": "scripts" + }, + { + "label": "dev", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L7", + "_origin": "ast", + "id": "api_package_scripts_dev", + "community": 5, + "norm_label": "dev" + }, + { + "label": "build", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L8", + "_origin": "ast", + "id": "api_package_scripts_build", + "community": 5, + "norm_label": "build" + }, + { + "label": "start", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L9", + "_origin": "ast", + "id": "api_package_scripts_start", + "community": 5, + "norm_label": "start" + }, + { + "label": "test", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L10", + "_origin": "ast", + "id": "api_package_scripts_test", + "community": 5, + "norm_label": "test" + }, + { + "label": "test:watch", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L11", + "_origin": "ast", + "id": "api_package_scripts_test_watch", + "community": 5, + "norm_label": "test:watch" + }, + { + "label": "typecheck", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L12", + "_origin": "ast", + "id": "api_package_scripts_typecheck", + "community": 5, + "norm_label": "typecheck" + }, + { + "label": "db:push", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L13", + "_origin": "ast", + "id": "api_package_scripts_db_push", + "community": 5, + "norm_label": "db:push" + }, + { + "label": "db:generate", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L14", + "_origin": "ast", + "id": "api_package_scripts_db_generate", + "community": 5, + "norm_label": "db:generate" + }, + { + "label": "db:migrate", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L15", + "_origin": "ast", + "id": "api_package_scripts_db_migrate", + "community": 5, + "norm_label": "db:migrate" + }, + { + "label": "dependencies", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L17", + "_origin": "ast", + "id": "api_package_dependencies", + "community": 5, + "norm_label": "dependencies" + }, + { + "label": "@hono/node-server", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L18", + "_origin": "ast", + "id": "api_package_dependencies_hono_node_server", + "community": 5, + "norm_label": "@hono/node-server" + }, + { + "label": "@hono/oidc-auth", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L19", + "_origin": "ast", + "id": "api_package_dependencies_hono_oidc_auth", + "community": 5, + "norm_label": "@hono/oidc-auth" + }, + { + "label": "@hono/zod-validator", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L20", + "_origin": "ast", + "id": "api_package_dependencies_hono_zod_validator", + "community": 5, + "norm_label": "@hono/zod-validator" + }, + { + "label": "drizzle-orm", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L21", + "_origin": "ast", + "id": "api_package_dependencies_drizzle_orm", + "community": 5, + "norm_label": "drizzle-orm" + }, + { + "label": "hono", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L22", + "_origin": "ast", + "id": "api_package_dependencies_hono", + "community": 5, + "norm_label": "hono" + }, + { + "label": "ical.js", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L23", + "_origin": "ast", + "id": "api_package_dependencies_ical_js", + "community": 5, + "norm_label": "ical.js" + }, + { + "label": "mysql2", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L24", + "_origin": "ast", + "id": "api_package_dependencies_mysql2", + "community": 5, + "norm_label": "mysql2" + }, + { + "label": "node-cron", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L25", + "_origin": "ast", + "id": "api_package_dependencies_node_cron", + "community": 5, + "norm_label": "node-cron" + }, + { + "label": "tsdav", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L26", + "_origin": "ast", + "id": "api_package_dependencies_tsdav", + "community": 5, + "norm_label": "tsdav" + }, + { + "label": "zod", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L27", + "_origin": "ast", + "id": "api_package_dependencies_zod", + "community": 5, + "norm_label": "zod" + }, + { + "label": "devDependencies", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L29", + "_origin": "ast", + "id": "api_package_devdependencies", + "community": 5, + "norm_label": "devdependencies" + }, + { + "label": "@types/node", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L30", + "_origin": "ast", + "id": "api_package_devdependencies_types_node", + "community": 5, + "norm_label": "@types/node" + }, + { + "label": "drizzle-kit", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L31", + "_origin": "ast", + "id": "api_package_devdependencies_drizzle_kit", + "community": 5, + "norm_label": "drizzle-kit" + }, + { + "label": "temporal-polyfill", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L32", + "_origin": "ast", + "id": "api_package_devdependencies_temporal_polyfill", + "community": 5, + "norm_label": "temporal-polyfill" + }, + { + "label": "typescript", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L33", + "_origin": "ast", + "id": "api_package_devdependencies_typescript", + "community": 5, + "norm_label": "typescript" + }, + { + "label": "vitest", + "file_type": "code", + "source_file": "apps/api/package.json", + "source_location": "L34", + "_origin": "ast", + "id": "api_package_devdependencies_vitest", + "community": 5, + "norm_label": "vitest" + }, + { + "label": "devBypass.ts", + "file_type": "code", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L1", + "_origin": "ast", + "id": "auth_devbypass", + "community": 17, + "norm_label": "devbypass.ts" + }, + { + "label": "DEV_USER", + "file_type": "code", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L30", + "_origin": "ast", + "id": "auth_devbypass_dev_user", + "community": 17, + "norm_label": "dev_user" + }, + { + "label": "ContextVariableMap", + "file_type": "code", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L45", + "_origin": "ast", + "id": "auth_devbypass_contextvariablemap", + "community": 17, + "norm_label": "contextvariablemap" + }, + { + "label": "devAuthBypass()", + "file_type": "code", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L58", + "_origin": "ast", + "id": "auth_devbypass_devauthbypass", + "community": 17, + "norm_label": "devauthbypass()" + }, + { + "label": "middleware.ts", + "file_type": "code", + "source_file": "apps/api/src/auth/middleware.ts", + "source_location": "L1", + "_origin": "ast", + "id": "auth_middleware", + "community": 17, + "norm_label": "middleware.ts" + }, + { + "label": "user.ts", + "file_type": "code", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L1", + "_origin": "ast", + "id": "auth_user", + "community": 17, + "norm_label": "user.ts" + }, + { + "label": "COLOR_PALETTE", + "file_type": "code", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L25", + "_origin": "ast", + "id": "auth_user_color_palette", + "community": 91, + "norm_label": "color_palette" + }, + { + "label": "claimStr()", + "file_type": "code", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L35", + "_origin": "ast", + "id": "auth_user_claimstr", + "community": 17, + "norm_label": "claimstr()" + }, + { + "label": "deriveDisplayName()", + "file_type": "code", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L56", + "_origin": "ast", + "id": "auth_user_derivedisplayname", + "community": 17, + "norm_label": "derivedisplayname()" + }, + { + "label": "upsertUser()", + "file_type": "code", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L79", + "_origin": "ast", + "id": "auth_user_upsertuser", + "community": 17, + "norm_label": "upsertuser()" + }, + { + "label": "client.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/client.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_client", + "community": 43, + "norm_label": "client.ts" + }, + { + "label": "FastmailClient", + "file_type": "code", + "source_file": "apps/api/src/broker/client.ts", + "source_location": "L15", + "_origin": "ast", + "id": "broker_client_fastmailclient", + "community": 43, + "norm_label": "fastmailclient" + }, + { + "label": "createFastmailClient()", + "file_type": "code", + "source_file": "apps/api/src/broker/client.ts", + "source_location": "L22", + "_origin": "ast", + "id": "broker_client_createfastmailclient", + "community": 43, + "norm_label": "createfastmailclient()" + }, + { + "label": "crypto.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_crypto", + "community": 122, + "norm_label": "crypto.ts" + }, + { + "label": "getKey()", + "file_type": "code", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L20", + "_origin": "ast", + "id": "broker_crypto_getkey", + "community": 122, + "norm_label": "getkey()" + }, + { + "label": "EncryptedPayload", + "file_type": "code", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L31", + "_origin": "ast", + "id": "broker_crypto_encryptedpayload", + "community": 122, + "norm_label": "encryptedpayload" + }, + { + "label": "encryptPassword()", + "file_type": "code", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L42", + "_origin": "ast", + "id": "broker_crypto_encryptpassword", + "community": 122, + "norm_label": "encryptpassword()" + }, + { + "label": "decryptPassword()", + "file_type": "code", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L60", + "_origin": "ast", + "id": "broker_crypto_decryptpassword", + "community": 122, + "norm_label": "decryptpassword()" + }, + { + "label": "expand.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_expand", + "community": 86, + "norm_label": "expand.ts" + }, + { + "label": "CalendarOccurrence", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L37", + "_origin": "ast", + "id": "broker_expand_calendaroccurrence", + "community": 86, + "norm_label": "calendaroccurrence" + }, + { + "label": "OccurrenceMeta", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L73", + "_origin": "ast", + "id": "broker_expand_occurrencemeta", + "community": 86, + "norm_label": "occurrencemeta" + }, + { + "label": "makeOccurrenceId()", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L99", + "_origin": "ast", + "id": "broker_expand_makeoccurrenceid", + "community": 86, + "norm_label": "makeoccurrenceid()" + }, + { + "label": "formatUtcOffset()", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L109", + "_origin": "ast", + "id": "broker_expand_formatutcoffset", + "community": 86, + "norm_label": "formatutcoffset()" + }, + { + "label": "serializeTime()", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L126", + "_origin": "ast", + "id": "broker_expand_serializetime", + "community": 86, + "norm_label": "serializetime()" + }, + { + "label": "expandOccurrences()", + "file_type": "code", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L167", + "_origin": "ast", + "id": "broker_expand_expandoccurrences", + "community": 86, + "norm_label": "expandoccurrences()" + }, + { + "label": "outboxWorker.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_outboxworker", + "community": 12, + "norm_label": "outboxworker.ts" + }, + { + "label": "BACKOFF_SECONDS", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L46", + "_origin": "ast", + "id": "broker_outboxworker_backoff_seconds", + "community": 12, + "norm_label": "backoff_seconds" + }, + { + "label": "TRANSIENT_STATUSES", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L49", + "_origin": "ast", + "id": "broker_outboxworker_transient_statuses", + "community": 12, + "norm_label": "transient_statuses" + }, + { + "label": "HARD_FAIL_STATUSES", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L52", + "_origin": "ast", + "id": "broker_outboxworker_hard_fail_statuses", + "community": 12, + "norm_label": "hard_fail_statuses" + }, + { + "label": "outboxPayloadSchema", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L70", + "_origin": "ast", + "id": "broker_outboxworker_outboxpayloadschema", + "community": 12, + "norm_label": "outboxpayloadschema" + }, + { + "label": "OutboxPayloadFields", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L84", + "_origin": "ast", + "id": "broker_outboxworker_outboxpayloadfields", + "community": 12, + "norm_label": "outboxpayloadfields" + }, + { + "label": "loadClientForUser()", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L112", + "_origin": "ast", + "id": "broker_outboxworker_loadclientforuser", + "community": 12, + "norm_label": "loadclientforuser()" + }, + { + "label": "triggerTargetedResync()", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L143", + "_origin": "ast", + "id": "broker_outboxworker_triggertargetedresync", + "community": 12, + "norm_label": "triggertargetedresync()" + }, + { + "label": "OutboxRow", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L183", + "_origin": "ast", + "id": "broker_outboxworker_outboxrow", + "community": 12, + "norm_label": "outboxrow" + }, + { + "label": "DispatchResult", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L185", + "_origin": "ast", + "id": "broker_outboxworker_dispatchresult", + "community": 12, + "norm_label": "dispatchresult" + }, + { + "label": "dispatchRow()", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L193", + "_origin": "ast", + "id": "broker_outboxworker_dispatchrow", + "community": 12, + "norm_label": "dispatchrow()" + }, + { + "label": "runOutboxDrain()", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L440", + "_origin": "ast", + "id": "broker_outboxworker_runoutboxdrain", + "community": 12, + "norm_label": "runoutboxdrain()" + }, + { + "label": "startOutboxWorker()", + "file_type": "code", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L625", + "_origin": "ast", + "id": "broker_outboxworker_startoutboxworker", + "community": 12, + "norm_label": "startoutboxworker()" + }, + { + "label": "poller.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_poller", + "community": 43, + "norm_label": "poller.ts" + }, + { + "label": "runPoll()", + "file_type": "code", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L35", + "_origin": "ast", + "id": "broker_poller_runpoll", + "community": 43, + "norm_label": "runpoll()" + }, + { + "label": "startBrokerPoller()", + "file_type": "code", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L83", + "_origin": "ast", + "id": "broker_poller_startbrokerpoller", + "community": 43, + "norm_label": "startbrokerpoller()" + }, + { + "label": "spike.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/spike.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_spike", + "community": 43, + "norm_label": "spike.ts" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "apps/api/src/broker/spike.ts", + "source_location": "L29", + "_origin": "ast", + "id": "broker_spike_main", + "community": 43, + "norm_label": "main()" + }, + { + "label": "sync.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_sync", + "community": 43, + "norm_label": "sync.ts" + }, + { + "label": "syncCalendar()", + "file_type": "code", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L33", + "_origin": "ast", + "id": "broker_sync_synccalendar", + "community": 43, + "norm_label": "synccalendar()" + }, + { + "label": "vevent.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_vevent", + "community": 12, + "norm_label": "vevent.ts" + }, + { + "label": "NewEventParams", + "file_type": "code", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L21", + "_origin": "ast", + "id": "broker_vevent_neweventparams", + "community": 12, + "norm_label": "neweventparams" + }, + { + "label": "RRULE_PRESETS", + "file_type": "code", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L49", + "_origin": "ast", + "id": "broker_vevent_rrule_presets", + "community": 12, + "norm_label": "rrule_presets" + }, + { + "label": "extractRruleString()", + "file_type": "code", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L63", + "_origin": "ast", + "id": "broker_vevent_extractrrulestring", + "community": 12, + "norm_label": "extractrrulestring()" + }, + { + "label": "buildVeventString()", + "file_type": "code", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L85", + "_origin": "ast", + "id": "broker_vevent_buildveventstring", + "community": 12, + "norm_label": "buildveventstring()" + }, + { + "label": "write.ts", + "file_type": "code", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_write", + "community": 12, + "norm_label": "write.ts" + }, + { + "label": "createCalendarEvent()", + "file_type": "code", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L39", + "_origin": "ast", + "id": "broker_write_createcalendarevent", + "community": 12, + "norm_label": "createcalendarevent()" + }, + { + "label": "updateCalendarEvent()", + "file_type": "code", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L62", + "_origin": "ast", + "id": "broker_write_updatecalendarevent", + "community": 12, + "norm_label": "updatecalendarevent()" + }, + { + "label": "deleteCalendarEvent()", + "file_type": "code", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L96", + "_origin": "ast", + "id": "broker_write_deletecalendarevent", + "community": 12, + "norm_label": "deletecalendarevent()" + }, + { + "label": "client.ts", + "file_type": "code", + "source_file": "apps/api/src/db/client.ts", + "source_location": "L1", + "_origin": "ast", + "id": "db_client", + "community": 91, + "norm_label": "client.ts" + }, + { + "label": "pool", + "file_type": "code", + "source_file": "apps/api/src/db/client.ts", + "source_location": "L6", + "_origin": "ast", + "id": "db_client_pool", + "community": 91, + "norm_label": "pool" + }, + { + "label": "db", + "file_type": "code", + "source_file": "apps/api/src/db/client.ts", + "source_location": "L16", + "_origin": "ast", + "id": "db_client_db", + "community": 91, + "norm_label": "db" + }, + { + "label": "schema.ts", + "file_type": "code", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L1", + "_origin": "ast", + "id": "db_schema", + "community": 43, + "norm_label": "schema.ts" + }, + { + "label": "users", + "file_type": "code", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L19", + "_origin": "ast", + "id": "db_schema_users", + "community": 43, + "norm_label": "users" + }, + { + "label": "memberCredentials", + "file_type": "code", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L40", + "_origin": "ast", + "id": "db_schema_membercredentials", + "community": 43, + "norm_label": "membercredentials" + }, + { + "label": "calendars", + "file_type": "code", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L61", + "_origin": "ast", + "id": "db_schema_calendars", + "community": 43, + "norm_label": "calendars" + }, + { + "label": "calendarEvents", + "file_type": "code", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L96", + "_origin": "ast", + "id": "db_schema_calendarevents", + "community": 43, + "norm_label": "calendarevents" + }, + { + "label": "calendarOutbox", + "file_type": "code", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L134", + "_origin": "ast", + "id": "db_schema_calendaroutbox", + "community": 43, + "norm_label": "calendaroutbox" + }, + { + "label": "index.ts", + "file_type": "code", + "source_file": "apps/api/src/index.ts", + "source_location": "L1", + "_origin": "ast", + "id": "src_index", + "community": 17, + "norm_label": "index.ts" + }, + { + "label": "app", + "file_type": "code", + "source_file": "apps/api/src/index.ts", + "source_location": "L15", + "_origin": "ast", + "id": "src_index_app", + "community": 17, + "norm_label": "app" + }, + { + "label": "isMainModule()", + "file_type": "code", + "source_file": "apps/api/src/index.ts", + "source_location": "L92", + "_origin": "ast", + "id": "src_index_ismainmodule", + "community": 17, + "norm_label": "ismainmodule()" + }, + { + "label": "events.ts", + "file_type": "code", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_events", + "community": 17, + "norm_label": "events.ts" + }, + { + "label": "eventsRouter", + "file_type": "code", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L40", + "_origin": "ast", + "id": "routes_events_eventsrouter", + "community": 17, + "norm_label": "eventsrouter" + }, + { + "label": "resolveUserId()", + "file_type": "code", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L63", + "_origin": "ast", + "id": "routes_events_resolveuserid", + "community": 17, + "norm_label": "resolveuserid()" + }, + { + "label": "eventsQuerySchema", + "file_type": "code", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L87", + "_origin": "ast", + "id": "routes_events_eventsqueryschema", + "community": 17, + "norm_label": "eventsqueryschema" + }, + { + "label": "eventFieldsSchema", + "file_type": "code", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L100", + "_origin": "ast", + "id": "routes_events_eventfieldsschema", + "community": 17, + "norm_label": "eventfieldsschema" + }, + { + "label": "syncStatusQuerySchema", + "file_type": "code", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L112", + "_origin": "ast", + "id": "routes_events_syncstatusqueryschema", + "community": 17, + "norm_label": "syncstatusqueryschema" + }, + { + "label": "health.ts", + "file_type": "code", + "source_file": "apps/api/src/routes/health.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_health", + "community": 91, + "norm_label": "health.ts" + }, + { + "label": "healthRouter", + "file_type": "code", + "source_file": "apps/api/src/routes/health.ts", + "source_location": "L5", + "_origin": "ast", + "id": "routes_health_healthrouter", + "community": 91, + "norm_label": "healthrouter" + }, + { + "label": "me.ts", + "file_type": "code", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_me", + "community": 17, + "norm_label": "me.ts" + }, + { + "label": "meRouter", + "file_type": "code", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L28", + "_origin": "ast", + "id": "routes_me_merouter", + "community": 17, + "norm_label": "merouter" + }, + { + "label": "sse.ts", + "file_type": "code", + "source_file": "apps/api/src/routes/sse.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_sse", + "community": 17, + "norm_label": "sse.ts" + }, + { + "label": "sseRouter", + "file_type": "code", + "source_file": "apps/api/src/routes/sse.ts", + "source_location": "L21", + "_origin": "ast", + "id": "routes_sse_sserouter", + "community": 17, + "norm_label": "sserouter" + }, + { + "label": "devBypass.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/auth/devBypass.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "auth_devbypass_test", + "community": 205, + "norm_label": "devbypass.test.ts" + }, + { + "label": "user.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "auth_user_test", + "community": 91, + "norm_label": "user.test.ts" + }, + { + "label": "mockDb", + "file_type": "code", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L21", + "_origin": "ast", + "id": "auth_user_test_mockdb", + "community": 91, + "norm_label": "mockdb" + }, + { + "label": "makeSelectChain()", + "file_type": "code", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L27", + "_origin": "ast", + "id": "auth_user_test_makeselectchain", + "community": 91, + "norm_label": "makeselectchain()" + }, + { + "label": "makeInsertChain()", + "file_type": "code", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L38", + "_origin": "ast", + "id": "auth_user_test_makeinsertchain", + "community": 91, + "norm_label": "makeinsertchain()" + }, + { + "label": "crypto.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/crypto.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_crypto_test", + "community": 122, + "norm_label": "crypto.test.ts" + }, + { + "label": "getCrypto()", + "file_type": "code", + "source_file": "apps/api/tests/broker/crypto.test.ts", + "source_location": "L22", + "_origin": "ast", + "id": "broker_crypto_test_getcrypto", + "community": 122, + "norm_label": "getcrypto()" + }, + { + "label": "expand.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_expand_test", + "community": 86, + "norm_label": "expand.test.ts" + }, + { + "label": "__dirname", + "file_type": "code", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L21", + "_origin": "ast", + "id": "broker_expand_test_dirname", + "community": 86, + "norm_label": "__dirname" + }, + { + "label": "FIXTURES", + "file_type": "code", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L22", + "_origin": "ast", + "id": "broker_expand_test_fixtures", + "community": 86, + "norm_label": "fixtures" + }, + { + "label": "loadFixture()", + "file_type": "code", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L24", + "_origin": "ast", + "id": "broker_expand_test_loadfixture", + "community": 86, + "norm_label": "loadfixture()" + }, + { + "label": "outboxWorker.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_outboxworker_test", + "community": 115, + "norm_label": "outboxworker.test.ts" + }, + { + "label": "{\n mockUpdateSet,\n mockUpdate,\n mockWherePending,\n mockWhereCalEvents,\n mockFromFn,\n mockSelectFn,\n mockDecryptPassword,\n}", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L31", + "_origin": "ast", + "id": "broker_outboxworker_test_mockupdateset_mockupdate_mockwherepending_mockwherecalevents_mockfromfn_mockselectfn_mockdecryptpassword", + "community": 115, + "norm_label": "{\n mockupdateset,\n mockupdate,\n mockwherepending,\n mockwherecalevents,\n mockfromfn,\n mockselectfn,\n mockdecryptpassword,\n}" + }, + { + "label": "mockPendingRows", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L55", + "_origin": "ast", + "id": "broker_outboxworker_test_mockpendingrows", + "community": 115, + "norm_label": "mockpendingrows" + }, + { + "label": "FAKE_CRED_ROW", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L58", + "_origin": "ast", + "id": "broker_outboxworker_test_fake_cred_row", + "community": 115, + "norm_label": "fake_cred_row" + }, + { + "label": "DEFAULT_FORM_PAYLOAD", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L96", + "_origin": "ast", + "id": "broker_outboxworker_test_default_form_payload", + "community": 115, + "norm_label": "default_form_payload" + }, + { + "label": "makeRow()", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L104", + "_origin": "ast", + "id": "broker_outboxworker_test_makerow", + "community": 115, + "norm_label": "makerow()" + }, + { + "label": "makeResponse()", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L123", + "_origin": "ast", + "id": "broker_outboxworker_test_makeresponse", + "community": 115, + "norm_label": "makeresponse()" + }, + { + "label": "wireMockChain()", + "file_type": "code", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L128", + "_origin": "ast", + "id": "broker_outboxworker_test_wiremockchain", + "community": 115, + "norm_label": "wiremockchain()" + }, + { + "label": "poller.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_poller_test", + "community": 92, + "norm_label": "poller.test.ts" + }, + { + "label": "mockSyncCalendar", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L13", + "_origin": "ast", + "id": "broker_poller_test_mocksynccalendar", + "community": 92, + "norm_label": "mocksynccalendar" + }, + { + "label": "mockCalendarsSelectResult", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L25", + "_origin": "ast", + "id": "broker_poller_test_mockcalendarsselectresult", + "community": 92, + "norm_label": "mockcalendarsselectresult" + }, + { + "label": "mockCredentialsSelectResult", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L26", + "_origin": "ast", + "id": "broker_poller_test_mockcredentialsselectresult", + "community": 92, + "norm_label": "mockcredentialsselectresult" + }, + { + "label": "mockSelectLimit", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L37", + "_origin": "ast", + "id": "broker_poller_test_mockselectlimit", + "community": 92, + "norm_label": "mockselectlimit" + }, + { + "label": "mockSelectWhere", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L38", + "_origin": "ast", + "id": "broker_poller_test_mockselectwhere", + "community": 92, + "norm_label": "mockselectwhere" + }, + { + "label": "mockSelectFrom", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L39", + "_origin": "ast", + "id": "broker_poller_test_mockselectfrom", + "community": 92, + "norm_label": "mockselectfrom" + }, + { + "label": "mockSelect", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L40", + "_origin": "ast", + "id": "broker_poller_test_mockselect", + "community": 92, + "norm_label": "mockselect" + }, + { + "label": "mockFetchCalendars", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L62", + "_origin": "ast", + "id": "broker_poller_test_mockfetchcalendars", + "community": 92, + "norm_label": "mockfetchcalendars" + }, + { + "label": "mockCreateFastmailClient", + "file_type": "code", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L63", + "_origin": "ast", + "id": "broker_poller_test_mockcreatefastmailclient", + "community": 92, + "norm_label": "mockcreatefastmailclient" + }, + { + "label": "sync.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_sync_test", + "community": 69, + "norm_label": "sync.test.ts" + }, + { + "label": "mockOnDuplicateKeyUpdate", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L22", + "_origin": "ast", + "id": "broker_sync_test_mockonduplicatekeyupdate", + "community": 69, + "norm_label": "mockonduplicatekeyupdate" + }, + { + "label": "mockValues", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L23", + "_origin": "ast", + "id": "broker_sync_test_mockvalues", + "community": 69, + "norm_label": "mockvalues" + }, + { + "label": "mockInsert", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L24", + "_origin": "ast", + "id": "broker_sync_test_mockinsert", + "community": 69, + "norm_label": "mockinsert" + }, + { + "label": "mockLimit", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L25", + "_origin": "ast", + "id": "broker_sync_test_mocklimit", + "community": 69, + "norm_label": "mocklimit" + }, + { + "label": "mockWhere", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L26", + "_origin": "ast", + "id": "broker_sync_test_mockwhere", + "community": 69, + "norm_label": "mockwhere" + }, + { + "label": "mockFrom", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L27", + "_origin": "ast", + "id": "broker_sync_test_mockfrom", + "community": 69, + "norm_label": "mockfrom" + }, + { + "label": "mockSelect", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L28", + "_origin": "ast", + "id": "broker_sync_test_mockselect", + "community": 69, + "norm_label": "mockselect" + }, + { + "label": "mockDeleteWhere", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L30", + "_origin": "ast", + "id": "broker_sync_test_mockdeletewhere", + "community": 69, + "norm_label": "mockdeletewhere" + }, + { + "label": "mockDelete", + "file_type": "code", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L31", + "_origin": "ast", + "id": "broker_sync_test_mockdelete", + "community": 69, + "norm_label": "mockdelete" + }, + { + "label": "vevent.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/vevent.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_vevent_test", + "community": 12, + "norm_label": "vevent.test.ts" + }, + { + "label": "write.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "broker_write_test", + "community": 12, + "norm_label": "write.test.ts" + }, + { + "label": "makeMockResponse()", + "file_type": "code", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L25", + "_origin": "ast", + "id": "broker_write_test_makemockresponse", + "community": 12, + "norm_label": "makemockresponse()" + }, + { + "label": "health.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/health.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "tests_health_test", + "community": 209, + "norm_label": "health.test.ts" + }, + { + "label": "db.ts", + "file_type": "code", + "source_file": "apps/api/tests/helpers/db.ts", + "source_location": "L1", + "_origin": "ast", + "id": "helpers_db", + "community": 69, + "norm_label": "db.ts" + }, + { + "label": "createMockDb()", + "file_type": "code", + "source_file": "apps/api/tests/helpers/db.ts", + "source_location": "L19", + "_origin": "ast", + "id": "helpers_db_createmockdb", + "community": 69, + "norm_label": "createmockdb()" + }, + { + "label": "events.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/routes/events.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_events_test", + "community": 69, + "norm_label": "events.test.ts" + }, + { + "label": "login.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/routes/login.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_login_test", + "community": 194, + "norm_label": "login.test.ts" + }, + { + "label": "oidcMiddlewareSpy", + "file_type": "code", + "source_file": "apps/api/tests/routes/login.test.ts", + "source_location": "L42", + "_origin": "ast", + "id": "routes_login_test_oidcmiddlewarespy", + "community": 194, + "norm_label": "oidcmiddlewarespy" + }, + { + "label": "me.test.ts", + "file_type": "code", + "source_file": "apps/api/tests/routes/me.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "routes_me_test", + "community": 195, + "norm_label": "me.test.ts" + }, + { + "label": "oidcMiddlewareSpy", + "file_type": "code", + "source_file": "apps/api/tests/routes/me.test.ts", + "source_location": "L44", + "_origin": "ast", + "id": "routes_me_test_oidcmiddlewarespy", + "community": 195, + "norm_label": "oidcmiddlewarespy" + }, + { + "label": "tsconfig.json", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L1", + "_origin": "ast", + "id": "api_tsconfig", + "community": 33, + "norm_label": "tsconfig.json" + }, + { + "label": "compilerOptions", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L2", + "_origin": "ast", + "id": "api_tsconfig_compileroptions", + "community": 33, + "norm_label": "compileroptions" + }, + { + "label": "target", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L3", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_target", + "community": 33, + "norm_label": "target" + }, + { + "label": "module", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L4", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_module", + "community": 33, + "norm_label": "module" + }, + { + "label": "moduleResolution", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L5", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_moduleresolution", + "community": 33, + "norm_label": "moduleresolution" + }, + { + "label": "lib", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L6", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_lib", + "community": 33, + "norm_label": "lib" + }, + { + "label": "outDir", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L7", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_outdir", + "community": 33, + "norm_label": "outdir" + }, + { + "label": "rootDir", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L8", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_rootdir", + "community": 33, + "norm_label": "rootdir" + }, + { + "label": "strict", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L9", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_strict", + "community": 33, + "norm_label": "strict" + }, + { + "label": "esModuleInterop", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L10", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_esmoduleinterop", + "community": 33, + "norm_label": "esmoduleinterop" + }, + { + "label": "skipLibCheck", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L11", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_skiplibcheck", + "community": 33, + "norm_label": "skiplibcheck" + }, + { + "label": "forceConsistentCasingInFileNames", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L12", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_forceconsistentcasinginfilenames", + "community": 33, + "norm_label": "forceconsistentcasinginfilenames" + }, + { + "label": "resolveJsonModule", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L13", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_resolvejsonmodule", + "community": 33, + "norm_label": "resolvejsonmodule" + }, + { + "label": "declaration", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L14", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_declaration", + "community": 33, + "norm_label": "declaration" + }, + { + "label": "declarationMap", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L15", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_declarationmap", + "community": 33, + "norm_label": "declarationmap" + }, + { + "label": "sourceMap", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L16", + "_origin": "ast", + "id": "api_tsconfig_compileroptions_sourcemap", + "community": 33, + "norm_label": "sourcemap" + }, + { + "label": "include", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L18", + "_origin": "ast", + "id": "api_tsconfig_include", + "community": 33, + "norm_label": "include" + }, + { + "label": "exclude", + "file_type": "code", + "source_file": "apps/api/tsconfig.json", + "source_location": "L19", + "_origin": "ast", + "id": "api_tsconfig_exclude", + "community": 33, + "norm_label": "exclude" + }, + { + "label": "vitest.config.ts", + "file_type": "code", + "source_file": "apps/api/vitest.config.ts", + "source_location": "L1", + "_origin": "ast", + "id": "api_vitest_config", + "community": 204, + "norm_label": "vitest.config.ts" + }, + { + "label": "package.json", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L1", + "_origin": "ast", + "id": "pwa_package", + "community": 1, + "norm_label": "package.json" + }, + { + "label": "name", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L2", + "_origin": "ast", + "id": "pwa_package_name", + "community": 1, + "norm_label": "name" + }, + { + "label": "version", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L3", + "_origin": "ast", + "id": "pwa_package_version", + "community": 1, + "norm_label": "version" + }, + { + "label": "private", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L4", + "_origin": "ast", + "id": "pwa_package_private", + "community": 1, + "norm_label": "private" + }, + { + "label": "type", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L5", + "_origin": "ast", + "id": "pwa_package_type", + "community": 1, + "norm_label": "type" + }, + { + "label": "scripts", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L6", + "_origin": "ast", + "id": "pwa_package_scripts", + "community": 1, + "norm_label": "scripts" + }, + { + "label": "dev", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L7", + "_origin": "ast", + "id": "pwa_package_scripts_dev", + "community": 1, + "norm_label": "dev" + }, + { + "label": "build", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L8", + "_origin": "ast", + "id": "pwa_package_scripts_build", + "community": 1, + "norm_label": "build" + }, + { + "label": "preview", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L9", + "_origin": "ast", + "id": "pwa_package_scripts_preview", + "community": 1, + "norm_label": "preview" + }, + { + "label": "typecheck", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L10", + "_origin": "ast", + "id": "pwa_package_scripts_typecheck", + "community": 1, + "norm_label": "typecheck" + }, + { + "label": "test", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L11", + "_origin": "ast", + "id": "pwa_package_scripts_test", + "community": 1, + "norm_label": "test" + }, + { + "label": "dependencies", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L13", + "_origin": "ast", + "id": "pwa_package_dependencies", + "community": 1, + "norm_label": "dependencies" + }, + { + "label": "@schedule-x/calendar", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L14", + "_origin": "ast", + "id": "pwa_package_dependencies_schedule_x_calendar", + "community": 1, + "norm_label": "@schedule-x/calendar" + }, + { + "label": "@schedule-x/calendar-controls", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L15", + "_origin": "ast", + "id": "pwa_package_dependencies_schedule_x_calendar_controls", + "community": 1, + "norm_label": "@schedule-x/calendar-controls" + }, + { + "label": "@schedule-x/event-modal", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L16", + "_origin": "ast", + "id": "pwa_package_dependencies_schedule_x_event_modal", + "community": 1, + "norm_label": "@schedule-x/event-modal" + }, + { + "label": "@schedule-x/events-service", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L17", + "_origin": "ast", + "id": "pwa_package_dependencies_schedule_x_events_service", + "community": 1, + "norm_label": "@schedule-x/events-service" + }, + { + "label": "@schedule-x/react", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L18", + "_origin": "ast", + "id": "pwa_package_dependencies_schedule_x_react", + "community": 1, + "norm_label": "@schedule-x/react" + }, + { + "label": "@schedule-x/theme-default", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L19", + "_origin": "ast", + "id": "pwa_package_dependencies_schedule_x_theme_default", + "community": 1, + "norm_label": "@schedule-x/theme-default" + }, + { + "label": "@tanstack/react-query", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L20", + "_origin": "ast", + "id": "pwa_package_dependencies_tanstack_react_query", + "community": 1, + "norm_label": "@tanstack/react-query" + }, + { + "label": "ical.js", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L21", + "_origin": "ast", + "id": "pwa_package_dependencies_ical_js", + "community": 1, + "norm_label": "ical.js" + }, + { + "label": "lucide-react", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L22", + "_origin": "ast", + "id": "pwa_package_dependencies_lucide_react", + "community": 1, + "norm_label": "lucide-react" + }, + { + "label": "react", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L23", + "_origin": "ast", + "id": "pwa_package_dependencies_react", + "community": 1, + "norm_label": "react" + }, + { + "label": "react-dom", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L24", + "_origin": "ast", + "id": "pwa_package_dependencies_react_dom", + "community": 1, + "norm_label": "react-dom" + }, + { + "label": "temporal-polyfill", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L25", + "_origin": "ast", + "id": "pwa_package_dependencies_temporal_polyfill", + "community": 1, + "norm_label": "temporal-polyfill" + }, + { + "label": "vite-plugin-pwa", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L26", + "_origin": "ast", + "id": "pwa_package_dependencies_vite_plugin_pwa", + "community": 1, + "norm_label": "vite-plugin-pwa" + }, + { + "label": "zustand", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L27", + "_origin": "ast", + "id": "pwa_package_dependencies_zustand", + "community": 1, + "norm_label": "zustand" + }, + { + "label": "devDependencies", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L29", + "_origin": "ast", + "id": "pwa_package_devdependencies", + "community": 1, + "norm_label": "devdependencies" + }, + { + "label": "@testing-library/jest-dom", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L30", + "_origin": "ast", + "id": "pwa_package_devdependencies_testing_library_jest_dom", + "community": 1, + "norm_label": "@testing-library/jest-dom" + }, + { + "label": "@testing-library/react", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L31", + "_origin": "ast", + "id": "pwa_package_devdependencies_testing_library_react", + "community": 1, + "norm_label": "@testing-library/react" + }, + { + "label": "@types/react", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L32", + "_origin": "ast", + "id": "pwa_package_devdependencies_types_react", + "community": 1, + "norm_label": "@types/react" + }, + { + "label": "@types/react-dom", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L33", + "_origin": "ast", + "id": "pwa_package_devdependencies_types_react_dom", + "community": 1, + "norm_label": "@types/react-dom" + }, + { + "label": "@vitejs/plugin-react", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L34", + "_origin": "ast", + "id": "pwa_package_devdependencies_vitejs_plugin_react", + "community": 1, + "norm_label": "@vitejs/plugin-react" + }, + { + "label": "jsdom", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L35", + "_origin": "ast", + "id": "pwa_package_devdependencies_jsdom", + "community": 1, + "norm_label": "jsdom" + }, + { + "label": "typescript", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L36", + "_origin": "ast", + "id": "pwa_package_devdependencies_typescript", + "community": 1, + "norm_label": "typescript" + }, + { + "label": "vite", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L37", + "_origin": "ast", + "id": "pwa_package_devdependencies_vite", + "community": 1, + "norm_label": "vite" + }, + { + "label": "vitest", + "file_type": "code", + "source_file": "apps/pwa/package.json", + "source_location": "L38", + "_origin": "ast", + "id": "pwa_package_devdependencies_vitest", + "community": 1, + "norm_label": "vitest" + }, + { + "label": "App.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/App.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "src_app", + "community": 87, + "norm_label": "app.tsx" + }, + { + "label": "App()", + "file_type": "code", + "source_file": "apps/pwa/src/App.tsx", + "source_location": "L3", + "_origin": "ast", + "id": "src_app_app", + "community": 87, + "norm_label": "app()" + }, + { + "label": "client.test.ts", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "api_client_test", + "community": 202, + "norm_label": "client.test.ts" + }, + { + "label": "client.ts", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L1", + "_origin": "ast", + "id": "api_client", + "community": 16, + "norm_label": "client.ts" + }, + { + "label": "MeUser", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L18", + "_origin": "ast", + "id": "api_client_meuser", + "community": 16, + "norm_label": "meuser" + }, + { + "label": "MeResponse", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L24", + "_origin": "ast", + "id": "api_client_meresponse", + "community": 16, + "norm_label": "meresponse" + }, + { + "label": "fetchMe()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L28", + "_origin": "ast", + "id": "api_client_fetchme", + "community": 52, + "norm_label": "fetchme()" + }, + { + "label": "CalendarOccurrence", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L71", + "_origin": "ast", + "id": "api_client_calendaroccurrence", + "community": 85, + "norm_label": "calendaroccurrence" + }, + { + "label": "OccurrencesResponse", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L93", + "_origin": "ast", + "id": "api_client_occurrencesresponse", + "community": 16, + "norm_label": "occurrencesresponse" + }, + { + "label": "fetchEvents()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L106", + "_origin": "ast", + "id": "api_client_fetchevents", + "community": 52, + "norm_label": "fetchevents()" + }, + { + "label": "RecurrencePreset", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L130", + "_origin": "ast", + "id": "api_client_recurrencepreset", + "community": 16, + "norm_label": "recurrencepreset" + }, + { + "label": "CreateEventPayload", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L136", + "_origin": "ast", + "id": "api_client_createeventpayload", + "community": 16, + "norm_label": "createeventpayload" + }, + { + "label": "CreateEventResponse", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L151", + "_origin": "ast", + "id": "api_client_createeventresponse", + "community": 16, + "norm_label": "createeventresponse" + }, + { + "label": "WritableCalendar", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L160", + "_origin": "ast", + "id": "api_client_writablecalendar", + "community": 114, + "norm_label": "writablecalendar" + }, + { + "label": "createEvent()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L173", + "_origin": "ast", + "id": "api_client_createevent", + "community": 16, + "norm_label": "createevent()" + }, + { + "label": "updateEvent()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L194", + "_origin": "ast", + "id": "api_client_updateevent", + "community": 16, + "norm_label": "updateevent()" + }, + { + "label": "deleteEvent()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L218", + "_origin": "ast", + "id": "api_client_deleteevent", + "community": 121, + "norm_label": "deleteevent()" + }, + { + "label": "SyncStatusValue", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L235", + "_origin": "ast", + "id": "api_client_syncstatusvalue", + "community": 16, + "norm_label": "syncstatusvalue" + }, + { + "label": "SyncStatus", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L241", + "_origin": "ast", + "id": "api_client_syncstatus", + "community": 16, + "norm_label": "syncstatus" + }, + { + "label": "fetchSyncStatus()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L254", + "_origin": "ast", + "id": "api_client_fetchsyncstatus", + "community": 16, + "norm_label": "fetchsyncstatus()" + }, + { + "label": "fetchWritableCalendars()", + "file_type": "code", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L273", + "_origin": "ast", + "id": "api_client_fetchwritablecalendars", + "community": 16, + "norm_label": "fetchwritablecalendars()" + }, + { + "label": "AppNav.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_appnav", + "community": 94, + "norm_label": "appnav.tsx" + }, + { + "label": "AppNavProps", + "file_type": "code", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L16", + "_origin": "ast", + "id": "components_appnav_appnavprops", + "community": 94, + "norm_label": "appnavprops" + }, + { + "label": "AppNav()", + "file_type": "code", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L22", + "_origin": "ast", + "id": "components_appnav_appnav", + "community": 94, + "norm_label": "appnav()" + }, + { + "label": "PhoneNav()", + "file_type": "code", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L33", + "_origin": "ast", + "id": "components_appnav_phonenav", + "community": 94, + "norm_label": "phonenav()" + }, + { + "label": "DesktopNav()", + "file_type": "code", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L106", + "_origin": "ast", + "id": "components_appnav_desktopnav", + "community": 94, + "norm_label": "desktopnav()" + }, + { + "label": "CalendarShell.test.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_calendarshell_test", + "community": 52, + "norm_label": "calendarshell.test.tsx" + }, + { + "label": "mockEventsServiceSet", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L39", + "_origin": "ast", + "id": "components_calendarshell_test_mockeventsserviceset", + "community": 52, + "norm_label": "mockeventsserviceset" + }, + { + "label": "TIMED_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L82", + "_origin": "ast", + "id": "components_calendarshell_test_timed_occurrence", + "community": 52, + "norm_label": "timed_occurrence" + }, + { + "label": "ALLDAY_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L98", + "_origin": "ast", + "id": "components_calendarshell_test_allday_occurrence", + "community": 52, + "norm_label": "allday_occurrence" + }, + { + "label": "makeQueryClient()", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L116", + "_origin": "ast", + "id": "components_calendarshell_test_makequeryclient", + "community": 52, + "norm_label": "makequeryclient()" + }, + { + "label": "renderWithClient()", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L128", + "_origin": "ast", + "id": "components_calendarshell_test_renderwithclient", + "community": 52, + "norm_label": "renderwithclient()" + }, + { + "label": "CalendarShell.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_calendarshell", + "community": 87, + "norm_label": "calendarshell.tsx" + }, + { + "label": "resolveDefaultView()", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L64", + "_origin": "ast", + "id": "components_calendarshell_resolvedefaultview", + "community": 87, + "norm_label": "resolvedefaultview()" + }, + { + "label": "isPhone()", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L69", + "_origin": "ast", + "id": "components_calendarshell_isphone", + "community": 87, + "norm_label": "isphone()" + }, + { + "label": "CalendarShell()", + "file_type": "code", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L75", + "_origin": "ast", + "id": "components_calendarshell_calendarshell", + "community": 87, + "norm_label": "calendarshell()" + }, + { + "label": "ColorLegend.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_colorlegend", + "community": 94, + "norm_label": "colorlegend.tsx" + }, + { + "label": "LegendMember", + "file_type": "code", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L18", + "_origin": "ast", + "id": "components_colorlegend_legendmember", + "community": 94, + "norm_label": "legendmember" + }, + { + "label": "ColorLegendProps", + "file_type": "code", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L24", + "_origin": "ast", + "id": "components_colorlegend_colorlegendprops", + "community": 94, + "norm_label": "colorlegendprops" + }, + { + "label": "ColorLegend()", + "file_type": "code", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L28", + "_origin": "ast", + "id": "components_colorlegend_colorlegend", + "community": 94, + "norm_label": "colorlegend()" + }, + { + "label": "LegendRow()", + "file_type": "code", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L58", + "_origin": "ast", + "id": "components_colorlegend_legendrow", + "community": 94, + "norm_label": "legendrow()" + }, + { + "label": "DeleteConfirmationDialog.test.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_deleteconfirmationdialog_test", + "community": 121, + "norm_label": "deleteconfirmationdialog.test.tsx" + }, + { + "label": "{\n mockDeleteEvent,\n mockSetDeleteDialog,\n mockSetLastSyncedUid,\n mockSetOpenEventId,\n mockDeleteDialogOpen,\n mockDeleteDialogUid,\n}", + "file_type": "code", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L23", + "_origin": "ast", + "id": "components_deleteconfirmationdialog_test_mockdeleteevent_mocksetdeletedialog_mocksetlastsynceduid_mocksetopeneventid_mockdeletedialogopen_mockdeletedialoguid", + "community": 121, + "norm_label": "{\n mockdeleteevent,\n mocksetdeletedialog,\n mocksetlastsynceduid,\n mocksetopeneventid,\n mockdeletedialogopen,\n mockdeletedialoguid,\n}" + }, + { + "label": "makeQueryClient()", + "file_type": "code", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L62", + "_origin": "ast", + "id": "components_deleteconfirmationdialog_test_makequeryclient", + "community": 121, + "norm_label": "makequeryclient()" + }, + { + "label": "renderDialog()", + "file_type": "code", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L66", + "_origin": "ast", + "id": "components_deleteconfirmationdialog_test_renderdialog", + "community": 121, + "norm_label": "renderdialog()" + }, + { + "label": "DeleteConfirmationDialog.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_deleteconfirmationdialog", + "community": 121, + "norm_label": "deleteconfirmationdialog.tsx" + }, + { + "label": "DeleteConfirmationDialog()", + "file_type": "code", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L33", + "_origin": "ast", + "id": "components_deleteconfirmationdialog_deleteconfirmationdialog", + "community": 121, + "norm_label": "deleteconfirmationdialog()" + }, + { + "label": "EmptyState.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/EmptyState.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_emptystate", + "community": 192, + "norm_label": "emptystate.tsx" + }, + { + "label": "EmptyState()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EmptyState.tsx", + "source_location": "L15", + "_origin": "ast", + "id": "components_emptystate_emptystate", + "community": 192, + "norm_label": "emptystate()" + }, + { + "label": "ErrorBoundary.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_errorboundary", + "community": 118, + "norm_label": "errorboundary.tsx" + }, + { + "label": "ErrorBoundaryProps", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L12", + "_origin": "ast", + "id": "components_errorboundary_errorboundaryprops", + "community": 118, + "norm_label": "errorboundaryprops" + }, + { + "label": "ErrorBoundaryState", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L16", + "_origin": "ast", + "id": "components_errorboundary_errorboundarystate", + "community": 118, + "norm_label": "errorboundarystate" + }, + { + "label": "ErrorBoundary", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L21", + "_origin": "ast", + "id": "components_errorboundary_errorboundary", + "community": 118, + "norm_label": "errorboundary" + }, + { + "label": ".getDerivedStateFromError()", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L24", + "_origin": "ast", + "id": "components_errorboundary_errorboundary_getderivedstatefromerror", + "community": 118, + "norm_label": ".getderivedstatefromerror()" + }, + { + "label": ".componentDidCatch()", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L28", + "_origin": "ast", + "id": "components_errorboundary_errorboundary_componentdidcatch", + "community": 118, + "norm_label": ".componentdidcatch()" + }, + { + "label": ".render()", + "file_type": "code", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L34", + "_origin": "ast", + "id": "components_errorboundary_errorboundary_render", + "community": 119, + "norm_label": ".render()" + }, + { + "label": "EventDetailPopover.test.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_eventdetailpopover_test", + "community": 85, + "norm_label": "eventdetailpopover.test.tsx" + }, + { + "label": "{\n mockSetOpenEventId,\n mockSetEventForm,\n mockSetDeleteDialog,\n}", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L22", + "_origin": "ast", + "id": "components_eventdetailpopover_test_mocksetopeneventid_mockseteventform_mocksetdeletedialog", + "community": 85, + "norm_label": "{\n mocksetopeneventid,\n mockseteventform,\n mocksetdeletedialog,\n}" + }, + { + "label": "TIMED_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L50", + "_origin": "ast", + "id": "components_eventdetailpopover_test_timed_occurrence", + "community": 85, + "norm_label": "timed_occurrence" + }, + { + "label": "OCCURRENCE_WITH_HTML", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L67", + "_origin": "ast", + "id": "components_eventdetailpopover_test_occurrence_with_html", + "community": 85, + "norm_label": "occurrence_with_html" + }, + { + "label": "ALLDAY_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L76", + "_origin": "ast", + "id": "components_eventdetailpopover_test_allday_occurrence", + "community": 85, + "norm_label": "allday_occurrence" + }, + { + "label": "renderPopover()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L100", + "_origin": "ast", + "id": "components_eventdetailpopover_test_renderpopover", + "community": 119, + "norm_label": "renderpopover()" + }, + { + "label": "EventDetailPopover.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_eventdetailpopover", + "community": 85, + "norm_label": "eventdetailpopover.tsx" + }, + { + "label": "ScheduleXEventModalProps", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L34", + "_origin": "ast", + "id": "components_eventdetailpopover_schedulexeventmodalprops", + "community": 85, + "norm_label": "schedulexeventmodalprops" + }, + { + "label": "formatDateTime()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L57", + "_origin": "ast", + "id": "components_eventdetailpopover_formatdatetime", + "community": 85, + "norm_label": "formatdatetime()" + }, + { + "label": "EventDetailPopover()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L108", + "_origin": "ast", + "id": "components_eventdetailpopover_eventdetailpopover", + "community": 85, + "norm_label": "eventdetailpopover()" + }, + { + "label": "EventForm.test.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_eventform_test", + "community": 114, + "norm_label": "eventform.test.tsx" + }, + { + "label": "{\n mockSetEventForm,\n mockSetLastSyncedUid,\n mockCreateEvent,\n mockUpdateEvent,\n mockFetchWritableCalendars,\n}", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L40", + "_origin": "ast", + "id": "components_eventform_test_mockseteventform_mocksetlastsynceduid_mockcreateevent_mockupdateevent_mockfetchwritablecalendars", + "community": 114, + "norm_label": "{\n mockseteventform,\n mocksetlastsynceduid,\n mockcreateevent,\n mockupdateevent,\n mockfetchwritablecalendars,\n}" + }, + { + "label": "ONE_CALENDAR", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L87", + "_origin": "ast", + "id": "components_eventform_test_one_calendar", + "community": 114, + "norm_label": "one_calendar" + }, + { + "label": "TWO_CALENDARS", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L91", + "_origin": "ast", + "id": "components_eventform_test_two_calendars", + "community": 114, + "norm_label": "two_calendars" + }, + { + "label": "EDIT_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L96", + "_origin": "ast", + "id": "components_eventform_test_edit_occurrence", + "community": 114, + "norm_label": "edit_occurrence" + }, + { + "label": "renderForm()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L120", + "_origin": "ast", + "id": "components_eventform_test_renderform", + "community": 119, + "norm_label": "renderform()" + }, + { + "label": "RECURRING_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L475", + "_origin": "ast", + "id": "components_eventform_test_recurring_occurrence", + "community": 114, + "norm_label": "recurring_occurrence" + }, + { + "label": "LATE_OCCURRENCE", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L500", + "_origin": "ast", + "id": "components_eventform_test_late_occurrence", + "community": 114, + "norm_label": "late_occurrence" + }, + { + "label": "EventForm.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_eventform", + "community": 16, + "norm_label": "eventform.tsx" + }, + { + "label": "isPhoneBreakpoint()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L55", + "_origin": "ast", + "id": "components_eventform_isphonebreakpoint", + "community": 16, + "norm_label": "isphonebreakpoint()" + }, + { + "label": "readLastCalendarUrl()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L60", + "_origin": "ast", + "id": "components_eventform_readlastcalendarurl", + "community": 16, + "norm_label": "readlastcalendarurl()" + }, + { + "label": "writeLastCalendarUrl()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L69", + "_origin": "ast", + "id": "components_eventform_writelastcalendarurl", + "community": 16, + "norm_label": "writelastcalendarurl()" + }, + { + "label": "exclusiveEndToInclusiveDate()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L86", + "_origin": "ast", + "id": "components_eventform_exclusiveendtoinclusivedate", + "community": 16, + "norm_label": "exclusiveendtoinclusivedate()" + }, + { + "label": "parseDateTime()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L107", + "_origin": "ast", + "id": "components_eventform_parsedatetime", + "community": 16, + "norm_label": "parsedatetime()" + }, + { + "label": "initFormDateTime()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L143", + "_origin": "ast", + "id": "components_eventform_initformdatetime", + "community": 16, + "norm_label": "initformdatetime()" + }, + { + "label": "EventForm()", + "file_type": "code", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L158", + "_origin": "ast", + "id": "components_eventform_eventform", + "community": 16, + "norm_label": "eventform()" + }, + { + "label": "InstallPrompt.test.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_installprompt_test", + "community": 59, + "norm_label": "installprompt.test.tsx" + }, + { + "label": "setUserAgent()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L25", + "_origin": "ast", + "id": "components_installprompt_test_setuseragent", + "community": 59, + "norm_label": "setuseragent()" + }, + { + "label": "setStandalone()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L33", + "_origin": "ast", + "id": "components_installprompt_test_setstandalone", + "community": 59, + "norm_label": "setstandalone()" + }, + { + "label": "InstallPrompt.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_installprompt", + "community": 59, + "norm_label": "installprompt.tsx" + }, + { + "label": "isIOSSafariNonStandalone()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L39", + "_origin": "ast", + "id": "components_installprompt_isiossafarinonstandalone", + "community": 59, + "norm_label": "isiossafarinonstandalone()" + }, + { + "label": "isInstalled()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L54", + "_origin": "ast", + "id": "components_installprompt_isinstalled", + "community": 59, + "norm_label": "isinstalled()" + }, + { + "label": "BeforeInstallPromptEvent", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L63", + "_origin": "ast", + "id": "components_installprompt_beforeinstallpromptevent", + "community": 59, + "norm_label": "beforeinstallpromptevent" + }, + { + "label": "useAndroidInstallPrompt()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L76", + "_origin": "ast", + "id": "components_installprompt_useandroidinstallprompt", + "community": 59, + "norm_label": "useandroidinstallprompt()" + }, + { + "label": "IOS_STEPS", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L109", + "_origin": "ast", + "id": "components_installprompt_ios_steps", + "community": 59, + "norm_label": "ios_steps" + }, + { + "label": "WalkthroughSheetProps", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L117", + "_origin": "ast", + "id": "components_installprompt_walkthroughsheetprops", + "community": 59, + "norm_label": "walkthroughsheetprops" + }, + { + "label": "WalkthroughSheet()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L121", + "_origin": "ast", + "id": "components_installprompt_walkthroughsheet", + "community": 59, + "norm_label": "walkthroughsheet()" + }, + { + "label": "readDismissed()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L284", + "_origin": "ast", + "id": "components_installprompt_readdismissed", + "community": 59, + "norm_label": "readdismissed()" + }, + { + "label": "persistDismissed()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L292", + "_origin": "ast", + "id": "components_installprompt_persistdismissed", + "community": 59, + "norm_label": "persistdismissed()" + }, + { + "label": "InstallPrompt()", + "file_type": "code", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L300", + "_origin": "ast", + "id": "components_installprompt_installprompt", + "community": 59, + "norm_label": "installprompt()" + }, + { + "label": "SkeletonCalendar.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_skeletoncalendar", + "community": 123, + "norm_label": "skeletoncalendar.tsx" + }, + { + "label": "SkeletonVariant", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L15", + "_origin": "ast", + "id": "components_skeletoncalendar_skeletonvariant", + "community": 123, + "norm_label": "skeletonvariant" + }, + { + "label": "SkeletonCalendarProps", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L17", + "_origin": "ast", + "id": "components_skeletoncalendar_skeletoncalendarprops", + "community": 123, + "norm_label": "skeletoncalendarprops" + }, + { + "label": "shimmerStyle", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L22", + "_origin": "ast", + "id": "components_skeletoncalendar_shimmerstyle", + "community": 123, + "norm_label": "shimmerstyle" + }, + { + "label": "SkeletonCalendar()", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L30", + "_origin": "ast", + "id": "components_skeletoncalendar_skeletoncalendar", + "community": 123, + "norm_label": "skeletoncalendar()" + }, + { + "label": "MonthSkeleton()", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L47", + "_origin": "ast", + "id": "components_skeletoncalendar_monthskeleton", + "community": 123, + "norm_label": "monthskeleton()" + }, + { + "label": "AgendaSkeleton()", + "file_type": "code", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L94", + "_origin": "ast", + "id": "components_skeletoncalendar_agendaskeleton", + "community": 123, + "norm_label": "agendaskeleton()" + }, + { + "label": "SyncStateToast.test.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_syncstatetoast_test", + "community": 119, + "norm_label": "syncstatetoast.test.tsx" + }, + { + "label": "{\n mockLastSyncedUid,\n mockSetLastSyncedUid,\n mockFetchSyncStatus,\n}", + "file_type": "code", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L24", + "_origin": "ast", + "id": "components_syncstatetoast_test_mocklastsynceduid_mocksetlastsynceduid_mockfetchsyncstatus", + "community": 119, + "norm_label": "{\n mocklastsynceduid,\n mocksetlastsynceduid,\n mockfetchsyncstatus,\n}" + }, + { + "label": "makeQueryClient()", + "file_type": "code", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L50", + "_origin": "ast", + "id": "components_syncstatetoast_test_makequeryclient", + "community": 119, + "norm_label": "makequeryclient()" + }, + { + "label": "renderToast()", + "file_type": "code", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L58", + "_origin": "ast", + "id": "components_syncstatetoast_test_rendertoast", + "community": 119, + "norm_label": "rendertoast()" + }, + { + "label": "SyncStateToast.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "components_syncstatetoast", + "community": 16, + "norm_label": "syncstatetoast.tsx" + }, + { + "label": "SyncStateToast()", + "file_type": "code", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L31", + "_origin": "ast", + "id": "components_syncstatetoast_syncstatetoast", + "community": 119, + "norm_label": "syncstatetoast()" + }, + { + "label": "calendarConfig.test.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/calendarConfig.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_calendarconfig_test", + "community": 61, + "norm_label": "calendarconfig.test.ts" + }, + { + "label": "calendarConfig.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_calendarconfig", + "community": 61, + "norm_label": "calendarconfig.ts" + }, + { + "label": "MemberCalendarConfig", + "file_type": "code", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L40", + "_origin": "ast", + "id": "lib_calendarconfig_membercalendarconfig", + "community": 61, + "norm_label": "membercalendarconfig" + }, + { + "label": "ScheduleXCalendarEntry", + "file_type": "code", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L46", + "_origin": "ast", + "id": "lib_calendarconfig_schedulexcalendarentry", + "community": 61, + "norm_label": "schedulexcalendarentry" + }, + { + "label": "CalendarConfig", + "file_type": "code", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L55", + "_origin": "ast", + "id": "lib_calendarconfig_calendarconfig", + "community": 61, + "norm_label": "calendarconfig" + }, + { + "label": "buildCalendarConfig()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L71", + "_origin": "ast", + "id": "lib_calendarconfig_buildcalendarconfig", + "community": 61, + "norm_label": "buildcalendarconfig()" + }, + { + "label": "colorUtils.test.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_colorutils_test", + "community": 61, + "norm_label": "colorutils.test.ts" + }, + { + "label": "hexToRgbTest()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L101", + "_origin": "ast", + "id": "lib_colorutils_test_hextorgbtest", + "community": 61, + "norm_label": "hextorgbtest()" + }, + { + "label": "colorUtils.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_colorutils", + "community": 61, + "norm_label": "colorutils.ts" + }, + { + "label": "hexToRgb()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L15", + "_origin": "ast", + "id": "lib_colorutils_hextorgb", + "community": 61, + "norm_label": "hextorgb()" + }, + { + "label": "rgbToHex()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L26", + "_origin": "ast", + "id": "lib_colorutils_rgbtohex", + "community": 61, + "norm_label": "rgbtohex()" + }, + { + "label": "hexToContainer()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L37", + "_origin": "ast", + "id": "lib_colorutils_hextocontainer", + "community": 61, + "norm_label": "hextocontainer()" + }, + { + "label": "hexToOnContainer()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L48", + "_origin": "ast", + "id": "lib_colorutils_hextooncontainer", + "community": 61, + "norm_label": "hextooncontainer()" + }, + { + "label": "deriveScheduleXColors()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L62", + "_origin": "ast", + "id": "lib_colorutils_deriveschedulexcolors", + "community": 61, + "norm_label": "deriveschedulexcolors()" + }, + { + "label": "eventDateTime.test.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/eventDateTime.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_eventdatetime_test", + "community": 159, + "norm_label": "eventdatetime.test.ts" + }, + { + "label": "eventDateTime.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/eventDateTime.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_eventdatetime", + "community": 159, + "norm_label": "eventdatetime.ts" + }, + { + "label": "serializeEventDateTime()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/eventDateTime.ts", + "source_location": "L33", + "_origin": "ast", + "id": "lib_eventdatetime_serializeeventdatetime", + "community": 159, + "norm_label": "serializeeventdatetime()" + }, + { + "label": "localWallClockToUtcIso()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/eventDateTime.ts", + "source_location": "L59", + "_origin": "ast", + "id": "lib_eventdatetime_localwallclocktoutciso", + "community": 159, + "norm_label": "localwallclocktoutciso()" + }, + { + "label": "hydrateEvents.test.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_hydrateevents_test", + "community": 52, + "norm_label": "hydrateevents.test.ts" + }, + { + "label": "TestOccurrence", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L23", + "_origin": "ast", + "id": "lib_hydrateevents_test_testoccurrence", + "community": 52, + "norm_label": "testoccurrence" + }, + { + "label": "makeOccurrence()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L39", + "_origin": "ast", + "id": "lib_hydrateevents_test_makeoccurrence", + "community": 52, + "norm_label": "makeoccurrence()" + }, + { + "label": "hydrateEvents.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_hydrateevents", + "community": 52, + "norm_label": "hydrateevents.ts" + }, + { + "label": "CalendarOccurrence", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L26", + "_origin": "ast", + "id": "lib_hydrateevents_calendaroccurrence", + "community": 52, + "norm_label": "calendaroccurrence" + }, + { + "label": "ScheduleXEvent", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L42", + "_origin": "ast", + "id": "lib_hydrateevents_schedulexevent", + "community": 52, + "norm_label": "schedulexevent" + }, + { + "label": "hydrateEvents()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L71", + "_origin": "ast", + "id": "lib_hydrateevents_hydrateevents", + "community": 52, + "norm_label": "hydrateevents()" + }, + { + "label": "loginRedirect.test.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/loginRedirect.test.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_loginredirect_test", + "community": 87, + "norm_label": "loginredirect.test.ts" + }, + { + "label": "locationStub", + "file_type": "code", + "source_file": "apps/pwa/src/lib/loginRedirect.test.ts", + "source_location": "L15", + "_origin": "ast", + "id": "lib_loginredirect_test_locationstub", + "community": 87, + "norm_label": "locationstub" + }, + { + "label": "loginRedirect.ts", + "file_type": "code", + "source_file": "apps/pwa/src/lib/loginRedirect.ts", + "source_location": "L1", + "_origin": "ast", + "id": "lib_loginredirect", + "community": 87, + "norm_label": "loginredirect.ts" + }, + { + "label": "maybeRedirectToLogin()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/loginRedirect.ts", + "source_location": "L28", + "_origin": "ast", + "id": "lib_loginredirect_mayberedirecttologin", + "community": 87, + "norm_label": "mayberedirecttologin()" + }, + { + "label": "clearLoginRedirect()", + "file_type": "code", + "source_file": "apps/pwa/src/lib/loginRedirect.ts", + "source_location": "L55", + "_origin": "ast", + "id": "lib_loginredirect_clearloginredirect", + "community": 87, + "norm_label": "clearloginredirect()" + }, + { + "label": "main.tsx", + "file_type": "code", + "source_file": "apps/pwa/src/main.tsx", + "source_location": "L1", + "_origin": "ast", + "id": "src_main", + "community": 118, + "norm_label": "main.tsx" + }, + { + "label": "queryClient", + "file_type": "code", + "source_file": "apps/pwa/src/main.tsx", + "source_location": "L17", + "_origin": "ast", + "id": "src_main_queryclient", + "community": 118, + "norm_label": "queryclient" + }, + { + "label": "calendarStore.ts", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L1", + "_origin": "ast", + "id": "store_calendarstore", + "community": 124, + "norm_label": "calendarstore.ts" + }, + { + "label": "BreakpointGroup", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L30", + "_origin": "ast", + "id": "store_calendarstore_breakpointgroup", + "community": 124, + "norm_label": "breakpointgroup" + }, + { + "label": "CalendarStore", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L32", + "_origin": "ast", + "id": "store_calendarstore_calendarstore", + "community": 124, + "norm_label": "calendarstore" + }, + { + "label": "getBreakpointGroup()", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L85", + "_origin": "ast", + "id": "store_calendarstore_getbreakpointgroup", + "community": 124, + "norm_label": "getbreakpointgroup()" + }, + { + "label": "viewStorageKey()", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L91", + "_origin": "ast", + "id": "store_calendarstore_viewstoragekey", + "community": 124, + "norm_label": "viewstoragekey()" + }, + { + "label": "readPersistedView()", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L96", + "_origin": "ast", + "id": "store_calendarstore_readpersistedview", + "community": 124, + "norm_label": "readpersistedview()" + }, + { + "label": "initialCalendarRange()", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L109", + "_origin": "ast", + "id": "store_calendarstore_initialcalendarrange", + "community": 124, + "norm_label": "initialcalendarrange()" + }, + { + "label": "todayIso()", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L122", + "_origin": "ast", + "id": "store_calendarstore_todayiso", + "community": 16, + "norm_label": "todayiso()" + }, + { + "label": "useCalendarStore", + "file_type": "code", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L128", + "_origin": "ast", + "id": "store_calendarstore_usecalendarstore", + "community": 85, + "norm_label": "usecalendarstore" + }, + { + "label": "test-setup.ts", + "file_type": "code", + "source_file": "apps/pwa/src/test-setup.ts", + "source_location": "L1", + "_origin": "ast", + "id": "src_test_setup", + "community": 208, + "norm_label": "test-setup.ts" + }, + { + "label": "tsconfig.json", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L1", + "_origin": "ast", + "id": "pwa_tsconfig", + "community": 54, + "norm_label": "tsconfig.json" + }, + { + "label": "compilerOptions", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L2", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions", + "community": 54, + "norm_label": "compileroptions" + }, + { + "label": "target", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L3", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_target", + "community": 54, + "norm_label": "target" + }, + { + "label": "lib", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L4", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_lib", + "community": 54, + "norm_label": "lib" + }, + { + "label": "module", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L5", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_module", + "community": 54, + "norm_label": "module" + }, + { + "label": "moduleResolution", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L6", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_moduleresolution", + "community": 54, + "norm_label": "moduleresolution" + }, + { + "label": "jsx", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L7", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_jsx", + "community": 54, + "norm_label": "jsx" + }, + { + "label": "strict", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L8", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_strict", + "community": 54, + "norm_label": "strict" + }, + { + "label": "skipLibCheck", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L9", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_skiplibcheck", + "community": 54, + "norm_label": "skiplibcheck" + }, + { + "label": "esModuleInterop", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L10", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_esmoduleinterop", + "community": 54, + "norm_label": "esmoduleinterop" + }, + { + "label": "forceConsistentCasingInFileNames", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L11", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_forceconsistentcasinginfilenames", + "community": 54, + "norm_label": "forceconsistentcasinginfilenames" + }, + { + "label": "noEmit", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L12", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_noemit", + "community": 54, + "norm_label": "noemit" + }, + { + "label": "resolveJsonModule", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L13", + "_origin": "ast", + "id": "pwa_tsconfig_compileroptions_resolvejsonmodule", + "community": 54, + "norm_label": "resolvejsonmodule" + }, + { + "label": "include", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L15", + "_origin": "ast", + "id": "pwa_tsconfig_include", + "community": 54, + "norm_label": "include" + }, + { + "label": "exclude", + "file_type": "code", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L16", + "_origin": "ast", + "id": "pwa_tsconfig_exclude", + "community": 54, + "norm_label": "exclude" + }, + { + "label": "vite.config.ts", + "file_type": "code", + "source_file": "apps/pwa/vite.config.ts", + "source_location": "L1", + "_origin": "ast", + "id": "pwa_vite_config", + "community": 206, + "norm_label": "vite.config.ts" + }, + { + "label": "vitest.config.ts", + "file_type": "code", + "source_file": "apps/pwa/vitest.config.ts", + "source_location": "L1", + "_origin": "ast", + "id": "pwa_vitest_config", + "community": 207, + "norm_label": "vitest.config.ts" + }, + { + "label": "package.json", + "file_type": "code", + "source_file": "package.json", + "source_location": "L1", + "_origin": "ast", + "id": "package", + "community": 88, + "norm_label": "package.json" + }, + { + "label": "name", + "file_type": "code", + "source_file": "package.json", + "source_location": "L2", + "_origin": "ast", + "id": "package_name", + "community": 88, + "norm_label": "name" + }, + { + "label": "private", + "file_type": "code", + "source_file": "package.json", + "source_location": "L3", + "_origin": "ast", + "id": "package_private", + "community": 88, + "norm_label": "private" + }, + { + "label": "packageManager", + "file_type": "code", + "source_file": "package.json", + "source_location": "L4", + "_origin": "ast", + "id": "package_packagemanager", + "community": 88, + "norm_label": "packagemanager" + }, + { + "label": "scripts", + "file_type": "code", + "source_file": "package.json", + "source_location": "L5", + "_origin": "ast", + "id": "package_scripts", + "community": 88, + "norm_label": "scripts" + }, + { + "label": "dev:api", + "file_type": "code", + "source_file": "package.json", + "source_location": "L6", + "_origin": "ast", + "id": "package_scripts_dev_api", + "community": 88, + "norm_label": "dev:api" + }, + { + "label": "dev:pwa", + "file_type": "code", + "source_file": "package.json", + "source_location": "L7", + "_origin": "ast", + "id": "package_scripts_dev_pwa", + "community": 88, + "norm_label": "dev:pwa" + }, + { + "label": "build", + "file_type": "code", + "source_file": "package.json", + "source_location": "L8", + "_origin": "ast", + "id": "package_scripts_build", + "community": 88, + "norm_label": "build" + }, + { + "label": "test", + "file_type": "code", + "source_file": "package.json", + "source_location": "L9", + "_origin": "ast", + "id": "package_scripts_test", + "community": 88, + "norm_label": "test" + }, + { + "label": "lint", + "file_type": "code", + "source_file": "package.json", + "source_location": "L10", + "_origin": "ast", + "id": "package_scripts_lint", + "community": 88, + "norm_label": "lint" + }, + { + "label": "typecheck", + "file_type": "code", + "source_file": "package.json", + "source_location": "L11", + "_origin": "ast", + "id": "package_scripts_typecheck", + "community": 88, + "norm_label": "typecheck" + }, + { + "label": "SKILL.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L1", + "_origin": "ast", + "id": "playwright_cli_skill", + "community": 14, + "norm_label": "skill.md" + }, + { + "label": "Browser Automation with playwright-cli", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L7", + "_origin": "ast", + "id": "playwright_cli_skill_browser_automation_with_playwright_cli", + "community": 14, + "norm_label": "browser automation with playwright-cli" + }, + { + "label": "Quick start", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L9", + "_origin": "ast", + "id": "playwright_cli_skill_quick_start", + "community": 14, + "norm_label": "quick start" + }, + { + "label": "Commands", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L26", + "_origin": "ast", + "id": "playwright_cli_skill_commands", + "community": 14, + "norm_label": "commands" + }, + { + "label": "Core", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L28", + "_origin": "ast", + "id": "playwright_cli_skill_core", + "community": 14, + "norm_label": "core" + }, + { + "label": "Navigation", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L62", + "_origin": "ast", + "id": "playwright_cli_skill_navigation", + "community": 14, + "norm_label": "navigation" + }, + { + "label": "Keyboard", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L70", + "_origin": "ast", + "id": "playwright_cli_skill_keyboard", + "community": 14, + "norm_label": "keyboard" + }, + { + "label": "Mouse", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L79", + "_origin": "ast", + "id": "playwright_cli_skill_mouse", + "community": 14, + "norm_label": "mouse" + }, + { + "label": "Save as", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L90", + "_origin": "ast", + "id": "playwright_cli_skill_save_as", + "community": 14, + "norm_label": "save as" + }, + { + "label": "Tabs", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L99", + "_origin": "ast", + "id": "playwright_cli_skill_tabs", + "community": 14, + "norm_label": "tabs" + }, + { + "label": "Storage", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L110", + "_origin": "ast", + "id": "playwright_cli_skill_storage", + "community": 14, + "norm_label": "storage" + }, + { + "label": "Network", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L141", + "_origin": "ast", + "id": "playwright_cli_skill_network", + "community": 14, + "norm_label": "network" + }, + { + "label": "DevTools", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L151", + "_origin": "ast", + "id": "playwright_cli_skill_devtools", + "community": 14, + "norm_label": "devtools" + }, + { + "label": "Raw output", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L180", + "_origin": "ast", + "id": "playwright_cli_skill_raw_output", + "community": 14, + "norm_label": "raw output" + }, + { + "label": "Open parameters", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L200", + "_origin": "ast", + "id": "playwright_cli_skill_open_parameters", + "community": 14, + "norm_label": "open parameters" + }, + { + "label": "Snapshots", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L234", + "_origin": "ast", + "id": "playwright_cli_skill_snapshots", + "community": 14, + "norm_label": "snapshots" + }, + { + "label": "Targeting elements", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L267", + "_origin": "ast", + "id": "playwright_cli_skill_targeting_elements", + "community": 14, + "norm_label": "targeting elements" + }, + { + "label": "Browser Sessions", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L292", + "_origin": "ast", + "id": "playwright_cli_skill_browser_sessions", + "community": 14, + "norm_label": "browser sessions" + }, + { + "label": "Installation", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L310", + "_origin": "ast", + "id": "playwright_cli_skill_installation", + "community": 14, + "norm_label": "installation" + }, + { + "label": "Example: Form submission", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L324", + "_origin": "ast", + "id": "playwright_cli_skill_example_form_submission", + "community": 14, + "norm_label": "example: form submission" + }, + { + "label": "Example: Multi-tab workflow", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L337", + "_origin": "ast", + "id": "playwright_cli_skill_example_multi_tab_workflow", + "community": 14, + "norm_label": "example: multi-tab workflow" + }, + { + "label": "Example: Debugging with DevTools", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L348", + "_origin": "ast", + "id": "playwright_cli_skill_example_debugging_with_devtools", + "community": 14, + "norm_label": "example: debugging with devtools" + }, + { + "label": "Example: Interactive session", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L368", + "_origin": "ast", + "id": "playwright_cli_skill_example_interactive_session", + "community": 14, + "norm_label": "example: interactive session" + }, + { + "label": "Specific tasks", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L377", + "_origin": "ast", + "id": "playwright_cli_skill_specific_tasks", + "community": 14, + "norm_label": "specific tasks" + }, + { + "label": "element-attributes.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/element-attributes.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_element_attributes", + "community": 185, + "norm_label": "element-attributes.md" + }, + { + "label": "Inspecting Element Attributes", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/element-attributes.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_element_attributes_inspecting_element_attributes", + "community": 185, + "norm_label": "inspecting element attributes" + }, + { + "label": "Examples", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/element-attributes.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_element_attributes_examples", + "community": 185, + "norm_label": "examples" + }, + { + "label": "playwright-tests.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/playwright-tests.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_playwright_tests", + "community": 186, + "norm_label": "playwright-tests.md" + }, + { + "label": "Running Playwright Tests", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/playwright-tests.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_playwright_tests_running_playwright_tests", + "community": 186, + "norm_label": "running playwright tests" + }, + { + "label": "Debugging Playwright Tests", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/playwright-tests.md", + "source_location": "L13", + "_origin": "ast", + "id": "references_playwright_tests_debugging_playwright_tests", + "community": 186, + "norm_label": "debugging playwright tests" + }, + { + "label": "request-mocking.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_request_mocking", + "community": 100, + "norm_label": "request-mocking.md" + }, + { + "label": "Request Mocking", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_request_mocking_request_mocking", + "community": 100, + "norm_label": "request mocking" + }, + { + "label": "CLI Route Commands", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_request_mocking_cli_route_commands", + "community": 100, + "norm_label": "cli route commands" + }, + { + "label": "URL Patterns", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L28", + "_origin": "ast", + "id": "references_request_mocking_url_patterns", + "community": 100, + "norm_label": "url patterns" + }, + { + "label": "Advanced Mocking with run-code", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L37", + "_origin": "ast", + "id": "references_request_mocking_advanced_mocking_with_run_code", + "community": 100, + "norm_label": "advanced mocking with run-code" + }, + { + "label": "Conditional Response Based on Request", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L41", + "_origin": "ast", + "id": "references_request_mocking_conditional_response_based_on_request", + "community": 100, + "norm_label": "conditional response based on request" + }, + { + "label": "Modify Real Response", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L56", + "_origin": "ast", + "id": "references_request_mocking_modify_real_response", + "community": 100, + "norm_label": "modify real response" + }, + { + "label": "Simulate Network Failures", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L69", + "_origin": "ast", + "id": "references_request_mocking_simulate_network_failures", + "community": 100, + "norm_label": "simulate network failures" + }, + { + "label": "Delayed Response", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L78", + "_origin": "ast", + "id": "references_request_mocking_delayed_response", + "community": 100, + "norm_label": "delayed response" + }, + { + "label": "running-code.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_running_code", + "community": 64, + "norm_label": "running-code.md" + }, + { + "label": "Running Custom Playwright Code", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_running_code_running_custom_playwright_code", + "community": 64, + "norm_label": "running custom playwright code" + }, + { + "label": "Syntax", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_running_code_syntax", + "community": 64, + "norm_label": "syntax" + }, + { + "label": "Geolocation", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L24", + "_origin": "ast", + "id": "references_running_code_geolocation", + "community": 64, + "norm_label": "geolocation" + }, + { + "label": "Permissions", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L45", + "_origin": "ast", + "id": "references_running_code_permissions", + "community": 64, + "norm_label": "permissions" + }, + { + "label": "Media Emulation", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L66", + "_origin": "ast", + "id": "references_running_code_media_emulation", + "community": 64, + "norm_label": "media emulation" + }, + { + "label": "Wait Strategies", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L90", + "_origin": "ast", + "id": "references_running_code_wait_strategies", + "community": 64, + "norm_label": "wait strategies" + }, + { + "label": "Frames and Iframes", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L114", + "_origin": "ast", + "id": "references_running_code_frames_and_iframes", + "community": 64, + "norm_label": "frames and iframes" + }, + { + "label": "File Downloads", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L130", + "_origin": "ast", + "id": "references_running_code_file_downloads", + "community": 64, + "norm_label": "file downloads" + }, + { + "label": "Clipboard", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L143", + "_origin": "ast", + "id": "references_running_code_clipboard", + "community": 64, + "norm_label": "clipboard" + }, + { + "label": "Page Information", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L158", + "_origin": "ast", + "id": "references_running_code_page_information", + "community": 64, + "norm_label": "page information" + }, + { + "label": "JavaScript Execution", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L182", + "_origin": "ast", + "id": "references_running_code_javascript_execution", + "community": 64, + "norm_label": "javascript execution" + }, + { + "label": "Error Handling", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L203", + "_origin": "ast", + "id": "references_running_code_error_handling", + "community": 64, + "norm_label": "error handling" + }, + { + "label": "Complex Workflows", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L217", + "_origin": "ast", + "id": "references_running_code_complex_workflows", + "community": 64, + "norm_label": "complex workflows" + }, + { + "label": "session-management.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_session_management", + "community": 22, + "norm_label": "session-management.md" + }, + { + "label": "Browser Session Management", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_session_management_browser_session_management", + "community": 22, + "norm_label": "browser session management" + }, + { + "label": "Named Browser Sessions", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_session_management_named_browser_sessions", + "community": 22, + "norm_label": "named browser sessions" + }, + { + "label": "Browser Session Isolation Properties", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L21", + "_origin": "ast", + "id": "references_session_management_browser_session_isolation_properties", + "community": 22, + "norm_label": "browser session isolation properties" + }, + { + "label": "Browser Session Commands", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L31", + "_origin": "ast", + "id": "references_session_management_browser_session_commands", + "community": 22, + "norm_label": "browser session commands" + }, + { + "label": "Environment Variable", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L52", + "_origin": "ast", + "id": "references_session_management_environment_variable", + "community": 22, + "norm_label": "environment variable" + }, + { + "label": "Common Patterns", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L61", + "_origin": "ast", + "id": "references_session_management_common_patterns", + "community": 22, + "norm_label": "common patterns" + }, + { + "label": "Concurrent Scraping", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L63", + "_origin": "ast", + "id": "references_session_management_concurrent_scraping", + "community": 22, + "norm_label": "concurrent scraping" + }, + { + "label": "A/B Testing Sessions", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L84", + "_origin": "ast", + "id": "references_session_management_a_b_testing_sessions", + "community": 22, + "norm_label": "a/b testing sessions" + }, + { + "label": "Persistent Profile", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L96", + "_origin": "ast", + "id": "references_session_management_persistent_profile", + "community": 22, + "norm_label": "persistent profile" + }, + { + "label": "Attaching to a Running Browser", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L108", + "_origin": "ast", + "id": "references_session_management_attaching_to_a_running_browser", + "community": 22, + "norm_label": "attaching to a running browser" + }, + { + "label": "Attach by channel name", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L112", + "_origin": "ast", + "id": "references_session_management_attach_by_channel_name", + "community": 22, + "norm_label": "attach by channel name" + }, + { + "label": "Attach via CDP endpoint", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L134", + "_origin": "ast", + "id": "references_session_management_attach_via_cdp_endpoint", + "community": 22, + "norm_label": "attach via cdp endpoint" + }, + { + "label": "Attach via browser extension", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L142", + "_origin": "ast", + "id": "references_session_management_attach_via_browser_extension", + "community": 22, + "norm_label": "attach via browser extension" + }, + { + "label": "Detach", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L150", + "_origin": "ast", + "id": "references_session_management_detach", + "community": 22, + "norm_label": "detach" + }, + { + "label": "Default Browser Session", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L164", + "_origin": "ast", + "id": "references_session_management_default_browser_session", + "community": 22, + "norm_label": "default browser session" + }, + { + "label": "Browser Session Configuration", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L175", + "_origin": "ast", + "id": "references_session_management_browser_session_configuration", + "community": 22, + "norm_label": "browser session configuration" + }, + { + "label": "Best Practices", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L193", + "_origin": "ast", + "id": "references_session_management_best_practices", + "community": 22, + "norm_label": "best practices" + }, + { + "label": "1. Name Browser Sessions Semantically", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L195", + "_origin": "ast", + "id": "references_session_management_1_name_browser_sessions_semantically", + "community": 22, + "norm_label": "1. name browser sessions semantically" + }, + { + "label": "2. Always Clean Up", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L206", + "_origin": "ast", + "id": "references_session_management_2_always_clean_up", + "community": 22, + "norm_label": "2. always clean up" + }, + { + "label": "3. Delete Stale Browser Data", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L220", + "_origin": "ast", + "id": "references_session_management_3_delete_stale_browser_data", + "community": 22, + "norm_label": "3. delete stale browser data" + }, + { + "label": "spec-driven-testing.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_spec_driven_testing", + "community": 28, + "norm_label": "spec-driven-testing.md" + }, + { + "label": "Spec-driven testing (plan \u2192 generate \u2192 heal)", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_spec_driven_testing_spec_driven_testing_plan_generate_heal", + "community": 28, + "norm_label": "spec-driven testing (plan \u2192 generate \u2192 heal)" + }, + { + "label": "1. Planning", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L13", + "_origin": "ast", + "id": "references_spec_driven_testing_1_planning", + "community": 28, + "norm_label": "1. planning" + }, + { + "label": "1.1 Prerequisite: workspace", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L17", + "_origin": "ast", + "id": "references_spec_driven_testing_1_1_prerequisite_workspace", + "community": 28, + "norm_label": "1.1 prerequisite: workspace" + }, + { + "label": "1.2 Prerequisite: seed test", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L33", + "_origin": "ast", + "id": "references_spec_driven_testing_1_2_prerequisite_seed_test", + "community": 28, + "norm_label": "1.2 prerequisite: seed test" + }, + { + "label": "1.3 Explore the app", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L74", + "_origin": "ast", + "id": "references_spec_driven_testing_1_3_explore_the_app", + "community": 28, + "norm_label": "1.3 explore the app" + }, + { + "label": "1.4 Write the spec file", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L105", + "_origin": "ast", + "id": "references_spec_driven_testing_1_4_write_the_spec_file", + "community": 28, + "norm_label": "1.4 write the spec file" + }, + { + "label": "2. Generate", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L152", + "_origin": "ast", + "id": "references_spec_driven_testing_2_generate", + "community": 28, + "norm_label": "2. generate" + }, + { + "label": "2.1 Inputs", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L156", + "_origin": "ast", + "id": "references_spec_driven_testing_2_1_inputs", + "community": 28, + "norm_label": "2.1 inputs" + }, + { + "label": "2.2 Generate one scenario", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L162", + "_origin": "ast", + "id": "references_spec_driven_testing_2_2_generate_one_scenario", + "community": 28, + "norm_label": "2.2 generate one scenario" + }, + { + "label": "2.3 Generate multiple scenarios", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L221", + "_origin": "ast", + "id": "references_spec_driven_testing_2_3_generate_multiple_scenarios", + "community": 28, + "norm_label": "2.3 generate multiple scenarios" + }, + { + "label": "2.4 Run generated tests", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L225", + "_origin": "ast", + "id": "references_spec_driven_testing_2_4_run_generated_tests", + "community": 28, + "norm_label": "2.4 run generated tests" + }, + { + "label": "3. Heal", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L237", + "_origin": "ast", + "id": "references_spec_driven_testing_3_heal", + "community": 28, + "norm_label": "3. heal" + }, + { + "label": "3.1 Find failing tests", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L241", + "_origin": "ast", + "id": "references_spec_driven_testing_3_1_find_failing_tests", + "community": 28, + "norm_label": "3.1 find failing tests" + }, + { + "label": "3.2 Debug one failure", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L249", + "_origin": "ast", + "id": "references_spec_driven_testing_3_2_debug_one_failure", + "community": 28, + "norm_label": "3.2 debug one failure" + }, + { + "label": "3.3 Apply the fix", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L272", + "_origin": "ast", + "id": "references_spec_driven_testing_3_3_apply_the_fix", + "community": 28, + "norm_label": "3.3 apply the fix" + }, + { + "label": "3.4 Reconcile with the spec", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L278", + "_origin": "ast", + "id": "references_spec_driven_testing_3_4_reconcile_with_the_spec", + "community": 28, + "norm_label": "3.4 reconcile with the spec" + }, + { + "label": "3.5 Iteration and giving up", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L291", + "_origin": "ast", + "id": "references_spec_driven_testing_3_5_iteration_and_giving_up", + "community": 28, + "norm_label": "3.5 iteration and giving up" + }, + { + "label": "Cross-references", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L298", + "_origin": "ast", + "id": "references_spec_driven_testing_cross_references", + "community": 28, + "norm_label": "cross-references" + }, + { + "label": "storage-state.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_storage_state", + "community": 2, + "norm_label": "storage-state.md" + }, + { + "label": "Storage Management", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_storage_state_storage_management", + "community": 2, + "norm_label": "storage management" + }, + { + "label": "Storage State", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_storage_state_storage_state", + "community": 2, + "norm_label": "storage state" + }, + { + "label": "Save Storage State", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L9", + "_origin": "ast", + "id": "references_storage_state_save_storage_state", + "community": 2, + "norm_label": "save storage state" + }, + { + "label": "Restore Storage State", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L19", + "_origin": "ast", + "id": "references_storage_state_restore_storage_state", + "community": 2, + "norm_label": "restore storage state" + }, + { + "label": "Storage State File Format", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L29", + "_origin": "ast", + "id": "references_storage_state_storage_state_file_format", + "community": 2, + "norm_label": "storage state file format" + }, + { + "label": "Cookies", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L59", + "_origin": "ast", + "id": "references_storage_state_cookies", + "community": 2, + "norm_label": "cookies" + }, + { + "label": "List All Cookies", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L61", + "_origin": "ast", + "id": "references_storage_state_list_all_cookies", + "community": 2, + "norm_label": "list all cookies" + }, + { + "label": "Filter Cookies by Domain", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L67", + "_origin": "ast", + "id": "references_storage_state_filter_cookies_by_domain", + "community": 2, + "norm_label": "filter cookies by domain" + }, + { + "label": "Filter Cookies by Path", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L73", + "_origin": "ast", + "id": "references_storage_state_filter_cookies_by_path", + "community": 2, + "norm_label": "filter cookies by path" + }, + { + "label": "Get Specific Cookie", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L79", + "_origin": "ast", + "id": "references_storage_state_get_specific_cookie", + "community": 2, + "norm_label": "get specific cookie" + }, + { + "label": "Set a Cookie", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L85", + "_origin": "ast", + "id": "references_storage_state_set_a_cookie", + "community": 2, + "norm_label": "set a cookie" + }, + { + "label": "Delete a Cookie", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L98", + "_origin": "ast", + "id": "references_storage_state_delete_a_cookie", + "community": 2, + "norm_label": "delete a cookie" + }, + { + "label": "Clear All Cookies", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L104", + "_origin": "ast", + "id": "references_storage_state_clear_all_cookies", + "community": 2, + "norm_label": "clear all cookies" + }, + { + "label": "Advanced: Multiple Cookies or Custom Options", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L110", + "_origin": "ast", + "id": "references_storage_state_advanced_multiple_cookies_or_custom_options", + "community": 2, + "norm_label": "advanced: multiple cookies or custom options" + }, + { + "label": "Local Storage", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L123", + "_origin": "ast", + "id": "references_storage_state_local_storage", + "community": 2, + "norm_label": "local storage" + }, + { + "label": "List All localStorage Items", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L125", + "_origin": "ast", + "id": "references_storage_state_list_all_localstorage_items", + "community": 2, + "norm_label": "list all localstorage items" + }, + { + "label": "Get Single Value", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L131", + "_origin": "ast", + "id": "references_storage_state_get_single_value", + "community": 2, + "norm_label": "get single value" + }, + { + "label": "Set Value", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L137", + "_origin": "ast", + "id": "references_storage_state_set_value", + "community": 2, + "norm_label": "set value" + }, + { + "label": "Set JSON Value", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L143", + "_origin": "ast", + "id": "references_storage_state_set_json_value", + "community": 2, + "norm_label": "set json value" + }, + { + "label": "Delete Single Item", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L149", + "_origin": "ast", + "id": "references_storage_state_delete_single_item", + "community": 2, + "norm_label": "delete single item" + }, + { + "label": "Clear All localStorage", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L155", + "_origin": "ast", + "id": "references_storage_state_clear_all_localstorage", + "community": 2, + "norm_label": "clear all localstorage" + }, + { + "label": "Advanced: Multiple Operations", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L161", + "_origin": "ast", + "id": "references_storage_state_advanced_multiple_operations", + "community": 2, + "norm_label": "advanced: multiple operations" + }, + { + "label": "Session Storage", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L175", + "_origin": "ast", + "id": "references_storage_state_session_storage", + "community": 2, + "norm_label": "session storage" + }, + { + "label": "List All sessionStorage Items", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L177", + "_origin": "ast", + "id": "references_storage_state_list_all_sessionstorage_items", + "community": 2, + "norm_label": "list all sessionstorage items" + }, + { + "label": "Get Single Value", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L183", + "_origin": "ast", + "id": "references_storage_state_get_single_value_183", + "community": 2, + "norm_label": "get single value" + }, + { + "label": "Set Value", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L189", + "_origin": "ast", + "id": "references_storage_state_set_value_189", + "community": 2, + "norm_label": "set value" + }, + { + "label": "Delete Single Item", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L195", + "_origin": "ast", + "id": "references_storage_state_delete_single_item_195", + "community": 2, + "norm_label": "delete single item" + }, + { + "label": "Clear sessionStorage", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L201", + "_origin": "ast", + "id": "references_storage_state_clear_sessionstorage", + "community": 2, + "norm_label": "clear sessionstorage" + }, + { + "label": "IndexedDB", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L207", + "_origin": "ast", + "id": "references_storage_state_indexeddb", + "community": 2, + "norm_label": "indexeddb" + }, + { + "label": "List Databases", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L209", + "_origin": "ast", + "id": "references_storage_state_list_databases", + "community": 2, + "norm_label": "list databases" + }, + { + "label": "Delete Database", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L220", + "_origin": "ast", + "id": "references_storage_state_delete_database", + "community": 2, + "norm_label": "delete database" + }, + { + "label": "Common Patterns", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L230", + "_origin": "ast", + "id": "references_storage_state_common_patterns", + "community": 2, + "norm_label": "common patterns" + }, + { + "label": "Authentication State Reuse", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L232", + "_origin": "ast", + "id": "references_storage_state_authentication_state_reuse", + "community": 2, + "norm_label": "authentication state reuse" + }, + { + "label": "Save and Restore Roundtrip", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L251", + "_origin": "ast", + "id": "references_storage_state_save_and_restore_roundtrip", + "community": 2, + "norm_label": "save and restore roundtrip" + }, + { + "label": "Security Notes", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L269", + "_origin": "ast", + "id": "references_storage_state_security_notes", + "community": 2, + "norm_label": "security notes" + }, + { + "label": "test-generation.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_test_generation", + "community": 101, + "norm_label": "test-generation.md" + }, + { + "label": "Test Generation", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_test_generation_test_generation", + "community": 101, + "norm_label": "test generation" + }, + { + "label": "How It Works", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_test_generation_how_it_works", + "community": 101, + "norm_label": "how it works" + }, + { + "label": "Example Workflow", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L10", + "_origin": "ast", + "id": "references_test_generation_example_workflow", + "community": 101, + "norm_label": "example workflow" + }, + { + "label": "Building a Test File", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L34", + "_origin": "ast", + "id": "references_test_generation_building_a_test_file", + "community": 101, + "norm_label": "building a test file" + }, + { + "label": "Best Practices", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L53", + "_origin": "ast", + "id": "references_test_generation_best_practices", + "community": 101, + "norm_label": "best practices" + }, + { + "label": "1. Use Semantic Locators", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L55", + "_origin": "ast", + "id": "references_test_generation_1_use_semantic_locators", + "community": 101, + "norm_label": "1. use semantic locators" + }, + { + "label": "2. Explore Before Recording", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L67", + "_origin": "ast", + "id": "references_test_generation_2_explore_before_recording", + "community": 101, + "norm_label": "2. explore before recording" + }, + { + "label": "3. Add Assertions Manually", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L78", + "_origin": "ast", + "id": "references_test_generation_3_add_assertions_manually", + "community": 101, + "norm_label": "3. add assertions manually" + }, + { + "label": "tracing.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_tracing", + "community": 39, + "norm_label": "tracing.md" + }, + { + "label": "Tracing", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_tracing_tracing", + "community": 39, + "norm_label": "tracing" + }, + { + "label": "Basic Usage", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_tracing_basic_usage", + "community": 39, + "norm_label": "basic usage" + }, + { + "label": "Trace Output Files", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L20", + "_origin": "ast", + "id": "references_tracing_trace_output_files", + "community": 39, + "norm_label": "trace output files" + }, + { + "label": "`trace-{timestamp}.trace`", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L24", + "_origin": "ast", + "id": "references_tracing_trace_timestamp_trace", + "community": 39, + "norm_label": "`trace-{timestamp}.trace`" + }, + { + "label": "`trace-{timestamp}.network`", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L34", + "_origin": "ast", + "id": "references_tracing_trace_timestamp_network", + "community": 39, + "norm_label": "`trace-{timestamp}.network`" + }, + { + "label": "`resources/`", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L44", + "_origin": "ast", + "id": "references_tracing_resources", + "community": 39, + "norm_label": "`resources/`" + }, + { + "label": "What Traces Capture", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L51", + "_origin": "ast", + "id": "references_tracing_what_traces_capture", + "community": 39, + "norm_label": "what traces capture" + }, + { + "label": "Use Cases", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L62", + "_origin": "ast", + "id": "references_tracing_use_cases", + "community": 39, + "norm_label": "use cases" + }, + { + "label": "Debugging Failed Actions", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L64", + "_origin": "ast", + "id": "references_tracing_debugging_failed_actions", + "community": 39, + "norm_label": "debugging failed actions" + }, + { + "label": "Analyzing Performance", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L77", + "_origin": "ast", + "id": "references_tracing_analyzing_performance", + "community": 39, + "norm_label": "analyzing performance" + }, + { + "label": "Capturing Evidence", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L87", + "_origin": "ast", + "id": "references_tracing_capturing_evidence", + "community": 39, + "norm_label": "capturing evidence" + }, + { + "label": "Trace vs Video vs Screenshot", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L103", + "_origin": "ast", + "id": "references_tracing_trace_vs_video_vs_screenshot", + "community": 39, + "norm_label": "trace vs video vs screenshot" + }, + { + "label": "Best Practices", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L114", + "_origin": "ast", + "id": "references_tracing_best_practices", + "community": 39, + "norm_label": "best practices" + }, + { + "label": "1. Start Tracing Before the Problem", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L116", + "_origin": "ast", + "id": "references_tracing_1_start_tracing_before_the_problem", + "community": 39, + "norm_label": "1. start tracing before the problem" + }, + { + "label": "2. Clean Up Old Traces", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L126", + "_origin": "ast", + "id": "references_tracing_2_clean_up_old_traces", + "community": 39, + "norm_label": "2. clean up old traces" + }, + { + "label": "Limitations", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L135", + "_origin": "ast", + "id": "references_tracing_limitations", + "community": 39, + "norm_label": "limitations" + }, + { + "label": "video-recording.md", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_video_recording", + "community": 102, + "norm_label": "video-recording.md" + }, + { + "label": "Video Recording", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L1", + "_origin": "ast", + "id": "references_video_recording_video_recording", + "community": 102, + "norm_label": "video recording" + }, + { + "label": "Basic Recording", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L5", + "_origin": "ast", + "id": "references_video_recording_basic_recording", + "community": 102, + "norm_label": "basic recording" + }, + { + "label": "Best Practices", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L30", + "_origin": "ast", + "id": "references_video_recording_best_practices", + "community": 102, + "norm_label": "best practices" + }, + { + "label": "1. Use Descriptive Filenames", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L32", + "_origin": "ast", + "id": "references_video_recording_1_use_descriptive_filenames", + "community": 102, + "norm_label": "1. use descriptive filenames" + }, + { + "label": "2. Record entire hero scripts.", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L40", + "_origin": "ast", + "id": "references_video_recording_2_record_entire_hero_scripts", + "community": 102, + "norm_label": "2. record entire hero scripts." + }, + { + "label": "Overlay API Summary", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L122", + "_origin": "ast", + "id": "references_video_recording_overlay_api_summary", + "community": 102, + "norm_label": "overlay api summary" + }, + { + "label": "Tracing vs Video", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L131", + "_origin": "ast", + "id": "references_video_recording_tracing_vs_video", + "community": 102, + "norm_label": "tracing vs video" + }, + { + "label": "Limitations", + "file_type": "document", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L140", + "_origin": "ast", + "id": "references_video_recording_limitations", + "community": 102, + "norm_label": "limitations" + }, + { + "label": "PROJECT.md", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_project", + "community": 78, + "norm_label": "project.md" + }, + { + "label": "FamilySync", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_project_familysync", + "community": 78, + "norm_label": "familysync" + }, + { + "label": "What This Is", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L3", + "_origin": "ast", + "id": "planning_project_what_this_is", + "community": 78, + "norm_label": "what this is" + }, + { + "label": "Core Value", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L7", + "_origin": "ast", + "id": "planning_project_core_value", + "community": 78, + "norm_label": "core value" + }, + { + "label": "Requirements", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L11", + "_origin": "ast", + "id": "planning_project_requirements", + "community": 78, + "norm_label": "requirements" + }, + { + "label": "Validated", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L13", + "_origin": "ast", + "id": "planning_project_validated", + "community": 78, + "norm_label": "validated" + }, + { + "label": "Active", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L22", + "_origin": "ast", + "id": "planning_project_active", + "community": 78, + "norm_label": "active" + }, + { + "label": "Out of Scope", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L31", + "_origin": "ast", + "id": "planning_project_out_of_scope", + "community": 78, + "norm_label": "out of scope" + }, + { + "label": "Context", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L44", + "_origin": "ast", + "id": "planning_project_context", + "community": 78, + "norm_label": "context" + }, + { + "label": "Constraints", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L55", + "_origin": "ast", + "id": "planning_project_constraints", + "community": 78, + "norm_label": "constraints" + }, + { + "label": "Key Decisions", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L67", + "_origin": "ast", + "id": "planning_project_key_decisions", + "community": 78, + "norm_label": "key decisions" + }, + { + "label": "Evolution", + "file_type": "document", + "source_file": ".planning/PROJECT.md", + "source_location": "L83", + "_origin": "ast", + "id": "planning_project_evolution", + "community": 78, + "norm_label": "evolution" + }, + { + "label": "REQUIREMENTS.md", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_requirements", + "community": 63, + "norm_label": "requirements.md" + }, + { + "label": "Requirements: FamilySync", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_requirements_requirements_familysync", + "community": 63, + "norm_label": "requirements: familysync" + }, + { + "label": "v1 Requirements", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L6", + "_origin": "ast", + "id": "planning_requirements_v1_requirements", + "community": 63, + "norm_label": "v1 requirements" + }, + { + "label": "Authentication & Onboarding", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L10", + "_origin": "ast", + "id": "planning_requirements_authentication_onboarding", + "community": 63, + "norm_label": "authentication & onboarding" + }, + { + "label": "Calendar", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L18", + "_origin": "ast", + "id": "planning_requirements_calendar", + "community": 63, + "norm_label": "calendar" + }, + { + "label": "Lists", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L29", + "_origin": "ast", + "id": "planning_requirements_lists", + "community": 63, + "norm_label": "lists" + }, + { + "label": "Notifications", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L36", + "_origin": "ast", + "id": "planning_requirements_notifications", + "community": 63, + "norm_label": "notifications" + }, + { + "label": "PWA & Install", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L42", + "_origin": "ast", + "id": "planning_requirements_pwa_install", + "community": 63, + "norm_label": "pwa & install" + }, + { + "label": "v1.x Requirements", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L47", + "_origin": "ast", + "id": "planning_requirements_v1_x_requirements", + "community": 63, + "norm_label": "v1.x requirements" + }, + { + "label": "Calendar", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L51", + "_origin": "ast", + "id": "planning_requirements_calendar_51", + "community": 63, + "norm_label": "calendar" + }, + { + "label": "v2 Requirements", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L58", + "_origin": "ast", + "id": "planning_requirements_v2_requirements", + "community": 63, + "norm_label": "v2 requirements" + }, + { + "label": "Display", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L60", + "_origin": "ast", + "id": "planning_requirements_display", + "community": 63, + "norm_label": "display" + }, + { + "label": "Out of Scope", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L65", + "_origin": "ast", + "id": "planning_requirements_out_of_scope", + "community": 63, + "norm_label": "out of scope" + }, + { + "label": "Traceability", + "file_type": "document", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L89", + "_origin": "ast", + "id": "planning_requirements_traceability", + "community": 63, + "norm_label": "traceability" + }, + { + "label": "ROADMAP.md", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_roadmap", + "community": 18, + "norm_label": "roadmap.md" + }, + { + "label": "Roadmap: FamilySync", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_roadmap_roadmap_familysync", + "community": 18, + "norm_label": "roadmap: familysync" + }, + { + "label": "Overview", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L3", + "_origin": "ast", + "id": "planning_roadmap_overview", + "community": 18, + "norm_label": "overview" + }, + { + "label": "Phases", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L7", + "_origin": "ast", + "id": "planning_roadmap_phases", + "community": 18, + "norm_label": "phases" + }, + { + "label": "Phase Details", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L23", + "_origin": "ast", + "id": "planning_roadmap_phase_details", + "community": 18, + "norm_label": "phase details" + }, + { + "label": "Phase 1: Foundation + Broker Spike", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L25", + "_origin": "ast", + "id": "planning_roadmap_phase_1_foundation_broker_spike", + "community": 18, + "norm_label": "phase 1: foundation + broker spike" + }, + { + "label": "Phase 2: Calendar Display", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L49", + "_origin": "ast", + "id": "planning_roadmap_phase_2_calendar_display", + "community": 18, + "norm_label": "phase 2: calendar display" + }, + { + "label": "Phase 3: Event Write-Back + PWA Install", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L89", + "_origin": "ast", + "id": "planning_roadmap_phase_3_event_write_back_pwa_install", + "community": 18, + "norm_label": "phase 3: event write-back + pwa install" + }, + { + "label": "Phase 4: Shared Lists + Live Sync", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L131", + "_origin": "ast", + "id": "planning_roadmap_phase_4_shared_lists_live_sync", + "community": 18, + "norm_label": "phase 4: shared lists + live sync" + }, + { + "label": "Phase 5: Web Push Notifications", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L171", + "_origin": "ast", + "id": "planning_roadmap_phase_5_web_push_notifications", + "community": 18, + "norm_label": "phase 5: web push notifications" + }, + { + "label": "Phase 6: UX Polish", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L186", + "_origin": "ast", + "id": "planning_roadmap_phase_6_ux_polish", + "community": 18, + "norm_label": "phase 6: ux polish" + }, + { + "label": "Progress", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L205", + "_origin": "ast", + "id": "planning_roadmap_progress", + "community": 18, + "norm_label": "progress" + }, + { + "label": "Backlog", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L220", + "_origin": "ast", + "id": "planning_roadmap_backlog", + "community": 18, + "norm_label": "backlog" + }, + { + "label": "Phase 999.1: Treat Fastmail as one calendar provider; framework supports adding more providers (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L222", + "_origin": "ast", + "id": "planning_roadmap_phase_999_1_treat_fastmail_as_one_calendar_provider_framework_supports_adding_more_providers_backlog", + "community": 18, + "norm_label": "phase 999.1: treat fastmail as one calendar provider; framework supports adding more providers (backlog)" + }, + { + "label": "Phase 999.2: Slick unauthenticated-entry \u2014 no calendar/\"Sign-in required\" flash before Authelia redirect (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L232", + "_origin": "ast", + "id": "planning_roadmap_phase_999_2_slick_unauthenticated_entry_no_calendar_sign_in_required_flash_before_authelia_redirect_backlog", + "community": 18, + "norm_label": "phase 999.2: slick unauthenticated-entry \u2014 no calendar/\"sign-in required\" flash before authelia redirect (backlog)" + }, + { + "label": "Phase 999.3: Redirect to sign-in on session timeout instead of hanging (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L248", + "_origin": "ast", + "id": "planning_roadmap_phase_999_3_redirect_to_sign_in_on_session_timeout_instead_of_hanging_backlog", + "community": 18, + "norm_label": "phase 999.3: redirect to sign-in on session timeout instead of hanging (backlog)" + }, + { + "label": "Phase 999.4: Event-creation notification/reminder (VALARM) options (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L264", + "_origin": "ast", + "id": "planning_roadmap_phase_999_4_event_creation_notification_reminder_valarm_options_backlog", + "community": 18, + "norm_label": "phase 999.4: event-creation notification/reminder (valarm) options (backlog)" + }, + { + "label": "Phase 999.5: First-login provider setup \u2014 prompt + instructions to add a Fastmail app password (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L276", + "_origin": "ast", + "id": "planning_roadmap_phase_999_5_first_login_provider_setup_prompt_instructions_to_add_a_fastmail_app_password_backlog", + "community": 18, + "norm_label": "phase 999.5: first-login provider setup \u2014 prompt + instructions to add a fastmail app password (backlog)" + }, + { + "label": "Phase 999.6: All-day events should stand out visually (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L298", + "_origin": "ast", + "id": "planning_roadmap_phase_999_6_all_day_events_should_stand_out_visually_backlog", + "community": 18, + "norm_label": "phase 999.6: all-day events should stand out visually (backlog)" + }, + { + "label": "Phase 999.7: Event form \u2014 auto-advance end when start moves; keep duration sane (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L310", + "_origin": "ast", + "id": "planning_roadmap_phase_999_7_event_form_auto_advance_end_when_start_moves_keep_duration_sane_backlog", + "community": 18, + "norm_label": "phase 999.7: event form \u2014 auto-advance end when start moves; keep duration sane (backlog)" + }, + { + "label": "Phase 999.8: Recurrence bound (repeat-until / count) + recurring create polish (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L324", + "_origin": "ast", + "id": "planning_roadmap_phase_999_8_recurrence_bound_repeat_until_count_recurring_create_polish_backlog", + "community": 18, + "norm_label": "phase 999.8: recurrence bound (repeat-until / count) + recurring create polish (backlog)" + }, + { + "label": "Phase 999.9: Edit a recurring series (whole-series edit) (BACKLOG)", + "file_type": "document", + "source_file": ".planning/ROADMAP.md", + "source_location": "L336", + "_origin": "ast", + "id": "planning_roadmap_phase_999_9_edit_a_recurring_series_whole_series_edit_backlog", + "community": 18, + "norm_label": "phase 999.9: edit a recurring series (whole-series edit) (backlog)" + }, + { + "label": "STATE.md", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L1", + "_origin": "ast", + "id": "planning_state", + "community": 70, + "norm_label": "state.md" + }, + { + "label": "Project State", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L17", + "_origin": "ast", + "id": "planning_state_project_state", + "community": 70, + "norm_label": "project state" + }, + { + "label": "Project Reference", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L19", + "_origin": "ast", + "id": "planning_state_project_reference", + "community": 70, + "norm_label": "project reference" + }, + { + "label": "Current Position", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L26", + "_origin": "ast", + "id": "planning_state_current_position", + "community": 70, + "norm_label": "current position" + }, + { + "label": "Performance Metrics", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L35", + "_origin": "ast", + "id": "planning_state_performance_metrics", + "community": 70, + "norm_label": "performance metrics" + }, + { + "label": "Accumulated Context", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L63", + "_origin": "ast", + "id": "planning_state_accumulated_context", + "community": 70, + "norm_label": "accumulated context" + }, + { + "label": "Decisions", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L65", + "_origin": "ast", + "id": "planning_state_decisions", + "community": 70, + "norm_label": "decisions" + }, + { + "label": "Roadmap Evolution", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L90", + "_origin": "ast", + "id": "planning_state_roadmap_evolution", + "community": 70, + "norm_label": "roadmap evolution" + }, + { + "label": "Pending Todos", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L94", + "_origin": "ast", + "id": "planning_state_pending_todos", + "community": 70, + "norm_label": "pending todos" + }, + { + "label": "Blockers/Concerns", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L100", + "_origin": "ast", + "id": "planning_state_blockers_concerns", + "community": 70, + "norm_label": "blockers/concerns" + }, + { + "label": "Quick Tasks Completed", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L108", + "_origin": "ast", + "id": "planning_state_quick_tasks_completed", + "community": 70, + "norm_label": "quick tasks completed" + }, + { + "label": "Deferred Items", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L116", + "_origin": "ast", + "id": "planning_state_deferred_items", + "community": 70, + "norm_label": "deferred items" + }, + { + "label": "Session Continuity", + "file_type": "document", + "source_file": ".planning/STATE.md", + "source_location": "L127", + "_origin": "ast", + "id": "planning_state_session_continuity", + "community": 70, + "norm_label": "session continuity" + }, + { + "label": "ARCHITECTURE.md", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_architecture", + "community": 25, + "norm_label": "architecture.md" + }, + { + "label": "Architecture", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L2", + "_origin": "ast", + "id": "codebase_architecture_architecture", + "community": 25, + "norm_label": "architecture" + }, + { + "label": "System Overview", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L6", + "_origin": "ast", + "id": "codebase_architecture_system_overview", + "community": 25, + "norm_label": "system overview" + }, + { + "label": "Component Responsibilities", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L58", + "_origin": "ast", + "id": "codebase_architecture_component_responsibilities", + "community": 25, + "norm_label": "component responsibilities" + }, + { + "label": "Pattern Overview", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L83", + "_origin": "ast", + "id": "codebase_architecture_pattern_overview", + "community": 25, + "norm_label": "pattern overview" + }, + { + "label": "Layers", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L107", + "_origin": "ast", + "id": "codebase_architecture_layers", + "community": 25, + "norm_label": "layers" + }, + { + "label": "Data Flow", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L146", + "_origin": "ast", + "id": "codebase_architecture_data_flow", + "community": 25, + "norm_label": "data flow" + }, + { + "label": "Primary Request Path (GET /api/events)", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L148", + "_origin": "ast", + "id": "codebase_architecture_primary_request_path_get_api_events", + "community": 25, + "norm_label": "primary request path (get /api/events)" + }, + { + "label": "Write Path (POST /api/events/create)", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L166", + "_origin": "ast", + "id": "codebase_architecture_write_path_post_api_events_create", + "community": 25, + "norm_label": "write path (post /api/events/create)" + }, + { + "label": "Calendar Sync (Background Poller \u2192 syncCalendar)", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L186", + "_origin": "ast", + "id": "codebase_architecture_calendar_sync_background_poller_synccalendar", + "community": 25, + "norm_label": "calendar sync (background poller \u2192 synccalendar)" + }, + { + "label": "Key Abstractions", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L208", + "_origin": "ast", + "id": "codebase_architecture_key_abstractions", + "community": 25, + "norm_label": "key abstractions" + }, + { + "label": "Entry Points", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L235", + "_origin": "ast", + "id": "codebase_architecture_entry_points", + "community": 25, + "norm_label": "entry points" + }, + { + "label": "Architectural Constraints", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L272", + "_origin": "ast", + "id": "codebase_architecture_architectural_constraints", + "community": 25, + "norm_label": "architectural constraints" + }, + { + "label": "Anti-Patterns", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L282", + "_origin": "ast", + "id": "codebase_architecture_anti_patterns", + "community": 25, + "norm_label": "anti-patterns" + }, + { + "label": "Direct Fastmail calls from routes", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L284", + "_origin": "ast", + "id": "codebase_architecture_direct_fastmail_calls_from_routes", + "community": 25, + "norm_label": "direct fastmail calls from routes" + }, + { + "label": "Storing displayName as identity key", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L290", + "_origin": "ast", + "id": "codebase_architecture_storing_displayname_as_identity_key", + "community": 25, + "norm_label": "storing displayname as identity key" + }, + { + "label": "Caching tsdav clients across polls", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L296", + "_origin": "ast", + "id": "codebase_architecture_caching_tsdav_clients_across_polls", + "community": 25, + "norm_label": "caching tsdav clients across polls" + }, + { + "label": "Windowed event query without pre-filter for recurring masters", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L302", + "_origin": "ast", + "id": "codebase_architecture_windowed_event_query_without_pre_filter_for_recurring_masters", + "community": 25, + "norm_label": "windowed event query without pre-filter for recurring masters" + }, + { + "label": "Storing all-day events as midnight-UTC datetime", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L308", + "_origin": "ast", + "id": "codebase_architecture_storing_all_day_events_as_midnight_utc_datetime", + "community": 25, + "norm_label": "storing all-day events as midnight-utc datetime" + }, + { + "label": "Relying on 200 response to mean write success", + "file_type": "document", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L314", + "_origin": "ast", + "id": "codebase_architecture_relying_on_200_response_to_mean_write_success", + "community": 25, + "norm_label": "relying on 200 response to mean write success" + }, + { + "label": "CONCERNS.md", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_concerns", + "community": 58, + "norm_label": "concerns.md" + }, + { + "label": "Codebase Concerns", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_concerns_codebase_concerns", + "community": 58, + "norm_label": "codebase concerns" + }, + { + "label": "Tech Debt", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L5", + "_origin": "ast", + "id": "codebase_concerns_tech_debt", + "community": 58, + "norm_label": "tech debt" + }, + { + "label": "Known Bugs", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L35", + "_origin": "ast", + "id": "codebase_concerns_known_bugs", + "community": 58, + "norm_label": "known bugs" + }, + { + "label": "Security Considerations", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L51", + "_origin": "ast", + "id": "codebase_concerns_security_considerations", + "community": 58, + "norm_label": "security considerations" + }, + { + "label": "Performance Bottlenecks", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L73", + "_origin": "ast", + "id": "codebase_concerns_performance_bottlenecks", + "community": 58, + "norm_label": "performance bottlenecks" + }, + { + "label": "Fragile Areas", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L95", + "_origin": "ast", + "id": "codebase_concerns_fragile_areas", + "community": 58, + "norm_label": "fragile areas" + }, + { + "label": "Scaling Limits", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L114", + "_origin": "ast", + "id": "codebase_concerns_scaling_limits", + "community": 58, + "norm_label": "scaling limits" + }, + { + "label": "Dependencies at Risk", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L133", + "_origin": "ast", + "id": "codebase_concerns_dependencies_at_risk", + "community": 58, + "norm_label": "dependencies at risk" + }, + { + "label": "Missing Critical Features", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L152", + "_origin": "ast", + "id": "codebase_concerns_missing_critical_features", + "community": 58, + "norm_label": "missing critical features" + }, + { + "label": "Test Coverage Gaps", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L168", + "_origin": "ast", + "id": "codebase_concerns_test_coverage_gaps", + "community": 58, + "norm_label": "test coverage gaps" + }, + { + "label": "Architectural Constraints & Anti-Patterns", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L202", + "_origin": "ast", + "id": "codebase_concerns_architectural_constraints_anti_patterns", + "community": 58, + "norm_label": "architectural constraints & anti-patterns" + }, + { + "label": "Infrastructure & Deployment Concerns", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L221", + "_origin": "ast", + "id": "codebase_concerns_infrastructure_deployment_concerns", + "community": 58, + "norm_label": "infrastructure & deployment concerns" + }, + { + "label": "Known Limitations (Documented as Design Decisions)", + "file_type": "document", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L238", + "_origin": "ast", + "id": "codebase_concerns_known_limitations_documented_as_design_decisions", + "community": 58, + "norm_label": "known limitations (documented as design decisions)" + }, + { + "label": "CONVENTIONS.md", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_conventions", + "community": 76, + "norm_label": "conventions.md" + }, + { + "label": "Coding Conventions", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_conventions_coding_conventions", + "community": 76, + "norm_label": "coding conventions" + }, + { + "label": "Naming Patterns", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L5", + "_origin": "ast", + "id": "codebase_conventions_naming_patterns", + "community": 76, + "norm_label": "naming patterns" + }, + { + "label": "Code Style", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L44", + "_origin": "ast", + "id": "codebase_conventions_code_style", + "community": 76, + "norm_label": "code style" + }, + { + "label": "Import Organization", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L73", + "_origin": "ast", + "id": "codebase_conventions_import_organization", + "community": 76, + "norm_label": "import organization" + }, + { + "label": "Error Handling", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L103", + "_origin": "ast", + "id": "codebase_conventions_error_handling", + "community": 76, + "norm_label": "error handling" + }, + { + "label": "Logging", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L164", + "_origin": "ast", + "id": "codebase_conventions_logging", + "community": 76, + "norm_label": "logging" + }, + { + "label": "Comments", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L186", + "_origin": "ast", + "id": "codebase_conventions_comments", + "community": 76, + "norm_label": "comments" + }, + { + "label": "Function Design", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L215", + "_origin": "ast", + "id": "codebase_conventions_function_design", + "community": 76, + "norm_label": "function design" + }, + { + "label": "Module Design", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L253", + "_origin": "ast", + "id": "codebase_conventions_module_design", + "community": 76, + "norm_label": "module design" + }, + { + "label": "Database Patterns", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L269", + "_origin": "ast", + "id": "codebase_conventions_database_patterns", + "community": 76, + "norm_label": "database patterns" + }, + { + "label": "Reactive State (Frontend)", + "file_type": "document", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L304", + "_origin": "ast", + "id": "codebase_conventions_reactive_state_frontend", + "community": 76, + "norm_label": "reactive state (frontend)" + }, + { + "label": "INTEGRATIONS.md", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_integrations", + "community": 93, + "norm_label": "integrations.md" + }, + { + "label": "External Integrations", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_integrations_external_integrations", + "community": 93, + "norm_label": "external integrations" + }, + { + "label": "APIs & External Services", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L5", + "_origin": "ast", + "id": "codebase_integrations_apis_external_services", + "community": 93, + "norm_label": "apis & external services" + }, + { + "label": "Data Storage", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L27", + "_origin": "ast", + "id": "codebase_integrations_data_storage", + "community": 93, + "norm_label": "data storage" + }, + { + "label": "Authentication & Identity", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L51", + "_origin": "ast", + "id": "codebase_integrations_authentication_identity", + "community": 93, + "norm_label": "authentication & identity" + }, + { + "label": "Monitoring & Observability", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L67", + "_origin": "ast", + "id": "codebase_integrations_monitoring_observability", + "community": 93, + "norm_label": "monitoring & observability" + }, + { + "label": "CI/CD & Deployment", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L83", + "_origin": "ast", + "id": "codebase_integrations_ci_cd_deployment", + "community": 93, + "norm_label": "ci/cd & deployment" + }, + { + "label": "Environment Configuration", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L100", + "_origin": "ast", + "id": "codebase_integrations_environment_configuration", + "community": 93, + "norm_label": "environment configuration" + }, + { + "label": "Webhooks & Callbacks", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L121", + "_origin": "ast", + "id": "codebase_integrations_webhooks_callbacks", + "community": 93, + "norm_label": "webhooks & callbacks" + }, + { + "label": "Network & Transport", + "file_type": "document", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L135", + "_origin": "ast", + "id": "codebase_integrations_network_transport", + "community": 93, + "norm_label": "network & transport" + }, + { + "label": "STACK.md", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_stack", + "community": 116, + "norm_label": "stack.md" + }, + { + "label": "Technology Stack", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_stack_technology_stack", + "community": 116, + "norm_label": "technology stack" + }, + { + "label": "Languages", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L5", + "_origin": "ast", + "id": "codebase_stack_languages", + "community": 116, + "norm_label": "languages" + }, + { + "label": "Runtime", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L15", + "_origin": "ast", + "id": "codebase_stack_runtime", + "community": 116, + "norm_label": "runtime" + }, + { + "label": "Frameworks", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L26", + "_origin": "ast", + "id": "codebase_stack_frameworks", + "community": 116, + "norm_label": "frameworks" + }, + { + "label": "Key Dependencies", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L61", + "_origin": "ast", + "id": "codebase_stack_key_dependencies", + "community": 116, + "norm_label": "key dependencies" + }, + { + "label": "Configuration", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L91", + "_origin": "ast", + "id": "codebase_stack_configuration", + "community": 116, + "norm_label": "configuration" + }, + { + "label": "Platform Requirements", + "file_type": "document", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L110", + "_origin": "ast", + "id": "codebase_stack_platform_requirements", + "community": 116, + "norm_label": "platform requirements" + }, + { + "label": "STRUCTURE.md", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_structure", + "community": 117, + "norm_label": "structure.md" + }, + { + "label": "Codebase Structure", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_structure_codebase_structure", + "community": 117, + "norm_label": "codebase structure" + }, + { + "label": "Directory Layout", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L5", + "_origin": "ast", + "id": "codebase_structure_directory_layout", + "community": 117, + "norm_label": "directory layout" + }, + { + "label": "Directory Purposes", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L93", + "_origin": "ast", + "id": "codebase_structure_directory_purposes", + "community": 117, + "norm_label": "directory purposes" + }, + { + "label": "Key File Locations", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L119", + "_origin": "ast", + "id": "codebase_structure_key_file_locations", + "community": 117, + "norm_label": "key file locations" + }, + { + "label": "Naming Conventions", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L163", + "_origin": "ast", + "id": "codebase_structure_naming_conventions", + "community": 117, + "norm_label": "naming conventions" + }, + { + "label": "Where to Add New Code", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L202", + "_origin": "ast", + "id": "codebase_structure_where_to_add_new_code", + "community": 117, + "norm_label": "where to add new code" + }, + { + "label": "Special Directories", + "file_type": "document", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L241", + "_origin": "ast", + "id": "codebase_structure_special_directories", + "community": 117, + "norm_label": "special directories" + }, + { + "label": "TESTING.md", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_testing", + "community": 77, + "norm_label": "testing.md" + }, + { + "label": "Testing Patterns", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L1", + "_origin": "ast", + "id": "codebase_testing_testing_patterns", + "community": 77, + "norm_label": "testing patterns" + }, + { + "label": "Test Framework", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L5", + "_origin": "ast", + "id": "codebase_testing_test_framework", + "community": 77, + "norm_label": "test framework" + }, + { + "label": "Test File Organization", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L30", + "_origin": "ast", + "id": "codebase_testing_test_file_organization", + "community": 77, + "norm_label": "test file organization" + }, + { + "label": "Test Structure", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L76", + "_origin": "ast", + "id": "codebase_testing_test_structure", + "community": 77, + "norm_label": "test structure" + }, + { + "label": "Mocking", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L118", + "_origin": "ast", + "id": "codebase_testing_mocking", + "community": 77, + "norm_label": "mocking" + }, + { + "label": "Fixtures and Factories", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L177", + "_origin": "ast", + "id": "codebase_testing_fixtures_and_factories", + "community": 77, + "norm_label": "fixtures and factories" + }, + { + "label": "Coverage", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L219", + "_origin": "ast", + "id": "codebase_testing_coverage", + "community": 77, + "norm_label": "coverage" + }, + { + "label": "Test Types", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L233", + "_origin": "ast", + "id": "codebase_testing_test_types", + "community": 77, + "norm_label": "test types" + }, + { + "label": "Common Patterns", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L250", + "_origin": "ast", + "id": "codebase_testing_common_patterns", + "community": 77, + "norm_label": "common patterns" + }, + { + "label": "Test Setup", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L343", + "_origin": "ast", + "id": "codebase_testing_test_setup", + "community": 77, + "norm_label": "test setup" + }, + { + "label": "Known Testing Gaps", + "file_type": "document", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L382", + "_origin": "ast", + "id": "codebase_testing_known_testing_gaps", + "community": 77, + "norm_label": "known testing gaps" + }, + { + "label": "write-path-event-bugs.md", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L1", + "_origin": "ast", + "id": "debug_write_path_event_bugs", + "community": 60, + "norm_label": "write-path-event-bugs.md" + }, + { + "label": "Debug Session: write-path-event-bugs", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L11", + "_origin": "ast", + "id": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "community": 60, + "norm_label": "debug session: write-path-event-bugs" + }, + { + "label": "Symptoms", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L13", + "_origin": "ast", + "id": "debug_write_path_event_bugs_symptoms", + "community": 60, + "norm_label": "symptoms" + }, + { + "label": "BUG A \u2014 Event times written 4 hours off (local serialized as UTC)", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L17", + "_origin": "ast", + "id": "debug_write_path_event_bugs_bug_a_event_times_written_4_hours_off_local_serialized_as_utc", + "community": 60, + "norm_label": "bug a \u2014 event times written 4 hours off (local serialized as utc)" + }, + { + "label": "BUG B \u2014 Created events attach to the wrong user's calendar; poller creates duplicate calendar rows", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L29", + "_origin": "ast", + "id": "debug_write_path_event_bugs_bug_b_created_events_attach_to_the_wrong_user_s_calendar_poller_creates_duplicate_calendar_rows", + "community": 60, + "norm_label": "bug b \u2014 created events attach to the wrong user's calendar; poller creates duplicate calendar rows" + }, + { + "label": "Out of scope (tracked separately \u2014 do NOT fix here)", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L42", + "_origin": "ast", + "id": "debug_write_path_event_bugs_out_of_scope_tracked_separately_do_not_fix_here", + "community": 60, + "norm_label": "out of scope (tracked separately \u2014 do not fix here)" + }, + { + "label": "Environment", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L48", + "_origin": "ast", + "id": "debug_write_path_event_bugs_environment", + "community": 60, + "norm_label": "environment" + }, + { + "label": "Current Focus", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L53", + "_origin": "ast", + "id": "debug_write_path_event_bugs_current_focus", + "community": 60, + "norm_label": "current focus" + }, + { + "label": "Evidence", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L58", + "_origin": "ast", + "id": "debug_write_path_event_bugs_evidence", + "community": 60, + "norm_label": "evidence" + }, + { + "label": "Eliminated", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L66", + "_origin": "ast", + "id": "debug_write_path_event_bugs_eliminated", + "community": 60, + "norm_label": "eliminated" + }, + { + "label": "Resolution", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L71", + "_origin": "ast", + "id": "debug_write_path_event_bugs_resolution", + "community": 60, + "norm_label": "resolution" + }, + { + "label": "BUG A \u2014 write-path timezone serialization", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L73", + "_origin": "ast", + "id": "debug_write_path_event_bugs_bug_a_write_path_timezone_serialization", + "community": 60, + "norm_label": "bug a \u2014 write-path timezone serialization" + }, + { + "label": "BUG B \u2014 wrong-calendar attach + duplicate calendar rows", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L78", + "_origin": "ast", + "id": "debug_write_path_event_bugs_bug_b_wrong_calendar_attach_duplicate_calendar_rows", + "community": 60, + "norm_label": "bug b \u2014 wrong-calendar attach + duplicate calendar rows" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L87", + "_origin": "ast", + "id": "debug_write_path_event_bugs_verification", + "community": 60, + "norm_label": "verification" + }, + { + "label": "familysync-architecture.md", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L1", + "_origin": "ast", + "id": "notes_familysync_architecture", + "community": 62, + "norm_label": "familysync-architecture.md" + }, + { + "label": "FamilySync Architecture Decisions", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L7", + "_origin": "ast", + "id": "notes_familysync_architecture_familysync_architecture_decisions", + "community": 62, + "norm_label": "familysync architecture decisions" + }, + { + "label": "What we're building", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L9", + "_origin": "ast", + "id": "notes_familysync_architecture_what_we_re_building", + "community": 62, + "norm_label": "what we're building" + }, + { + "label": "Household", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L19", + "_origin": "ast", + "id": "notes_familysync_architecture_household", + "community": 62, + "norm_label": "household" + }, + { + "label": "Infrastructure", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L25", + "_origin": "ast", + "id": "notes_familysync_architecture_infrastructure", + "community": 62, + "norm_label": "infrastructure" + }, + { + "label": "Stack decisions (verified)", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L34", + "_origin": "ast", + "id": "notes_familysync_architecture_stack_decisions_verified", + "community": 62, + "norm_label": "stack decisions (verified)" + }, + { + "label": "Calendar \u2192 Fastmail (NOT self-hosted)", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L36", + "_origin": "ast", + "id": "notes_familysync_architecture_calendar_fastmail_not_self_hosted", + "community": 62, + "norm_label": "calendar \u2192 fastmail (not self-hosted)" + }, + { + "label": "Lists \u2192 custom app backend (MariaDB)", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L57", + "_origin": "ast", + "id": "notes_familysync_architecture_lists_custom_app_backend_mariadb", + "community": 62, + "norm_label": "lists \u2192 custom app backend (mariadb)" + }, + { + "label": "Display + aggregation \u2192 custom app (the actual product)", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L69", + "_origin": "ast", + "id": "notes_familysync_architecture_display_aggregation_custom_app_the_actual_product", + "community": 62, + "norm_label": "display + aggregation \u2192 custom app (the actual product)" + }, + { + "label": "Frontend \u2192 React PWA", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L77", + "_origin": "ast", + "id": "notes_familysync_architecture_frontend_react_pwa", + "community": 62, + "norm_label": "frontend \u2192 react pwa" + }, + { + "label": "What we decided NOT to do", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L84", + "_origin": "ast", + "id": "notes_familysync_architecture_what_we_decided_not_to_do", + "community": 62, + "norm_label": "what we decided not to do" + }, + { + "label": "Net result", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L94", + "_origin": "ast", + "id": "notes_familysync_architecture_net_result", + "community": 62, + "norm_label": "net result" + }, + { + "label": "Open questions", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L100", + "_origin": "ast", + "id": "notes_familysync_architecture_open_questions", + "community": 62, + "norm_label": "open questions" + }, + { + "label": "Resolved questions", + "file_type": "document", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L107", + "_origin": "ast", + "id": "notes_familysync_architecture_resolved_questions", + "community": 62, + "norm_label": "resolved questions" + }, + { + "label": "01-01-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_plan", + "community": 134, + "norm_label": "01-01-plan.md" + }, + { + "label": "Artifacts this phase produces (Plan 01)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L106", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_plan_artifacts_this_phase_produces_plan_01", + "community": 134, + "norm_label": "artifacts this phase produces (plan 01)" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L214", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_plan_trust_boundaries", + "community": 134, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L221", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_plan_stride_threat_register", + "community": 134, + "norm_label": "stride threat register" + }, + { + "label": "01-01-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary", + "community": 29, + "norm_label": "01-01-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_dependency_graph", + "community": 29, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L23", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_tech_tracking", + "community": 29, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L92", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_metrics", + "community": 29, + "norm_label": "metrics" + }, + { + "label": "Phase 01 Plan 01: Walking Skeleton \u2014 Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L97", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "community": 29, + "norm_label": "phase 01 plan 01: walking skeleton \u2014 summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L101", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_performance", + "community": 29, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L109", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_accomplishments", + "community": 29, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L118", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_task_commits", + "community": 29, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L126", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_files_created_modified", + "community": 29, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L138", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_decisions_made", + "community": 29, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L144", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_deviations_from_plan", + "community": 29, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L148", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_auto_fixed_issues", + "community": 29, + "norm_label": "auto-fixed issues" + }, + { + "label": "Issues Encountered", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L182", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_issues_encountered", + "community": 29, + "norm_label": "issues encountered" + }, + { + "label": "User Setup Required", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L186", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_user_setup_required", + "community": 29, + "norm_label": "user setup required" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L196", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_known_stubs", + "community": 29, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L200", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_threat_surface_scan", + "community": 29, + "norm_label": "threat surface scan" + }, + { + "label": "Next Phase Readiness", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L207", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_next_phase_readiness", + "community": 29, + "norm_label": "next phase readiness" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L213", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_01_summary_self_check_passed", + "community": 29, + "norm_label": "self-check: passed" + }, + { + "label": "01-02-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_plan", + "community": 135, + "norm_label": "01-02-plan.md" + }, + { + "label": "Artifacts this phase produces (Plan 02)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L76", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_plan_artifacts_this_phase_produces_plan_02", + "community": 135, + "norm_label": "artifacts this phase produces (plan 02)" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L158", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_plan_trust_boundaries", + "community": 135, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L166", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_plan_stride_threat_register", + "community": 135, + "norm_label": "stride threat register" + }, + { + "label": "01-02-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary", + "community": 44, + "norm_label": "01-02-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_dependency_graph", + "community": 44, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L22", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_tech_tracking", + "community": 44, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L50", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_metrics", + "community": 44, + "norm_label": "metrics" + }, + { + "label": "Phase 01 Plan 02: OIDC Auth Vertical Slice \u2014 Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L55", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "community": 44, + "norm_label": "phase 01 plan 02: oidc auth vertical slice \u2014 summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_performance", + "community": 44, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_accomplishments", + "community": 44, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L77", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_task_commits", + "community": 44, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L83", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_files_created_modified", + "community": 44, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L93", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_decisions_made", + "community": 44, + "norm_label": "decisions made" + }, + { + "label": "Operator Setup Required (Authelia Client Registration)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L99", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_operator_setup_required_authelia_client_registration", + "community": 44, + "norm_label": "operator setup required (authelia client registration)" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L141", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_deviations_from_plan", + "community": 44, + "norm_label": "deviations from plan" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L145", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_known_stubs", + "community": 44, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L149", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_threat_surface_scan", + "community": 44, + "norm_label": "threat surface scan" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L162", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_02_summary_self_check_passed", + "community": 44, + "norm_label": "self-check: passed" + }, + { + "label": "01-03-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_plan", + "community": 136, + "norm_label": "01-03-plan.md" + }, + { + "label": "Artifacts this phase produces (Plan 03)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L83", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_plan_artifacts_this_phase_produces_plan_03", + "community": 136, + "norm_label": "artifacts this phase produces (plan 03)" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L202", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_plan_trust_boundaries", + "community": 136, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L210", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_plan_stride_threat_register", + "community": 136, + "norm_label": "stride threat register" + }, + { + "label": "01-03-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary", + "community": 34, + "norm_label": "01-03-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_dependency_graph", + "community": 34, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L21", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_tech_tracking", + "community": 34, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L62", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_metrics", + "community": 34, + "norm_label": "metrics" + }, + { + "label": "Phase 01 Plan 03: CalDAV Broker Slice \u2014 Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "community": 34, + "norm_label": "phase 01 plan 03: caldav broker slice \u2014 summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L71", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_performance", + "community": 34, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L78", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_accomplishments", + "community": 34, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L86", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_task_commits", + "community": 34, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L98", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_files_created_modified", + "community": 34, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L110", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_decisions_made", + "community": 34, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L117", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_deviations_from_plan", + "community": 34, + "norm_label": "deviations from plan" + }, + { + "label": "Issues Encountered", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L121", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_issues_encountered", + "community": 34, + "norm_label": "issues encountered" + }, + { + "label": "User Setup Required", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L125", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_user_setup_required", + "community": 34, + "norm_label": "user setup required" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L134", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_known_stubs", + "community": 34, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L139", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_threat_surface_scan", + "community": 34, + "norm_label": "threat surface scan" + }, + { + "label": "Self-Check", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L148", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_self_check", + "community": 34, + "norm_label": "self-check" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L157", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_03_summary_self_check_passed", + "community": 34, + "norm_label": "self-check: passed" + }, + { + "label": "01-04-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_plan", + "community": 137, + "norm_label": "01-04-plan.md" + }, + { + "label": "Artifacts this phase produces (Plan 04)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L78", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_plan_artifacts_this_phase_produces_plan_04", + "community": 137, + "norm_label": "artifacts this phase produces (plan 04)" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L152", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_plan_trust_boundaries", + "community": 137, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L160", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_plan_stride_threat_register", + "community": 137, + "norm_label": "stride threat register" + }, + { + "label": "01-04-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary", + "community": 35, + "norm_label": "01-04-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_dependency_graph", + "community": 35, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L21", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_tech_tracking", + "community": 35, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L49", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_metrics", + "community": 35, + "norm_label": "metrics" + }, + { + "label": "Phase 01 Plan 04: Integration + Gate Slice \u2014 Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L54", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "community": 35, + "norm_label": "phase 01 plan 04: integration + gate slice \u2014 summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L58", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_performance", + "community": 35, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L66", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_accomplishments", + "community": 35, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L78", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_task_commits", + "community": 35, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L82", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_files_created_modified", + "community": 35, + "norm_label": "files created/modified" + }, + { + "label": "Live Verification Pending (Tasks 2 + 3)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L93", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_live_verification_pending_tasks_2_3", + "community": 35, + "norm_label": "live verification pending (tasks 2 + 3)" + }, + { + "label": "Task 2: CAL-08 Spike \u2014 Confirm app password reads shared + personal calendars", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L97", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_task_2_cal_08_spike_confirm_app_password_reads_shared_personal_calendars", + "community": 35, + "norm_label": "task 2: cal-08 spike \u2014 confirm app password reads shared + personal calendars" + }, + { + "label": "Task 3: Live Deployment \u2014 Authelia login + Pangolin SSE smoke test", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L143", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_task_3_live_deployment_authelia_login_pangolin_sse_smoke_test", + "community": 35, + "norm_label": "task 3: live deployment \u2014 authelia login + pangolin sse smoke test" + }, + { + "label": "SSE Smoke Test Result", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L186", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_sse_smoke_test_result", + "community": 35, + "norm_label": "sse smoke test result" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L193", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_deviations_from_plan", + "community": 35, + "norm_label": "deviations from plan" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L202", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_known_stubs", + "community": 35, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L206", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_threat_surface_scan", + "community": 35, + "norm_label": "threat surface scan" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L216", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_04_summary_self_check_passed", + "community": 35, + "norm_label": "self-check: passed" + }, + { + "label": "01-CONTEXT.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context", + "community": 23, + "norm_label": "01-context.md" + }, + { + "label": "Phase 1: Foundation + Broker Spike - Context", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "community": 23, + "norm_label": "phase 1: foundation + broker spike - context" + }, + { + "label": "Phase Boundary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L7", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_phase_boundary", + "community": 23, + "norm_label": "phase boundary" + }, + { + "label": "Implementation Decisions", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L16", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_implementation_decisions", + "community": 23, + "norm_label": "implementation decisions" + }, + { + "label": "Personal-Calendar Access & Spike (CAL-08 gate)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L18", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_personal_calendar_access_spike_cal_08_gate", + "community": 23, + "norm_label": "personal-calendar access & spike (cal-08 gate)" + }, + { + "label": "Member Color Assignment (AUTH-03)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L25", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_member_color_assignment_auth_03", + "community": 23, + "norm_label": "member color assignment (auth-03)" + }, + { + "label": "Infrastructure & Deployment Scope", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L28", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_infrastructure_deployment_scope", + "community": 23, + "norm_label": "infrastructure & deployment scope" + }, + { + "label": "Locked Upstream (carried forward \u2014 do NOT re-litigate)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L32", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_locked_upstream_carried_forward_do_not_re_litigate", + "community": 23, + "norm_label": "locked upstream (carried forward \u2014 do not re-litigate)" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L39", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_claude_s_discretion", + "community": 23, + "norm_label": "claude's discretion" + }, + { + "label": "Canonical References", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L47", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_canonical_references", + "community": 23, + "norm_label": "canonical references" + }, + { + "label": "Phase definition & requirements", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L51", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_phase_definition_requirements", + "community": 23, + "norm_label": "phase definition & requirements" + }, + { + "label": "Research (read before planning \u2014 flagged NEEDS research-phase by SUMMARY)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L56", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_research_read_before_planning_flagged_needs_research_phase_by_summary", + "community": 23, + "norm_label": "research (read before planning \u2014 flagged needs research-phase by summary)" + }, + { + "label": "External docs (authoritative)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L62", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_external_docs_authoritative", + "community": 23, + "norm_label": "external docs (authoritative)" + }, + { + "label": "Existing Code Insights", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L70", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_existing_code_insights", + "community": 23, + "norm_label": "existing code insights" + }, + { + "label": "Reusable Assets", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L72", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_reusable_assets", + "community": 23, + "norm_label": "reusable assets" + }, + { + "label": "Established Patterns", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L75", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_established_patterns", + "community": 23, + "norm_label": "established patterns" + }, + { + "label": "Integration Points", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L78", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_integration_points", + "community": 23, + "norm_label": "integration points" + }, + { + "label": "Specific Ideas", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L86", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_specific_ideas", + "community": 23, + "norm_label": "specific ideas" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L94", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_deferred_ideas", + "community": 23, + "norm_label": "deferred ideas" + }, + { + "label": "Reviewed Todos (not folded)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L100", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_context_reviewed_todos_not_folded", + "community": 23, + "norm_label": "reviewed todos (not folded)" + }, + { + "label": "01-DISCUSSION-LOG.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log", + "community": 56, + "norm_label": "01-discussion-log.md" + }, + { + "label": "Phase 1: Foundation + Broker Spike - Discussion Log", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "community": 56, + "norm_label": "phase 1: foundation + broker spike - discussion log" + }, + { + "label": "Area Selection", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L12", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_area_selection", + "community": 56, + "norm_label": "area selection" + }, + { + "label": "Personal-cal spike & fallback", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L23", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_personal_cal_spike_fallback", + "community": 56, + "norm_label": "personal-cal spike & fallback" + }, + { + "label": "Where the wife's personal calendar lives", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L25", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_where_the_wife_s_personal_calendar_lives", + "community": 56, + "norm_label": "where the wife's personal calendar lives" + }, + { + "label": "Broker access model", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L36", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_broker_access_model", + "community": 56, + "norm_label": "broker access model" + }, + { + "label": "Spike credential sequencing", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L46", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_spike_credential_sequencing", + "community": 56, + "norm_label": "spike credential sequencing" + }, + { + "label": "Credential storage", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L55", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_credential_storage", + "community": 56, + "norm_label": "credential storage" + }, + { + "label": "Member color assignment", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L66", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_member_color_assignment", + "community": 56, + "norm_label": "member color assignment" + }, + { + "label": "Infra validation scope", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L79", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_infra_validation_scope", + "community": 56, + "norm_label": "infra validation scope" + }, + { + "label": "Deployment scope", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L81", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_deployment_scope", + "community": 56, + "norm_label": "deployment scope" + }, + { + "label": "Pangolin SSE smoke test", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L90", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_pangolin_sse_smoke_test", + "community": 56, + "norm_label": "pangolin sse smoke test" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L101", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_claude_s_discretion", + "community": 56, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L108", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_discussion_log_deferred_ideas", + "community": 56, + "norm_label": "deferred ideas" + }, + { + "label": "01-HUMAN-UAT.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat", + "community": 95, + "norm_label": "01-human-uat.md" + }, + { + "label": "Current Test", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L9", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_current_test", + "community": 95, + "norm_label": "current test" + }, + { + "label": "Tests", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L13", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_tests", + "community": 95, + "norm_label": "tests" + }, + { + "label": "1. AUTH-01 \u2014 Live Authelia OIDC login over the public Pangolin URL", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L15", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_1_auth_01_live_authelia_oidc_login_over_the_public_pangolin_url", + "community": 95, + "norm_label": "1. auth-01 \u2014 live authelia oidc login over the public pangolin url" + }, + { + "label": "2. AUTH-02 \u2014 Session persists across browser restart", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L20", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_2_auth_02_session_persists_across_browser_restart", + "community": 95, + "norm_label": "2. auth-02 \u2014 session persists across browser restart" + }, + { + "label": "3. AUTH-03 \u2014 Second member gets a distinct color", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L24", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_3_auth_03_second_member_gets_a_distinct_color", + "community": 95, + "norm_label": "3. auth-03 \u2014 second member gets a distinct color" + }, + { + "label": "4. SSE-over-Pangolin smoke test (de-risks Phase 4)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L28", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_4_sse_over_pangolin_smoke_test_de_risks_phase_4", + "community": 95, + "norm_label": "4. sse-over-pangolin smoke test (de-risks phase 4)" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L32", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_summary", + "community": 95, + "norm_label": "summary" + }, + { + "label": "Gaps", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L41", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_human_uat_gaps", + "community": 95, + "norm_label": "gaps" + }, + { + "label": "01-RESEARCH.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research", + "community": 71, + "norm_label": "01-research.md" + }, + { + "label": "Phase 1: Foundation + Broker Spike \u2014 Research", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "community": 71, + "norm_label": "phase 1: foundation + broker spike \u2014 research" + }, + { + "label": "User Constraints (from CONTEXT.md)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L10", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_user_constraints_from_context_md", + "community": 138, + "norm_label": "user constraints (from context.md)" + }, + { + "label": "Locked Decisions", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L12", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_locked_decisions", + "community": 138, + "norm_label": "locked decisions" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L28", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_claude_s_discretion", + "community": 138, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas (OUT OF SCOPE)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L34", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_deferred_ideas_out_of_scope", + "community": 138, + "norm_label": "deferred ideas (out of scope)" + }, + { + "label": "Phase Requirements", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L42", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_phase_requirements", + "community": 71, + "norm_label": "phase requirements" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L55", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_summary", + "community": 71, + "norm_label": "summary" + }, + { + "label": "Architectural Responsibility Map", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L67", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_architectural_responsibility_map", + "community": 71, + "norm_label": "architectural responsibility map" + }, + { + "label": "Standard Stack", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L84", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_standard_stack", + "community": 140, + "norm_label": "standard stack" + }, + { + "label": "Core (Phase 1 scope)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L86", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_core_phase_1_scope", + "community": 140, + "norm_label": "core (phase 1 scope)" + }, + { + "label": "Phase 1 backend install", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L109", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_phase_1_backend_install", + "community": 140, + "norm_label": "phase 1 backend install" + }, + { + "label": "Phase 1 frontend install", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L119", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_phase_1_frontend_install", + "community": 140, + "norm_label": "phase 1 frontend install" + }, + { + "label": "Package Legitimacy Audit", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L128", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_package_legitimacy_audit", + "community": 71, + "norm_label": "package legitimacy audit" + }, + { + "label": "Architecture Patterns", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L156", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_architecture_patterns", + "community": 89, + "norm_label": "architecture patterns" + }, + { + "label": "System Architecture Diagram", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L158", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_system_architecture_diagram", + "community": 89, + "norm_label": "system architecture diagram" + }, + { + "label": "Recommended Project Structure", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L204", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_recommended_project_structure", + "community": 89, + "norm_label": "recommended project structure" + }, + { + "label": "Pattern 1: @hono/oidc-auth Middleware Wiring", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L247", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pattern_1_hono_oidc_auth_middleware_wiring", + "community": 89, + "norm_label": "pattern 1: @hono/oidc-auth middleware wiring" + }, + { + "label": "Pattern 2: Drizzle/MariaDB Schema", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L308", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pattern_2_drizzle_mariadb_schema", + "community": 89, + "norm_label": "pattern 2: drizzle/mariadb schema" + }, + { + "label": "Pattern 3: CalDAV Broker (tsdav)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L428", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pattern_3_caldav_broker_tsdav", + "community": 89, + "norm_label": "pattern 3: caldav broker (tsdav)" + }, + { + "label": "Pattern 4: AES-GCM App-Password Encryption", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L564", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pattern_4_aes_gcm_app_password_encryption", + "community": 89, + "norm_label": "pattern 4: aes-gcm app-password encryption" + }, + { + "label": "Pattern 5: Pangolin SSE Smoke Test", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L618", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pattern_5_pangolin_sse_smoke_test", + "community": 89, + "norm_label": "pattern 5: pangolin sse smoke test" + }, + { + "label": "Pattern 6: Docker Compose Layout", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L654", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pattern_6_docker_compose_layout", + "community": 89, + "norm_label": "pattern 6: docker compose layout" + }, + { + "label": "Anti-Patterns to Avoid", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L718", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_anti_patterns_to_avoid", + "community": 89, + "norm_label": "anti-patterns to avoid" + }, + { + "label": "Don't Hand-Roll", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L732", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_don_t_hand_roll", + "community": 71, + "norm_label": "don't hand-roll" + }, + { + "label": "Common Pitfalls", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L747", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_common_pitfalls", + "community": 104, + "norm_label": "common pitfalls" + }, + { + "label": "Pitfall 1: OIDC_AUTH_EXTERNAL_URL Missing Behind Pangolin", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L749", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_1_oidc_auth_external_url_missing_behind_pangolin", + "community": 104, + "norm_label": "pitfall 1: oidc_auth_external_url missing behind pangolin" + }, + { + "label": "Pitfall 2: All-Day Event DATE Stored as DATETIME", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L757", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_2_all_day_event_date_stored_as_datetime", + "community": 104, + "norm_label": "pitfall 2: all-day event date stored as datetime" + }, + { + "label": "Pitfall 3: tsdav createDAVClient Requires Account Discovery Round-Trip", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L763", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_3_tsdav_createdavclient_requires_account_discovery_round_trip", + "community": 104, + "norm_label": "pitfall 3: tsdav createdavclient requires account discovery round-trip" + }, + { + "label": "Pitfall 4: node-cron v4 vs v3 API Change", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L769", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_4_node_cron_v4_vs_v3_api_change", + "community": 104, + "norm_label": "pitfall 4: node-cron v4 vs v3 api change" + }, + { + "label": "Pitfall 5: Drizzle `onDuplicateKeyUpdate` Requires MariaDB 10.3+", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L775", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_5_drizzle_onduplicatekeyupdate_requires_mariadb_10_3", + "community": 104, + "norm_label": "pitfall 5: drizzle `onduplicatekeyupdate` requires mariadb 10.3+" + }, + { + "label": "Pitfall 6: Fastmail ctag vs syncToken Field Availability", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L781", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_6_fastmail_ctag_vs_synctoken_field_availability", + "community": 104, + "norm_label": "pitfall 6: fastmail ctag vs synctoken field availability" + }, + { + "label": "Pitfall 7: Authelia Client Secret \u2014 Plain vs Hashed", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L787", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_pitfall_7_authelia_client_secret_plain_vs_hashed", + "community": 104, + "norm_label": "pitfall 7: authelia client secret \u2014 plain vs hashed" + }, + { + "label": "Code Examples", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L795", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_code_examples", + "community": 139, + "norm_label": "code examples" + }, + { + "label": "Serving PWA static files from Hono", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L797", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_serving_pwa_static_files_from_hono", + "community": 139, + "norm_label": "serving pwa static files from hono" + }, + { + "label": "User upsert with color assignment", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L815", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_user_upsert_with_color_assignment", + "community": 139, + "norm_label": "user upsert with color assignment" + }, + { + "label": "Hono app bootstrap with all middleware", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L854", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_hono_app_bootstrap_with_all_middleware", + "community": 139, + "norm_label": "hono app bootstrap with all middleware" + }, + { + "label": "State of the Art", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L885", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_state_of_the_art", + "community": 71, + "norm_label": "state of the art" + }, + { + "label": "Assumptions Log", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L903", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_assumptions_log", + "community": 71, + "norm_label": "assumptions log" + }, + { + "label": "Open Questions (DEFERRED TO SPIKE \u2014 resolved empirically in Plan 01-04)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L918", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_open_questions_deferred_to_spike_resolved_empirically_in_plan_01_04", + "community": 71, + "norm_label": "open questions (deferred to spike \u2014 resolved empirically in plan 01-04)" + }, + { + "label": "Environment Availability", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L942", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_environment_availability", + "community": 71, + "norm_label": "environment availability" + }, + { + "label": "Validation Architecture", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L964", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_validation_architecture", + "community": 128, + "norm_label": "validation architecture" + }, + { + "label": "Test Framework", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L968", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_test_framework", + "community": 128, + "norm_label": "test framework" + }, + { + "label": "Phase Requirements \u2192 Test Map", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L977", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_phase_requirements_test_map", + "community": 128, + "norm_label": "phase requirements \u2192 test map" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L996", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_sampling_rate", + "community": 128, + "norm_label": "sampling rate" + }, + { + "label": "Wave 0 Gaps (must create before implementation)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1002", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_wave_0_gaps_must_create_before_implementation", + "community": 128, + "norm_label": "wave 0 gaps (must create before implementation)" + }, + { + "label": "Security Domain", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1025", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_security_domain", + "community": 162, + "norm_label": "security domain" + }, + { + "label": "Applicable ASVS Categories (Level 1)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1029", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_applicable_asvs_categories_level_1", + "community": 162, + "norm_label": "applicable asvs categories (level 1)" + }, + { + "label": "Known Threat Patterns for This Stack", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1039", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_known_threat_patterns_for_this_stack", + "community": 162, + "norm_label": "known threat patterns for this stack" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1053", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_sources", + "community": 141, + "norm_label": "sources" + }, + { + "label": "Primary (HIGH confidence)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1055", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_primary_high_confidence", + "community": 141, + "norm_label": "primary (high confidence)" + }, + { + "label": "Secondary (MEDIUM confidence)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1065", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_secondary_medium_confidence", + "community": 141, + "norm_label": "secondary (medium confidence)" + }, + { + "label": "Tertiary (LOW confidence)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1074", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_tertiary_low_confidence", + "community": 141, + "norm_label": "tertiary (low confidence)" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1081", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_research_metadata", + "community": 71, + "norm_label": "metadata" + }, + { + "label": "01-VALIDATION.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation", + "community": 105, + "norm_label": "01-validation.md" + }, + { + "label": "Phase 1 \u2014 Validation Strategy", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L10", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "community": 105, + "norm_label": "phase 1 \u2014 validation strategy" + }, + { + "label": "Test Infrastructure", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L16", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_test_infrastructure", + "community": 105, + "norm_label": "test infrastructure" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L28", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_sampling_rate", + "community": 105, + "norm_label": "sampling rate" + }, + { + "label": "Per-Task Verification Map", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L37", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_per_task_verification_map", + "community": 105, + "norm_label": "per-task verification map" + }, + { + "label": "Wave 0 Requirements (created in Plan 01 Task 1)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L54", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_wave_0_requirements_created_in_plan_01_task_1", + "community": 105, + "norm_label": "wave 0 requirements (created in plan 01 task 1)" + }, + { + "label": "Manual-Only Verifications", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L67", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_manual_only_verifications", + "community": 105, + "norm_label": "manual-only verifications" + }, + { + "label": "Validation Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L80", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_validation_validation_sign_off", + "community": 105, + "norm_label": "validation sign-off" + }, + { + "label": "01-VERIFICATION.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification", + "community": 36, + "norm_label": "01-verification.md" + }, + { + "label": "Phase 01: Foundation + Broker Spike \u2014 Verification Report", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L22", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_phase_01_foundation_broker_spike_verification_report", + "community": 36, + "norm_label": "phase 01: foundation + broker spike \u2014 verification report" + }, + { + "label": "Goal Achievement", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L31", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_goal_achievement", + "community": 36, + "norm_label": "goal achievement" + }, + { + "label": "Observable Truths", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L33", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_observable_truths", + "community": 36, + "norm_label": "observable truths" + }, + { + "label": "Required Artifacts", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L55", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_required_artifacts", + "community": 36, + "norm_label": "required artifacts" + }, + { + "label": "Key Link Verification", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L86", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_key_link_verification", + "community": 36, + "norm_label": "key link verification" + }, + { + "label": "Data-Flow Trace (Level 4)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L106", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_data_flow_trace_level_4", + "community": 36, + "norm_label": "data-flow trace (level 4)" + }, + { + "label": "Behavioral Spot-Checks", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L116", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_behavioral_spot_checks", + "community": 36, + "norm_label": "behavioral spot-checks" + }, + { + "label": "Probe Execution", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L128", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_probe_execution", + "community": 36, + "norm_label": "probe execution" + }, + { + "label": "Requirements Coverage", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L134", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_requirements_coverage", + "community": 36, + "norm_label": "requirements coverage" + }, + { + "label": "Anti-Patterns Found", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L146", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_anti_patterns_found", + "community": 36, + "norm_label": "anti-patterns found" + }, + { + "label": "Human Verification Required", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L158", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_human_verification_required", + "community": 36, + "norm_label": "human verification required" + }, + { + "label": "1. AUTH-01 \u2014 Authelia OIDC Login (Member 1: Lucas)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L160", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_1_auth_01_authelia_oidc_login_member_1_lucas", + "community": 36, + "norm_label": "1. auth-01 \u2014 authelia oidc login (member 1: lucas)" + }, + { + "label": "2. AUTH-02 \u2014 Session Persistence Across Browser Restart", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L168", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_2_auth_02_session_persistence_across_browser_restart", + "community": 36, + "norm_label": "2. auth-02 \u2014 session persistence across browser restart" + }, + { + "label": "3. AUTH-03 \u2014 Cross-Member Distinct Color (Member 2: Wife)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L176", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_3_auth_03_cross_member_distinct_color_member_2_wife", + "community": 36, + "norm_label": "3. auth-03 \u2014 cross-member distinct color (member 2: wife)" + }, + { + "label": "4. SSE Smoke Test \u2014 Pangolin Pass-Through (D-08)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L184", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_4_sse_smoke_test_pangolin_pass_through_d_08", + "community": 36, + "norm_label": "4. sse smoke test \u2014 pangolin pass-through (d-08)" + }, + { + "label": "Gaps Summary", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L192", + "_origin": "ast", + "id": "01_foundation_broker_spike_01_verification_gaps_summary", + "community": 36, + "norm_label": "gaps summary" + }, + { + "label": "CAL-08-DECISION.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision", + "community": 96, + "norm_label": "cal-08-decision.md" + }, + { + "label": "CAL-08: Personal Calendar ACL Spike \u2014 Decision Record", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "community": 96, + "norm_label": "cal-08: personal calendar acl spike \u2014 decision record" + }, + { + "label": "Status", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L8", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_status", + "community": 96, + "norm_label": "status" + }, + { + "label": "How to Run the Spike", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L14", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_how_to_run_the_spike", + "community": 96, + "norm_label": "how to run the spike" + }, + { + "label": "Results", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L29", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_results", + "community": 96, + "norm_label": "results" + }, + { + "label": "Calendars Discovered", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L31", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_calendars_discovered", + "community": 96, + "norm_label": "calendars discovered" + }, + { + "label": "Questions Resolved", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L38", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_questions_resolved", + "community": 96, + "norm_label": "questions resolved" + }, + { + "label": "Decision", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L49", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_decision", + "community": 96, + "norm_label": "decision" + }, + { + "label": "Notes", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L70", + "_origin": "ast", + "id": "01_foundation_broker_spike_cal_08_decision_notes", + "community": 96, + "norm_label": "notes" + }, + { + "label": "SKELETON.md", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton", + "community": 120, + "norm_label": "skeleton.md" + }, + { + "label": "Walking Skeleton \u2014 FamilySync", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L1", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "community": 120, + "norm_label": "walking skeleton \u2014 familysync" + }, + { + "label": "Capability Proven End-to-End", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L6", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton_capability_proven_end_to_end", + "community": 120, + "norm_label": "capability proven end-to-end" + }, + { + "label": "Architectural Decisions", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L10", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton_architectural_decisions", + "community": 120, + "norm_label": "architectural decisions" + }, + { + "label": "Stack Touched in Phase 1", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L30", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton_stack_touched_in_phase_1", + "community": 120, + "norm_label": "stack touched in phase 1" + }, + { + "label": "Out of Scope (Deferred to Later Slices)", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L38", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton_out_of_scope_deferred_to_later_slices", + "community": 120, + "norm_label": "out of scope (deferred to later slices)" + }, + { + "label": "Subsequent Slice Plan", + "file_type": "document", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L49", + "_origin": "ast", + "id": "01_foundation_broker_spike_skeleton_subsequent_slice_plan", + "community": 120, + "norm_label": "subsequent slice plan" + }, + { + "label": ".continue-here.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_continue_here", + "community": 151, + "norm_label": ".continue-here.md" + }, + { + "label": "Required Reading (in order)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L60", + "_origin": "ast", + "id": "02_calendar_display_continue_here_required_reading_in_order", + "community": 151, + "norm_label": "required reading (in order)" + }, + { + "label": "Critical Anti-Patterns (do NOT repeat these)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L67", + "_origin": "ast", + "id": "02_calendar_display_continue_here_critical_anti_patterns_do_not_repeat_these", + "community": 151, + "norm_label": "critical anti-patterns (do not repeat these)" + }, + { + "label": "Infrastructure State", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L74", + "_origin": "ast", + "id": "02_calendar_display_continue_here_infrastructure_state", + "community": 151, + "norm_label": "infrastructure state" + }, + { + "label": "02-01-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_01_plan", + "community": 142, + "norm_label": "02-01-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L200", + "_origin": "ast", + "id": "02_calendar_display_02_01_plan_trust_boundaries", + "community": 142, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L207", + "_origin": "ast", + "id": "02_calendar_display_02_01_plan_stride_threat_register", + "community": 142, + "norm_label": "stride threat register" + }, + { + "label": "Artifacts this phase produces (Plan 01)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L231", + "_origin": "ast", + "id": "02_calendar_display_02_01_plan_artifacts_this_phase_produces_plan_01", + "community": 142, + "norm_label": "artifacts this phase produces (plan 01)" + }, + { + "label": "02-01-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary", + "community": 65, + "norm_label": "02-01-summary.md" + }, + { + "label": "Phase 02 Plan 01: Foundation \u2014 Schema Columns, Test Harness, Dev-Auth Bypass Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L50", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "community": 65, + "norm_label": "phase 02 plan 01: foundation \u2014 schema columns, test harness, dev-auth bypass summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L54", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_what_was_built", + "community": 65, + "norm_label": "what was built" + }, + { + "label": "Schema Changes (Task 1)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L56", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_schema_changes_task_1", + "community": 65, + "norm_label": "schema changes (task 1)" + }, + { + "label": "PWA Test Harness (Task 1)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L65", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_pwa_test_harness_task_1", + "community": 65, + "norm_label": "pwa test harness (task 1)" + }, + { + "label": "ICS Fixtures (Task 1)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L72", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_ics_fixtures_task_1", + "community": 65, + "norm_label": "ics fixtures (task 1)" + }, + { + "label": "RED Test Stubs (Task 1)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L81", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_red_test_stubs_task_1", + "community": 65, + "norm_label": "red test stubs (task 1)" + }, + { + "label": "Dev-Auth Bypass (Task 2)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L98", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_dev_auth_bypass_task_2", + "community": 65, + "norm_label": "dev-auth bypass (task 2)" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L113", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_deviations_from_plan", + "community": 65, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L115", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_auto_fixed_issues", + "community": 65, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L125", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_known_stubs", + "community": 65, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L135", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_threat_flags", + "community": 65, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L139", + "_origin": "ast", + "id": "02_calendar_display_02_01_summary_self_check_passed", + "community": 65, + "norm_label": "self-check: passed" + }, + { + "label": "02-02-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_02_plan", + "community": 143, + "norm_label": "02-02-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L187", + "_origin": "ast", + "id": "02_calendar_display_02_02_plan_trust_boundaries", + "community": 143, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L194", + "_origin": "ast", + "id": "02_calendar_display_02_02_plan_stride_threat_register", + "community": 143, + "norm_label": "stride threat register" + }, + { + "label": "Artifacts this phase produces (Plan 02)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L218", + "_origin": "ast", + "id": "02_calendar_display_02_02_plan_artifacts_this_phase_produces_plan_02", + "community": 143, + "norm_label": "artifacts this phase produces (plan 02)" + }, + { + "label": "02-02-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary", + "community": 79, + "norm_label": "02-02-summary.md" + }, + { + "label": "Phase 02 Plan 02: Windowed /api/events \u2014 Recurrence Expansion + Color Join Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L37", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "community": 79, + "norm_label": "phase 02 plan 02: windowed /api/events \u2014 recurrence expansion + color join summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L41", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_what_was_built", + "community": 79, + "norm_label": "what was built" + }, + { + "label": "Task 1: expandOccurrences() \u2014 apps/api/src/broker/expand.ts", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L43", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_task_1_expandoccurrences_apps_api_src_broker_expand_ts", + "community": 79, + "norm_label": "task 1: expandoccurrences() \u2014 apps/api/src/broker/expand.ts" + }, + { + "label": "Task 2: Windowed /api/events \u2014 apps/api/src/routes/events.ts", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L68", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_task_2_windowed_api_events_apps_api_src_routes_events_ts", + "community": 79, + "norm_label": "task 2: windowed /api/events \u2014 apps/api/src/routes/events.ts" + }, + { + "label": "Task 3: Shared-Family Calendar Marking \u2014 RESOLVED BY DEFERRAL", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L100", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_task_3_shared_family_calendar_marking_resolved_by_deferral", + "community": 79, + "norm_label": "task 3: shared-family calendar marking \u2014 resolved by deferral" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L112", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_deviations_from_plan", + "community": 79, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L114", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_auto_fixed_issues", + "community": 79, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L128", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_known_stubs", + "community": 79, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L132", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_threat_flags", + "community": 79, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L141", + "_origin": "ast", + "id": "02_calendar_display_02_02_summary_self_check_passed", + "community": 79, + "norm_label": "self-check: passed" + }, + { + "label": "02-03-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_03_plan", + "community": 144, + "norm_label": "02-03-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L210", + "_origin": "ast", + "id": "02_calendar_display_02_03_plan_trust_boundaries", + "community": 144, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L217", + "_origin": "ast", + "id": "02_calendar_display_02_03_plan_stride_threat_register", + "community": 144, + "norm_label": "stride threat register" + }, + { + "label": "Artifacts this phase produces (Plan 03)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L241", + "_origin": "ast", + "id": "02_calendar_display_02_03_plan_artifacts_this_phase_produces_plan_03", + "community": 144, + "norm_label": "artifacts this phase produces (plan 03)" + }, + { + "label": "02-03-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary", + "community": 72, + "norm_label": "02-03-summary.md" + }, + { + "label": "Phase 02 Plan 03: PWA Foundation \u2014 Token Layer, Color Utils, Calendar Config, Hydration, Store Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L60", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "community": 72, + "norm_label": "phase 02 plan 03: pwa foundation \u2014 token layer, color utils, calendar config, hydration, store summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L64", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_what_was_built", + "community": 72, + "norm_label": "what was built" + }, + { + "label": "Task 1: Schedule-X Stack + Token Layer + main.tsx Import Order", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L66", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_task_1_schedule_x_stack_token_layer_main_tsx_import_order", + "community": 72, + "norm_label": "task 1: schedule-x stack + token layer + main.tsx import order" + }, + { + "label": "Task 2: colorUtils + calendarConfig \u2014 RED Stubs Turned GREEN", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L91", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_task_2_colorutils_calendarconfig_red_stubs_turned_green", + "community": 72, + "norm_label": "task 2: colorutils + calendarconfig \u2014 red stubs turned green" + }, + { + "label": "Task 3: hydrateEvents + calendarStore + windowed fetchEvents \u2014 RED Stubs Turned GREEN", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L105", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_task_3_hydrateevents_calendarstore_windowed_fetchevents_red_stubs_turned_green", + "community": 72, + "norm_label": "task 3: hydrateevents + calendarstore + windowed fetchevents \u2014 red stubs turned green" + }, + { + "label": "Verification Results", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L124", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_verification_results", + "community": 72, + "norm_label": "verification results" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L138", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_deviations_from_plan", + "community": 72, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L140", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_auto_fixed_issues", + "community": 72, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L156", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_known_stubs", + "community": 72, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L160", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_threat_flags", + "community": 72, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L164", + "_origin": "ast", + "id": "02_calendar_display_02_03_summary_self_check_passed", + "community": 72, + "norm_label": "self-check: passed" + }, + { + "label": "02-04-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_04_plan", + "community": 145, + "norm_label": "02-04-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L146", + "_origin": "ast", + "id": "02_calendar_display_02_04_plan_trust_boundaries", + "community": 145, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L152", + "_origin": "ast", + "id": "02_calendar_display_02_04_plan_stride_threat_register", + "community": 145, + "norm_label": "stride threat register" + }, + { + "label": "Artifacts this phase produces (Plan 04)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L173", + "_origin": "ast", + "id": "02_calendar_display_02_04_plan_artifacts_this_phase_produces_plan_04", + "community": 145, + "norm_label": "artifacts this phase produces (plan 04)" + }, + { + "label": "02-04-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary", + "community": 80, + "norm_label": "02-04-summary.md" + }, + { + "label": "Phase 02 Plan 04: CalendarShell \u2014 Schedule-X Mounted, Wired to Data Pipeline Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L39", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "community": 80, + "norm_label": "phase 02 plan 04: calendarshell \u2014 schedule-x mounted, wired to data pipeline summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L43", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_what_was_built", + "community": 80, + "norm_label": "what was built" + }, + { + "label": "Task 1: CalendarShell + App.tsx", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L45", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_task_1_calendarshell_app_tsx", + "community": 80, + "norm_label": "task 1: calendarshell + app.tsx" + }, + { + "label": "Task 2: CalendarShell Render Smoke Test (CAL-03)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L61", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_task_2_calendarshell_render_smoke_test_cal_03", + "community": 80, + "norm_label": "task 2: calendarshell render smoke test (cal-03)" + }, + { + "label": "Verification Results", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L75", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_verification_results", + "community": 80, + "norm_label": "verification results" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L85", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_deviations_from_plan", + "community": 80, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L87", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_auto_fixed_issues", + "community": 80, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L103", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_known_stubs", + "community": 80, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L107", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_threat_flags", + "community": 80, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L112", + "_origin": "ast", + "id": "02_calendar_display_02_04_summary_self_check_passed", + "community": 80, + "norm_label": "self-check: passed" + }, + { + "label": "02-05-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_05_plan", + "community": 146, + "norm_label": "02-05-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L177", + "_origin": "ast", + "id": "02_calendar_display_02_05_plan_trust_boundaries", + "community": 146, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L183", + "_origin": "ast", + "id": "02_calendar_display_02_05_plan_stride_threat_register", + "community": 146, + "norm_label": "stride threat register" + }, + { + "label": "Artifacts this phase produces (Plan 05)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L206", + "_origin": "ast", + "id": "02_calendar_display_02_05_plan_artifacts_this_phase_produces_plan_05", + "community": 146, + "norm_label": "artifacts this phase produces (plan 05)" + }, + { + "label": "02-05-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary", + "community": 66, + "norm_label": "02-05-summary.md" + }, + { + "label": "Phase 02 Plan 05: Calendar UX \u2014 Popover, Chrome, States Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L50", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "community": 66, + "norm_label": "phase 02 plan 05: calendar ux \u2014 popover, chrome, states summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L54", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_what_was_built", + "community": 66, + "norm_label": "what was built" + }, + { + "label": "Task 1: EventDetailPopover + CalendarShell wiring (TDD)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L56", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_task_1_eventdetailpopover_calendarshell_wiring_tdd", + "community": 66, + "norm_label": "task 1: eventdetailpopover + calendarshell wiring (tdd)" + }, + { + "label": "Task 2: Chrome components, state branches, EventProof retired", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L77", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_task_2_chrome_components_state_branches_eventproof_retired", + "community": 66, + "norm_label": "task 2: chrome components, state branches, eventproof retired" + }, + { + "label": "Verification Results", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L112", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_verification_results", + "community": 66, + "norm_label": "verification results" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L123", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_deviations_from_plan", + "community": 66, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L125", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_auto_fixed_issues", + "community": 66, + "norm_label": "auto-fixed issues" + }, + { + "label": "Task 3 Status", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L148", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_task_3_status", + "community": 66, + "norm_label": "task 3 status" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L152", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_known_stubs", + "community": 66, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L156", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_threat_flags", + "community": 66, + "norm_label": "threat flags" + }, + { + "label": "Human Verify Checkpoint (Task 3 \u2014 awaiting operator)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L165", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_human_verify_checkpoint_task_3_awaiting_operator", + "community": 66, + "norm_label": "human verify checkpoint (task 3 \u2014 awaiting operator)" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L169", + "_origin": "ast", + "id": "02_calendar_display_02_05_summary_self_check_passed", + "community": 66, + "norm_label": "self-check: passed" + }, + { + "label": "02-CONTEXT.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_context", + "community": 20, + "norm_label": "02-context.md" + }, + { + "label": "Phase 2: Calendar Display - Context", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_context_phase_2_calendar_display_context", + "community": 20, + "norm_label": "phase 2: calendar display - context" + }, + { + "label": "Phase Boundary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L7", + "_origin": "ast", + "id": "02_calendar_display_02_context_phase_boundary", + "community": 20, + "norm_label": "phase boundary" + }, + { + "label": "Implementation Decisions", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L21", + "_origin": "ast", + "id": "02_calendar_display_02_context_implementation_decisions", + "community": 20, + "norm_label": "implementation decisions" + }, + { + "label": "Theming architecture (the load-bearing decision)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L23", + "_origin": "ast", + "id": "02_calendar_display_02_context_theming_architecture_the_load_bearing_decision", + "community": 20, + "norm_label": "theming architecture (the load-bearing decision)" + }, + { + "label": "Views & default", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L35", + "_origin": "ast", + "id": "02_calendar_display_02_context_views_default", + "community": 20, + "norm_label": "views & default" + }, + { + "label": "Color & ownership legibility", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L41", + "_origin": "ast", + "id": "02_calendar_display_02_context_color_ownership_legibility", + "community": 20, + "norm_label": "color & ownership legibility" + }, + { + "label": "Event detail density", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L49", + "_origin": "ast", + "id": "02_calendar_display_02_context_event_detail_density", + "community": 20, + "norm_label": "event detail density" + }, + { + "label": "Recurrence / time (carried forward \u2014 not re-discussed)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L55", + "_origin": "ast", + "id": "02_calendar_display_02_context_recurrence_time_carried_forward_not_re_discussed", + "community": 20, + "norm_label": "recurrence / time (carried forward \u2014 not re-discussed)" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L62", + "_origin": "ast", + "id": "02_calendar_display_02_context_claude_s_discretion", + "community": 20, + "norm_label": "claude's discretion" + }, + { + "label": "Dev-auth bypass (from D-14, project-level)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L73", + "_origin": "ast", + "id": "02_calendar_display_02_context_dev_auth_bypass_from_d_14_project_level", + "community": 20, + "norm_label": "dev-auth bypass (from d-14, project-level)" + }, + { + "label": "Canonical References", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L81", + "_origin": "ast", + "id": "02_calendar_display_02_context_canonical_references", + "community": 20, + "norm_label": "canonical references" + }, + { + "label": "Project decisions & scope", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L85", + "_origin": "ast", + "id": "02_calendar_display_02_context_project_decisions_scope", + "community": 20, + "norm_label": "project decisions & scope" + }, + { + "label": "Phase 1 foundation this builds on", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L90", + "_origin": "ast", + "id": "02_calendar_display_02_context_phase_1_foundation_this_builds_on", + "community": 20, + "norm_label": "phase 1 foundation this builds on" + }, + { + "label": "Existing Code Insights", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L101", + "_origin": "ast", + "id": "02_calendar_display_02_context_existing_code_insights", + "community": 20, + "norm_label": "existing code insights" + }, + { + "label": "Reusable Assets", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L103", + "_origin": "ast", + "id": "02_calendar_display_02_context_reusable_assets", + "community": 20, + "norm_label": "reusable assets" + }, + { + "label": "Established Patterns", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L109", + "_origin": "ast", + "id": "02_calendar_display_02_context_established_patterns", + "community": 20, + "norm_label": "established patterns" + }, + { + "label": "Integration Points", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L114", + "_origin": "ast", + "id": "02_calendar_display_02_context_integration_points", + "community": 20, + "norm_label": "integration points" + }, + { + "label": "Specific Ideas", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L120", + "_origin": "ast", + "id": "02_calendar_display_02_context_specific_ideas", + "community": 20, + "norm_label": "specific ideas" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L128", + "_origin": "ast", + "id": "02_calendar_display_02_context_deferred_ideas", + "community": 20, + "norm_label": "deferred ideas" + }, + { + "label": "Reviewed Todos (not folded)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L135", + "_origin": "ast", + "id": "02_calendar_display_02_context_reviewed_todos_not_folded", + "community": 20, + "norm_label": "reviewed todos (not folded)" + }, + { + "label": "02-DISCUSSION-LOG.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log", + "community": 106, + "norm_label": "02-discussion-log.md" + }, + { + "label": "Phase 2: Calendar Display - Discussion Log", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "community": 106, + "norm_label": "phase 2: calendar display - discussion log" + }, + { + "label": "Visual model \u2192 Theming architecture", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L12", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_visual_model_theming_architecture", + "community": 106, + "norm_label": "visual model \u2192 theming architecture" + }, + { + "label": "Default view & per-device", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L30", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_default_view_per_device", + "community": 106, + "norm_label": "default view & per-device" + }, + { + "label": "Color & shared-vs-personal", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L40", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_color_shared_vs_personal", + "community": 106, + "norm_label": "color & shared-vs-personal" + }, + { + "label": "Event detail density", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L51", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_event_detail_density", + "community": 106, + "norm_label": "event detail density" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L61", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_claude_s_discretion", + "community": 106, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L66", + "_origin": "ast", + "id": "02_calendar_display_02_discussion_log_deferred_ideas", + "community": 106, + "norm_label": "deferred ideas" + }, + { + "label": "02-HUMAN-UAT.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat", + "community": 97, + "norm_label": "02-human-uat.md" + }, + { + "label": "Current Test", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L9", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_current_test", + "community": 97, + "norm_label": "current test" + }, + { + "label": "Tests", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L13", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_tests", + "community": 97, + "norm_label": "tests" + }, + { + "label": "1. Color-coded rendering", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L15", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_1_color_coded_rendering", + "community": 97, + "norm_label": "1. color-coded rendering" + }, + { + "label": "2. All four views render + grid scrolls", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L19", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_2_all_four_views_render_grid_scrolls", + "community": 97, + "norm_label": "2. all four views render + grid scrolls" + }, + { + "label": "3. Recurring events across DST", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L23", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_3_recurring_events_across_dst", + "community": 97, + "norm_label": "3. recurring events across dst" + }, + { + "label": "4. All-day banners \u2014 no date shift", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L27", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_4_all_day_banners_no_date_shift", + "community": 97, + "norm_label": "4. all-day banners \u2014 no date shift" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L31", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_summary", + "community": 97, + "norm_label": "summary" + }, + { + "label": "Gaps", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L40", + "_origin": "ast", + "id": "02_calendar_display_02_human_uat_gaps", + "community": 97, + "norm_label": "gaps" + }, + { + "label": "02-PATTERNS.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_patterns", + "community": 8, + "norm_label": "02-patterns.md" + }, + { + "label": "Phase 2: Calendar Display - Pattern Map", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "community": 8, + "norm_label": "phase 2: calendar display - pattern map" + }, + { + "label": "File Classification", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L9", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_file_classification", + "community": 8, + "norm_label": "file classification" + }, + { + "label": "Pattern Assignments", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L39", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_pattern_assignments", + "community": 8, + "norm_label": "pattern assignments" + }, + { + "label": "`apps/api/src/db/schema.ts` (model \u2014 modify existing)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L41", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_src_db_schema_ts_model_modify_existing", + "community": 8, + "norm_label": "`apps/api/src/db/schema.ts` (model \u2014 modify existing)" + }, + { + "label": "`apps/api/src/broker/expand.ts` (utility, transform \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L75", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_src_broker_expand_ts_utility_transform_new_file", + "community": 8, + "norm_label": "`apps/api/src/broker/expand.ts` (utility, transform \u2014 new file)" + }, + { + "label": "`apps/api/src/routes/events.ts` (route, request-response \u2014 modify existing)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L135", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_src_routes_events_ts_route_request_response_modify_existing", + "community": 8, + "norm_label": "`apps/api/src/routes/events.ts` (route, request-response \u2014 modify existing)" + }, + { + "label": "`apps/api/src/auth/devBypass.ts` (middleware \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L195", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_src_auth_devbypass_ts_middleware_new_file", + "community": 8, + "norm_label": "`apps/api/src/auth/devbypass.ts` (middleware \u2014 new file)" + }, + { + "label": "`apps/api/src/index.ts` (config \u2014 modify existing)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L226", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_src_index_ts_config_modify_existing", + "community": 8, + "norm_label": "`apps/api/src/index.ts` (config \u2014 modify existing)" + }, + { + "label": "`apps/api/tests/broker/expand.test.ts` (test \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L258", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_tests_broker_expand_test_ts_test_new_file", + "community": 8, + "norm_label": "`apps/api/tests/broker/expand.test.ts` (test \u2014 new file)" + }, + { + "label": "`apps/api/tests/routes/events.test.ts` (test \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L308", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_api_tests_routes_events_test_ts_test_new_file", + "community": 8, + "norm_label": "`apps/api/tests/routes/events.test.ts` (test \u2014 new file)" + }, + { + "label": "`apps/pwa/vitest.config.ts` (config \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L337", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_vitest_config_ts_config_new_file", + "community": 8, + "norm_label": "`apps/pwa/vitest.config.ts` (config \u2014 new file)" + }, + { + "label": "`apps/pwa/src/api/client.ts` (utility, request-response \u2014 modify existing)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L355", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_api_client_ts_utility_request_response_modify_existing", + "community": 8, + "norm_label": "`apps/pwa/src/api/client.ts` (utility, request-response \u2014 modify existing)" + }, + { + "label": "`apps/pwa/src/lib/hydrateEvents.ts` (utility, transform \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L391", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_lib_hydrateevents_ts_utility_transform_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/lib/hydrateevents.ts` (utility, transform \u2014 new file)" + }, + { + "label": "`apps/pwa/src/lib/calendarConfig.ts` (utility, transform \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L417", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_lib_calendarconfig_ts_utility_transform_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/lib/calendarconfig.ts` (utility, transform \u2014 new file)" + }, + { + "label": "`apps/pwa/src/lib/colorUtils.ts` (utility, transform \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L434", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_lib_colorutils_ts_utility_transform_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/lib/colorutils.ts` (utility, transform \u2014 new file)" + }, + { + "label": "`apps/pwa/src/store/calendarStore.ts` (store, event-driven \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L467", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_store_calendarstore_ts_store_event_driven_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/store/calendarstore.ts` (store, event-driven \u2014 new file)" + }, + { + "label": "`apps/pwa/src/components/CalendarShell.tsx` (component, request-response \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L487", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_components_calendarshell_tsx_component_request_response_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/components/calendarshell.tsx` (component, request-response \u2014 new file)" + }, + { + "label": "`apps/pwa/src/components/EventDetailPopover.tsx` (component \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L532", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_components_eventdetailpopover_tsx_component_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/components/eventdetailpopover.tsx` (component \u2014 new file)" + }, + { + "label": "`apps/pwa/src/components/SkeletonCalendar.tsx` (component \u2014 new file)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L559", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_components_skeletoncalendar_tsx_component_new_file", + "community": 8, + "norm_label": "`apps/pwa/src/components/skeletoncalendar.tsx` (component \u2014 new file)" + }, + { + "label": "`apps/pwa/src/main.tsx` (config \u2014 modify existing)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L590", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_apps_pwa_src_main_tsx_config_modify_existing", + "community": 8, + "norm_label": "`apps/pwa/src/main.tsx` (config \u2014 modify existing)" + }, + { + "label": "Shared Patterns", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L628", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_shared_patterns", + "community": 8, + "norm_label": "shared patterns" + }, + { + "label": "Authentication Guard (all API routes)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L630", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_authentication_guard_all_api_routes", + "community": 8, + "norm_label": "authentication guard (all api routes)" + }, + { + "label": "Hono Route Error Handling", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L639", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_hono_route_error_handling", + "community": 8, + "norm_label": "hono route error handling" + }, + { + "label": "Drizzle Upsert Pattern", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L652", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_drizzle_upsert_pattern", + "community": 8, + "norm_label": "drizzle upsert pattern" + }, + { + "label": "D-13 allDay Discrimination", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L662", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_d_13_allday_discrimination", + "community": 8, + "norm_label": "d-13 allday discrimination" + }, + { + "label": "TanStack Query Usage", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L673", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_tanstack_query_usage", + "community": 8, + "norm_label": "tanstack query usage" + }, + { + "label": "Fetch Client with Credentials", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L685", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_fetch_client_with_credentials", + "community": 8, + "norm_label": "fetch client with credentials" + }, + { + "label": "CSS Token Usage in Components", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L696", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_css_token_usage_in_components", + "community": 8, + "norm_label": "css token usage in components" + }, + { + "label": "No Analog Found", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L708", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_no_analog_found", + "community": 8, + "norm_label": "no analog found" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L719", + "_origin": "ast", + "id": "02_calendar_display_02_patterns_metadata", + "community": 8, + "norm_label": "metadata" + }, + { + "label": "02-RESEARCH.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_research", + "community": 73, + "norm_label": "02-research.md" + }, + { + "label": "Phase 2: Calendar Display - Research", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_research_phase_2_calendar_display_research", + "community": 73, + "norm_label": "phase 2: calendar display - research" + }, + { + "label": "User Constraints (from CONTEXT.md)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L10", + "_origin": "ast", + "id": "02_calendar_display_02_research_user_constraints_from_context_md", + "community": 148, + "norm_label": "user constraints (from context.md)" + }, + { + "label": "Locked Decisions", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L12", + "_origin": "ast", + "id": "02_calendar_display_02_research_locked_decisions", + "community": 148, + "norm_label": "locked decisions" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L29", + "_origin": "ast", + "id": "02_calendar_display_02_research_claude_s_discretion", + "community": 148, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas (OUT OF SCOPE)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L34", + "_origin": "ast", + "id": "02_calendar_display_02_research_deferred_ideas_out_of_scope", + "community": 148, + "norm_label": "deferred ideas (out of scope)" + }, + { + "label": "Phase Requirements", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L45", + "_origin": "ast", + "id": "02_calendar_display_02_research_phase_requirements", + "community": 73, + "norm_label": "phase requirements" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L56", + "_origin": "ast", + "id": "02_calendar_display_02_research_summary", + "community": 73, + "norm_label": "summary" + }, + { + "label": "Architectural Responsibility Map", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L68", + "_origin": "ast", + "id": "02_calendar_display_02_research_architectural_responsibility_map", + "community": 73, + "norm_label": "architectural responsibility map" + }, + { + "label": "Standard Stack", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L85", + "_origin": "ast", + "id": "02_calendar_display_02_research_standard_stack", + "community": 149, + "norm_label": "standard stack" + }, + { + "label": "Core (all versions verified against npm registry 2026-06-04)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L87", + "_origin": "ast", + "id": "02_calendar_display_02_research_core_all_versions_verified_against_npm_registry_2026_06_04", + "community": 149, + "norm_label": "core (all versions verified against npm registry 2026-06-04)" + }, + { + "label": "No New Backend Dependencies Needed", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L101", + "_origin": "ast", + "id": "02_calendar_display_02_research_no_new_backend_dependencies_needed", + "community": 149, + "norm_label": "no new backend dependencies needed" + }, + { + "label": "Installation (PWA only)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L105", + "_origin": "ast", + "id": "02_calendar_display_02_research_installation_pwa_only", + "community": 149, + "norm_label": "installation (pwa only)" + }, + { + "label": "Package Legitimacy Audit", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L118", + "_origin": "ast", + "id": "02_calendar_display_02_research_package_legitimacy_audit", + "community": 73, + "norm_label": "package legitimacy audit" + }, + { + "label": "Architecture Patterns", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L139", + "_origin": "ast", + "id": "02_calendar_display_02_research_architecture_patterns", + "community": 98, + "norm_label": "architecture patterns" + }, + { + "label": "System Architecture Diagram", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L141", + "_origin": "ast", + "id": "02_calendar_display_02_research_system_architecture_diagram", + "community": 98, + "norm_label": "system architecture diagram" + }, + { + "label": "Recommended Project Structure", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L186", + "_origin": "ast", + "id": "02_calendar_display_02_research_recommended_project_structure", + "community": 98, + "norm_label": "recommended project structure" + }, + { + "label": "Pattern 1: `/api/events` Windowed Query with Expansion", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L216", + "_origin": "ast", + "id": "02_calendar_display_02_research_pattern_1_api_events_windowed_query_with_expansion", + "community": 98, + "norm_label": "pattern 1: `/api/events` windowed query with expansion" + }, + { + "label": "Pattern 2: Schedule-X Event Format (Temporal, not ISO strings)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L297", + "_origin": "ast", + "id": "02_calendar_display_02_research_pattern_2_schedule_x_event_format_temporal_not_iso_strings", + "community": 98, + "norm_label": "pattern 2: schedule-x event format (temporal, not iso strings)" + }, + { + "label": "Pattern 3: Schedule-X Calendar Configuration", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L349", + "_origin": "ast", + "id": "02_calendar_display_02_research_pattern_3_schedule_x_calendar_configuration", + "community": 98, + "norm_label": "pattern 3: schedule-x calendar configuration" + }, + { + "label": "Pattern 4: TanStack Query + onRangeUpdate Wiring", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L410", + "_origin": "ast", + "id": "02_calendar_display_02_research_pattern_4_tanstack_query_onrangeupdate_wiring", + "community": 98, + "norm_label": "pattern 4: tanstack query + onrangeupdate wiring" + }, + { + "label": "Pattern 5: Dev-Auth Bypass Middleware", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L464", + "_origin": "ast", + "id": "02_calendar_display_02_research_pattern_5_dev_auth_bypass_middleware", + "community": 98, + "norm_label": "pattern 5: dev-auth bypass middleware" + }, + { + "label": "Anti-Patterns to Avoid", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L498", + "_origin": "ast", + "id": "02_calendar_display_02_research_anti_patterns_to_avoid", + "community": 98, + "norm_label": "anti-patterns to avoid" + }, + { + "label": "Don't Hand-Roll", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L510", + "_origin": "ast", + "id": "02_calendar_display_02_research_don_t_hand_roll", + "community": 73, + "norm_label": "don't hand-roll" + }, + { + "label": "Common Pitfalls", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L525", + "_origin": "ast", + "id": "02_calendar_display_02_research_common_pitfalls", + "community": 107, + "norm_label": "common pitfalls" + }, + { + "label": "Pitfall 1: `firstDayOfWeek` Temporal Numbering Mismatch", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L527", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_1_firstdayofweek_temporal_numbering_mismatch", + "community": 107, + "norm_label": "pitfall 1: `firstdayofweek` temporal numbering mismatch" + }, + { + "label": "Pitfall 2: All-Day Events Shifting by One Day", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L537", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_2_all_day_events_shifting_by_one_day", + "community": 107, + "norm_label": "pitfall 2: all-day events shifting by one day" + }, + { + "label": "Pitfall 3: Missing VTIMEZONE Registration Causes DST-Shifted Occurrences", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L547", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_3_missing_vtimezone_registration_causes_dst_shifted_occurrences", + "community": 107, + "norm_label": "pitfall 3: missing vtimezone registration causes dst-shifted occurrences" + }, + { + "label": "Pitfall 4: Schedule-X ISO String Events Silently Fail", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L557", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_4_schedule_x_iso_string_events_silently_fail", + "community": 107, + "norm_label": "pitfall 4: schedule-x iso string events silently fail" + }, + { + "label": "Pitfall 5: Unwindowed `/api/events` Endpoint", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L567", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_5_unwindowed_api_events_endpoint", + "community": 107, + "norm_label": "pitfall 5: unwindowed `/api/events` endpoint" + }, + { + "label": "Pitfall 6: `@schedule-x/react` Version Behind `@schedule-x/calendar`", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L577", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_6_schedule_x_react_version_behind_schedule_x_calendar", + "community": 107, + "norm_label": "pitfall 6: `@schedule-x/react` version behind `@schedule-x/calendar`" + }, + { + "label": "Pitfall 7: Dev-Auth Bypass Active in Production", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L587", + "_origin": "ast", + "id": "02_calendar_display_02_research_pitfall_7_dev_auth_bypass_active_in_production", + "community": 107, + "norm_label": "pitfall 7: dev-auth bypass active in production" + }, + { + "label": "Code Examples", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L599", + "_origin": "ast", + "id": "02_calendar_display_02_research_code_examples", + "community": 147, + "norm_label": "code examples" + }, + { + "label": "VTIMEZONE Registration + ICAL.RecurExpansion (complete pattern)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L601", + "_origin": "ast", + "id": "02_calendar_display_02_research_vtimezone_registration_ical_recurexpansion_complete_pattern", + "community": 147, + "norm_label": "vtimezone registration + ical.recurexpansion (complete pattern)" + }, + { + "label": "All-Day Event: Server Format to Schedule-X PlainDate", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L666", + "_origin": "ast", + "id": "02_calendar_display_02_research_all_day_event_server_format_to_schedule_x_plaindate", + "community": 147, + "norm_label": "all-day event: server format to schedule-x plaindate" + }, + { + "label": "Schedule-X CSS Token Override Pattern", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L680", + "_origin": "ast", + "id": "02_calendar_display_02_research_schedule_x_css_token_override_pattern", + "community": 147, + "norm_label": "schedule-x css token override pattern" + }, + { + "label": "Backend: `/api/events` Evolution", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L708", + "_origin": "ast", + "id": "02_calendar_display_02_research_backend_api_events_evolution", + "community": 164, + "norm_label": "backend: `/api/events` evolution" + }, + { + "label": "Current state (Phase 1)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L710", + "_origin": "ast", + "id": "02_calendar_display_02_research_current_state_phase_1", + "community": 164, + "norm_label": "current state (phase 1)" + }, + { + "label": "Target state (Phase 2)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L720", + "_origin": "ast", + "id": "02_calendar_display_02_research_target_state_phase_2", + "community": 164, + "norm_label": "target state (phase 2)" + }, + { + "label": "State of the Art", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L741", + "_origin": "ast", + "id": "02_calendar_display_02_research_state_of_the_art", + "community": 73, + "norm_label": "state of the art" + }, + { + "label": "Validation Architecture", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L756", + "_origin": "ast", + "id": "02_calendar_display_02_research_validation_architecture", + "community": 125, + "norm_label": "validation architecture" + }, + { + "label": "Test Framework", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L758", + "_origin": "ast", + "id": "02_calendar_display_02_research_test_framework", + "community": 125, + "norm_label": "test framework" + }, + { + "label": "Phase Requirements \u2192 Test Map", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L767", + "_origin": "ast", + "id": "02_calendar_display_02_research_phase_requirements_test_map", + "community": 125, + "norm_label": "phase requirements \u2192 test map" + }, + { + "label": "Fixture ICS Files (test corpus)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L780", + "_origin": "ast", + "id": "02_calendar_display_02_research_fixture_ics_files_test_corpus", + "community": 125, + "norm_label": "fixture ics files (test corpus)" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L793", + "_origin": "ast", + "id": "02_calendar_display_02_research_sampling_rate", + "community": 125, + "norm_label": "sampling rate" + }, + { + "label": "Wave 0 Gaps", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L799", + "_origin": "ast", + "id": "02_calendar_display_02_research_wave_0_gaps", + "community": 125, + "norm_label": "wave 0 gaps" + }, + { + "label": "Security Domain", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L810", + "_origin": "ast", + "id": "02_calendar_display_02_research_security_domain", + "community": 163, + "norm_label": "security domain" + }, + { + "label": "Applicable ASVS Categories", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L814", + "_origin": "ast", + "id": "02_calendar_display_02_research_applicable_asvs_categories", + "community": 163, + "norm_label": "applicable asvs categories" + }, + { + "label": "Known Threat Patterns for This Phase", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L824", + "_origin": "ast", + "id": "02_calendar_display_02_research_known_threat_patterns_for_this_phase", + "community": 163, + "norm_label": "known threat patterns for this phase" + }, + { + "label": "Environment Availability", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L835", + "_origin": "ast", + "id": "02_calendar_display_02_research_environment_availability", + "community": 73, + "norm_label": "environment availability" + }, + { + "label": "Assumptions Log", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L849", + "_origin": "ast", + "id": "02_calendar_display_02_research_assumptions_log", + "community": 73, + "norm_label": "assumptions log" + }, + { + "label": "Open Questions", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L865", + "_origin": "ast", + "id": "02_calendar_display_02_research_open_questions", + "community": 73, + "norm_label": "open questions" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L884", + "_origin": "ast", + "id": "02_calendar_display_02_research_sources", + "community": 150, + "norm_label": "sources" + }, + { + "label": "Primary (HIGH confidence)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L886", + "_origin": "ast", + "id": "02_calendar_display_02_research_primary_high_confidence", + "community": 150, + "norm_label": "primary (high confidence)" + }, + { + "label": "Secondary (MEDIUM confidence)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L897", + "_origin": "ast", + "id": "02_calendar_display_02_research_secondary_medium_confidence", + "community": 150, + "norm_label": "secondary (medium confidence)" + }, + { + "label": "Tertiary (LOW confidence)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L902", + "_origin": "ast", + "id": "02_calendar_display_02_research_tertiary_low_confidence", + "community": 150, + "norm_label": "tertiary (low confidence)" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L907", + "_origin": "ast", + "id": "02_calendar_display_02_research_metadata", + "community": 73, + "norm_label": "metadata" + }, + { + "label": "02-UI-SPEC.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec", + "community": 0, + "norm_label": "02-ui-spec.md" + }, + { + "label": "Phase 2 \u2014 UI Design Contract", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L10", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "community": 0, + "norm_label": "phase 2 \u2014 ui design contract" + }, + { + "label": "Calendar Display", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L11", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_calendar_display", + "community": 0, + "norm_label": "calendar display" + }, + { + "label": "Design System", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L18", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_design_system", + "community": 0, + "norm_label": "design system" + }, + { + "label": "Token Layer", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L34", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_token_layer", + "community": 0, + "norm_label": "token layer" + }, + { + "label": "File location", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L39", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_file_location", + "community": 0, + "norm_label": "file location" + }, + { + "label": "Calendar config constant", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L50", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_calendar_config_constant", + "community": 0, + "norm_label": "calendar config constant" + }, + { + "label": "Color Tokens", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L61", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_color_tokens", + "community": 0, + "norm_label": "color tokens" + }, + { + "label": "Base palette", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L63", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_base_palette", + "community": 0, + "norm_label": "base palette" + }, + { + "label": "Semantic calendar colors", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L78", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_semantic_calendar_colors", + "community": 0, + "norm_label": "semantic calendar colors" + }, + { + "label": "Color derivation rule for event chips", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L98", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_color_derivation_rule_for_event_chips", + "community": 0, + "norm_label": "color derivation rule for event chips" + }, + { + "label": "60 / 30 / 10 split", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L110", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_60_30_10_split", + "community": 0, + "norm_label": "60 / 30 / 10 split" + }, + { + "label": "Destructive", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L121", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_destructive", + "community": 0, + "norm_label": "destructive" + }, + { + "label": "Spacing Scale", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L129", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_spacing_scale", + "community": 0, + "norm_label": "spacing scale" + }, + { + "label": "Typography", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L151", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_typography", + "community": 0, + "norm_label": "typography" + }, + { + "label": "Breakpoints", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L168", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_breakpoints", + "community": 0, + "norm_label": "breakpoints" + }, + { + "label": "Calendar Rendering Library", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L188", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_calendar_rendering_library", + "community": 0, + "norm_label": "calendar rendering library" + }, + { + "label": "Component Inventory", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L220", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_component_inventory", + "community": 0, + "norm_label": "component inventory" + }, + { + "label": "CalendarShell", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L222", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_calendarshell", + "community": 0, + "norm_label": "calendarshell" + }, + { + "label": "AppNav", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L229", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_appnav", + "community": 0, + "norm_label": "appnav" + }, + { + "label": "ViewToolbar", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L233", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_viewtoolbar", + "community": 0, + "norm_label": "viewtoolbar" + }, + { + "label": "ColorLegend", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L240", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_colorlegend", + "community": 0, + "norm_label": "colorlegend" + }, + { + "label": "EventChip (month grid)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L246", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_eventchip_month_grid", + "community": 0, + "norm_label": "eventchip (month grid)" + }, + { + "label": "EventBlock (week / day view)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L253", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_eventblock_week_day_view", + "community": 0, + "norm_label": "eventblock (week / day view)" + }, + { + "label": "AgendaRow", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L259", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_agendarow", + "community": 0, + "norm_label": "agendarow" + }, + { + "label": "EventDetailPopover (read-only in Phase 2; reused as edit surface in Phase 3)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L265", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_eventdetailpopover_read_only_in_phase_2_reused_as_edit_surface_in_phase_3", + "community": 0, + "norm_label": "eventdetailpopover (read-only in phase 2; reused as edit surface in phase 3)" + }, + { + "label": "SkeletonCalendar", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L277", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_skeletoncalendar", + "community": 0, + "norm_label": "skeletoncalendar" + }, + { + "label": "EmptyState (no events in range)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L284", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_emptystate_no_events_in_range", + "community": 0, + "norm_label": "emptystate (no events in range)" + }, + { + "label": "View Layout Specification", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L292", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_view_layout_specification", + "community": 0, + "norm_label": "view layout specification" + }, + { + "label": "Month view (default: tablet/desktop)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L294", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_month_view_default_tablet_desktop", + "community": 0, + "norm_label": "month view (default: tablet/desktop)" + }, + { + "label": "Week view", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L302", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_week_view", + "community": 0, + "norm_label": "week view" + }, + { + "label": "Day view", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L309", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_day_view", + "community": 0, + "norm_label": "day view" + }, + { + "label": "Agenda view (default: phone)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L313", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_agenda_view_default_phone", + "community": 0, + "norm_label": "agenda view (default: phone)" + }, + { + "label": "Copywriting Contract", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L321", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_copywriting_contract", + "community": 0, + "norm_label": "copywriting contract" + }, + { + "label": "Interaction Contract", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L342", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_interaction_contract", + "community": 0, + "norm_label": "interaction contract" + }, + { + "label": "Navigation", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L344", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_navigation", + "community": 0, + "norm_label": "navigation" + }, + { + "label": "Touch (iOS PWA)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L350", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_touch_ios_pwa", + "community": 0, + "norm_label": "touch (ios pwa)" + }, + { + "label": "Keyboard / accessibility", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L357", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_keyboard_accessibility", + "community": 0, + "norm_label": "keyboard / accessibility" + }, + { + "label": "Error / retry", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L365", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_error_retry", + "community": 0, + "norm_label": "error / retry" + }, + { + "label": "State Management Contract", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L371", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_state_management_contract", + "community": 0, + "norm_label": "state management contract" + }, + { + "label": "Registry Safety", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L386", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_registry_safety", + "community": 0, + "norm_label": "registry safety" + }, + { + "label": "Pre-Population Sources", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L398", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_pre_population_sources", + "community": 0, + "norm_label": "pre-population sources" + }, + { + "label": "Checker Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L420", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_checker_sign_off", + "community": 0, + "norm_label": "checker sign-off" + }, + { + "label": "Post-Verification Reviewer Notes (non-blocking \u2014 apply during implementation)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L431", + "_origin": "ast", + "id": "02_calendar_display_02_ui_spec_post_verification_reviewer_notes_non_blocking_apply_during_implementation", + "community": 0, + "norm_label": "post-verification reviewer notes (non-blocking \u2014 apply during implementation)" + }, + { + "label": "02-VALIDATION.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_validation", + "community": 108, + "norm_label": "02-validation.md" + }, + { + "label": "Phase 02 \u2014 Validation Strategy", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L10", + "_origin": "ast", + "id": "02_calendar_display_02_validation_phase_02_validation_strategy", + "community": 108, + "norm_label": "phase 02 \u2014 validation strategy" + }, + { + "label": "Test Infrastructure", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L16", + "_origin": "ast", + "id": "02_calendar_display_02_validation_test_infrastructure", + "community": 108, + "norm_label": "test infrastructure" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L33", + "_origin": "ast", + "id": "02_calendar_display_02_validation_sampling_rate", + "community": 108, + "norm_label": "sampling rate" + }, + { + "label": "Per-Task Verification Map", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L42", + "_origin": "ast", + "id": "02_calendar_display_02_validation_per_task_verification_map", + "community": 108, + "norm_label": "per-task verification map" + }, + { + "label": "Wave 0 Requirements", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L67", + "_origin": "ast", + "id": "02_calendar_display_02_validation_wave_0_requirements", + "community": 108, + "norm_label": "wave 0 requirements" + }, + { + "label": "Manual-Only Verifications", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L82", + "_origin": "ast", + "id": "02_calendar_display_02_validation_manual_only_verifications", + "community": 108, + "norm_label": "manual-only verifications" + }, + { + "label": "Validation Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L94", + "_origin": "ast", + "id": "02_calendar_display_02_validation_validation_sign_off", + "community": 108, + "norm_label": "validation sign-off" + }, + { + "label": "02-VERIFICATION.md", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L1", + "_origin": "ast", + "id": "02_calendar_display_02_verification", + "community": 30, + "norm_label": "02-verification.md" + }, + { + "label": "Phase 02: Calendar Display \u2014 Verification Report", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L23", + "_origin": "ast", + "id": "02_calendar_display_02_verification_phase_02_calendar_display_verification_report", + "community": 30, + "norm_label": "phase 02: calendar display \u2014 verification report" + }, + { + "label": "Goal Achievement", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L34", + "_origin": "ast", + "id": "02_calendar_display_02_verification_goal_achievement", + "community": 30, + "norm_label": "goal achievement" + }, + { + "label": "Observable Truths", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L36", + "_origin": "ast", + "id": "02_calendar_display_02_verification_observable_truths", + "community": 30, + "norm_label": "observable truths" + }, + { + "label": "Deferred Items", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L52", + "_origin": "ast", + "id": "02_calendar_display_02_verification_deferred_items", + "community": 30, + "norm_label": "deferred items" + }, + { + "label": "Required Artifacts", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L60", + "_origin": "ast", + "id": "02_calendar_display_02_verification_required_artifacts", + "community": 30, + "norm_label": "required artifacts" + }, + { + "label": "Key Link Verification", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L81", + "_origin": "ast", + "id": "02_calendar_display_02_verification_key_link_verification", + "community": 30, + "norm_label": "key link verification" + }, + { + "label": "Data-Flow Trace (Level 4)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L99", + "_origin": "ast", + "id": "02_calendar_display_02_verification_data_flow_trace_level_4", + "community": 30, + "norm_label": "data-flow trace (level 4)" + }, + { + "label": "Behavioral Spot-Checks", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L110", + "_origin": "ast", + "id": "02_calendar_display_02_verification_behavioral_spot_checks", + "community": 30, + "norm_label": "behavioral spot-checks" + }, + { + "label": "Probe Execution", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L132", + "_origin": "ast", + "id": "02_calendar_display_02_verification_probe_execution", + "community": 30, + "norm_label": "probe execution" + }, + { + "label": "Requirements Coverage", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L139", + "_origin": "ast", + "id": "02_calendar_display_02_verification_requirements_coverage", + "community": 30, + "norm_label": "requirements coverage" + }, + { + "label": "Anti-Patterns Found", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L155", + "_origin": "ast", + "id": "02_calendar_display_02_verification_anti_patterns_found", + "community": 30, + "norm_label": "anti-patterns found" + }, + { + "label": "Human Verification Required", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L178", + "_origin": "ast", + "id": "02_calendar_display_02_verification_human_verification_required", + "community": 30, + "norm_label": "human verification required" + }, + { + "label": "1. Color-coded event rendering", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L183", + "_origin": "ast", + "id": "02_calendar_display_02_verification_1_color_coded_event_rendering", + "community": 30, + "norm_label": "1. color-coded event rendering" + }, + { + "label": "2. All four views render events correctly", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L192", + "_origin": "ast", + "id": "02_calendar_display_02_verification_2_all_four_views_render_events_correctly", + "community": 30, + "norm_label": "2. all four views render events correctly" + }, + { + "label": "3. Recurring events \u2014 DST boundary (CAL-07)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L200", + "_origin": "ast", + "id": "02_calendar_display_02_verification_3_recurring_events_dst_boundary_cal_07", + "community": 30, + "norm_label": "3. recurring events \u2014 dst boundary (cal-07)" + }, + { + "label": "4. All-day events \u2014 no date shift (CAL-07)", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L208", + "_origin": "ast", + "id": "02_calendar_display_02_verification_4_all_day_events_no_date_shift_cal_07", + "community": 30, + "norm_label": "4. all-day events \u2014 no date shift (cal-07)" + }, + { + "label": "Gaps Summary", + "file_type": "document", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L217", + "_origin": "ast", + "id": "02_calendar_display_02_verification_gaps_summary", + "community": 30, + "norm_label": "gaps summary" + }, + { + "label": "03-01-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_plan", + "community": 165, + "norm_label": "03-01-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-PLAN.md", + "source_location": "L215", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_plan_trust_boundaries", + "community": 165, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-PLAN.md", + "source_location": "L222", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_plan_stride_threat_register", + "community": 165, + "norm_label": "stride threat register" + }, + { + "label": "03-01-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary", + "community": 45, + "norm_label": "03-01-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_dependency_graph", + "community": 45, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L20", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_tech_tracking", + "community": 45, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L50", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_metrics", + "community": 45, + "norm_label": "metrics" + }, + { + "label": "Phase 03 Plan 01: Foundation Scaffold Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "community": 45, + "norm_label": "phase 03 plan 01: foundation scaffold summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_performance", + "community": 45, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_accomplishments", + "community": 45, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L74", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_task_commits", + "community": 45, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L82", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_files_created_modified", + "community": 45, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L93", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_decisions_made", + "community": 45, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L97", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_deviations_from_plan", + "community": 45, + "norm_label": "deviations from plan" + }, + { + "label": "Task 5: drizzle-kit push replaced by hand-applied additive DDL", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L99", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_task_5_drizzle_kit_push_replaced_by_hand_applied_additive_ddl", + "community": 45, + "norm_label": "task 5: drizzle-kit push replaced by hand-applied additive ddl" + }, + { + "label": "Issues Encountered", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L115", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_issues_encountered", + "community": 45, + "norm_label": "issues encountered" + }, + { + "label": "User Setup Required", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L119", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_user_setup_required", + "community": 45, + "norm_label": "user setup required" + }, + { + "label": "Next Phase Readiness", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L123", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_01_summary_next_phase_readiness", + "community": 45, + "norm_label": "next phase readiness" + }, + { + "label": "03-02-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_plan", + "community": 166, + "norm_label": "03-02-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-PLAN.md", + "source_location": "L132", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_plan_trust_boundaries", + "community": 166, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-PLAN.md", + "source_location": "L138", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_plan_stride_threat_register", + "community": 166, + "norm_label": "stride threat register" + }, + { + "label": "03-02-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary", + "community": 46, + "norm_label": "03-02-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_dependency_graph", + "community": 46, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L20", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_tech_tracking", + "community": 46, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L39", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_metrics", + "community": 46, + "norm_label": "metrics" + }, + { + "label": "Phase 03 Plan 02: Broker Primitives \u2014 vevent.ts + write.ts Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "community": 46, + "norm_label": "phase 03 plan 02: broker primitives \u2014 vevent.ts + write.ts summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L48", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_performance", + "community": 46, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L56", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_accomplishments", + "community": 46, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L65", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_task_commits", + "community": 46, + "norm_label": "task commits" + }, + { + "label": "Files Created", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L70", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_files_created", + "community": 46, + "norm_label": "files created" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L75", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_decisions_made", + "community": 46, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L81", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_deviations_from_plan", + "community": 46, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L83", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_auto_fixed_issues", + "community": 46, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L99", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_known_stubs", + "community": 46, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L103", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_threat_surface_scan", + "community": 46, + "norm_label": "threat surface scan" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L107", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_02_summary_self_check_passed", + "community": 46, + "norm_label": "self-check: passed" + }, + { + "label": "03-03-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_plan", + "community": 167, + "norm_label": "03-03-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-PLAN.md", + "source_location": "L158", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_plan_trust_boundaries", + "community": 167, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-PLAN.md", + "source_location": "L165", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_plan_stride_threat_register", + "community": 167, + "norm_label": "stride threat register" + }, + { + "label": "03-03-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary", + "community": 47, + "norm_label": "03-03-summary.md" + }, + { + "label": "Phase 03 Plan 03: Write API Surface Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "community": 47, + "norm_label": "phase 03 plan 03: write api surface summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L63", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_performance", + "community": 47, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L71", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_accomplishments", + "community": 47, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L79", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_task_commits", + "community": 47, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L84", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_files_created_modified", + "community": 47, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L89", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_decisions_made", + "community": 47, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L96", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_deviations_from_plan", + "community": 47, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L98", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_auto_fixed_issues", + "community": 47, + "norm_label": "auto-fixed issues" + }, + { + "label": "Issues Encountered", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L113", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_issues_encountered", + "community": 47, + "norm_label": "issues encountered" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L117", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_known_stubs", + "community": 47, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L121", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_threat_flags", + "community": 47, + "norm_label": "threat flags" + }, + { + "label": "Self-Check", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L125", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_self_check", + "community": 47, + "norm_label": "self-check" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L134", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_self_check_passed", + "community": 47, + "norm_label": "self-check: passed" + }, + { + "label": "Next Phase Readiness", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L136", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_03_summary_next_phase_readiness", + "community": 47, + "norm_label": "next phase readiness" + }, + { + "label": "03-04-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_plan", + "community": 168, + "norm_label": "03-04-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-PLAN.md", + "source_location": "L135", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_plan_trust_boundaries", + "community": 168, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-PLAN.md", + "source_location": "L142", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_plan_stride_threat_register", + "community": 168, + "norm_label": "stride threat register" + }, + { + "label": "03-04-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary", + "community": 41, + "norm_label": "03-04-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_dependency_graph", + "community": 41, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L25", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_tech_tracking", + "community": 41, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L50", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_metrics", + "community": 41, + "norm_label": "metrics" + }, + { + "label": "Phase 03 Plan 04: Outbox Worker Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "community": 41, + "norm_label": "phase 03 plan 04: outbox worker summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_performance", + "community": 41, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_accomplishments", + "community": 41, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L77", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_task_commits", + "community": 41, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L82", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_files_created_modified", + "community": 41, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L88", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_decisions_made", + "community": 41, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L96", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_deviations_from_plan", + "community": 41, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L98", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_auto_fixed_issues", + "community": 41, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L114", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_known_stubs", + "community": 41, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L118", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_threat_surface_scan", + "community": 41, + "norm_label": "threat surface scan" + }, + { + "label": "Self-Check", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L126", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_self_check", + "community": 41, + "norm_label": "self-check" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L138", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_04_summary_self_check_passed", + "community": 41, + "norm_label": "self-check: passed" + }, + { + "label": "03-05-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_plan", + "community": 169, + "norm_label": "03-05-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-PLAN.md", + "source_location": "L161", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_plan_trust_boundaries", + "community": 169, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-PLAN.md", + "source_location": "L167", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_plan_stride_threat_register", + "community": 169, + "norm_label": "stride threat register" + }, + { + "label": "03-05-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary", + "community": 74, + "norm_label": "03-05-summary.md" + }, + { + "label": "Phase 03 Plan 05: Event Write UI (EventForm + Client Calls) Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L36", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "community": 74, + "norm_label": "phase 03 plan 05: event write ui (eventform + client calls) summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L40", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_what_was_built", + "community": 74, + "norm_label": "what was built" + }, + { + "label": "Task 1: Typed write client calls + Zustand form-state keys", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L42", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_task_1_typed_write_client_calls_zustand_form_state_keys", + "community": 74, + "norm_label": "task 1: typed write client calls + zustand form-state keys" + }, + { + "label": "Task 2: EventForm modal", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_task_2_eventform_modal", + "community": 74, + "norm_label": "task 2: eventform modal" + }, + { + "label": "Task 3: Mount EventForm + \"New Event\" FAB/toolbar in CalendarShell", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L77", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_task_3_mount_eventform_new_event_fab_toolbar_in_calendarshell", + "community": 74, + "norm_label": "task 3: mount eventform + \"new event\" fab/toolbar in calendarshell" + }, + { + "label": "Test Coverage", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L86", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_test_coverage", + "community": 74, + "norm_label": "test coverage" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L93", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_deviations_from_plan", + "community": 74, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L95", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_auto_fixed_issues", + "community": 74, + "norm_label": "auto-fixed issues" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L106", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_threat_surface_scan", + "community": 74, + "norm_label": "threat surface scan" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L115", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_known_stubs", + "community": 74, + "norm_label": "known stubs" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L119", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_05_summary_self_check_passed", + "community": 74, + "norm_label": "self-check: passed" + }, + { + "label": "03-06-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_plan", + "community": 170, + "norm_label": "03-06-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-PLAN.md", + "source_location": "L157", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_plan_trust_boundaries", + "community": 170, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-PLAN.md", + "source_location": "L163", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_plan_stride_threat_register", + "community": 170, + "norm_label": "stride threat register" + }, + { + "label": "03-06-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary", + "community": 67, + "norm_label": "03-06-summary.md" + }, + { + "label": "Phase 03 Plan 06: Edit/Delete + SyncStateToast Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "community": 67, + "norm_label": "phase 03 plan 06: edit/delete + syncstatetoast summary" + }, + { + "label": "Tasks Completed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L48", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_tasks_completed", + "community": 67, + "norm_label": "tasks completed" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L56", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_what_was_built", + "community": 67, + "norm_label": "what was built" + }, + { + "label": "Task 1 \u2014 Client calls + Zustand keys (RED: `8357cf9`, GREEN: `8aeacc8`)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L58", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_task_1_client_calls_zustand_keys_red_8357cf9_green_8aeacc8", + "community": 67, + "norm_label": "task 1 \u2014 client calls + zustand keys (red: `8357cf9`, green: `8aeacc8`)" + }, + { + "label": "Task 2 \u2014 SyncStateToast (RED: `6874e1a`, GREEN: `aa7c4c3`)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L72", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_task_2_syncstatetoast_red_6874e1a_green_aa7c4c3", + "community": 67, + "norm_label": "task 2 \u2014 syncstatetoast (red: `6874e1a`, green: `aa7c4c3`)" + }, + { + "label": "Task 3 \u2014 EventDetailPopover footer + DeleteConfirmationDialog (RED: `2fbeffe`, GREEN: `40322e1`)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L87", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_task_3_eventdetailpopover_footer_deleteconfirmationdialog_red_2fbeffe_green_40322e1", + "community": 67, + "norm_label": "task 3 \u2014 eventdetailpopover footer + deleteconfirmationdialog (red: `2fbeffe`, green: `40322e1`)" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L105", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_verification", + "community": 67, + "norm_label": "verification" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L121", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_deviations_from_plan", + "community": 67, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L123", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_auto_fixed_issues", + "community": 67, + "norm_label": "auto-fixed issues" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L156", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_known_stubs", + "community": 67, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L160", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_threat_flags", + "community": 67, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L167", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_06_summary_self_check_passed", + "community": 67, + "norm_label": "self-check: passed" + }, + { + "label": "03-07-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_plan", + "community": 171, + "norm_label": "03-07-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-PLAN.md", + "source_location": "L131", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_plan_trust_boundaries", + "community": 171, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-PLAN.md", + "source_location": "L137", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_plan_stride_threat_register", + "community": 171, + "norm_label": "stride threat register" + }, + { + "label": "03-07-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary", + "community": 37, + "norm_label": "03-07-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_dependency_graph", + "community": 37, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L21", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_tech_tracking", + "community": 37, + "norm_label": "tech tracking" + }, + { + "label": "Metrics", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L46", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_metrics", + "community": 37, + "norm_label": "metrics" + }, + { + "label": "Phase 03 Plan 07: PWA Install \u2014 VitePWA Manifest + InstallPrompt Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L51", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "community": 37, + "norm_label": "phase 03 plan 07: pwa install \u2014 vitepwa manifest + installprompt summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_performance", + "community": 37, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L63", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_accomplishments", + "community": 37, + "norm_label": "accomplishments" + }, + { + "label": "Task 1: VitePWA manifest + service worker + iOS head/icons", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L65", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_task_1_vitepwa_manifest_service_worker_ios_head_icons", + "community": 37, + "norm_label": "task 1: vitepwa manifest + service worker + ios head/icons" + }, + { + "label": "Task 2: InstallPrompt (TDD GREEN \u2014 RED scaffold from Plan 01)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L76", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_task_2_installprompt_tdd_green_red_scaffold_from_plan_01", + "community": 37, + "norm_label": "task 2: installprompt (tdd green \u2014 red scaffold from plan 01)" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L88", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_task_commits", + "community": 37, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L93", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_files_created_modified", + "community": 37, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L103", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_decisions_made", + "community": 37, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L108", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_deviations_from_plan", + "community": 37, + "norm_label": "deviations from plan" + }, + { + "label": "TDD Gate Compliance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L112", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_tdd_gate_compliance", + "community": 37, + "norm_label": "tdd gate compliance" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L119", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_known_stubs", + "community": 37, + "norm_label": "known stubs" + }, + { + "label": "Threat Surface Scan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L124", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_threat_surface_scan", + "community": 37, + "norm_label": "threat surface scan" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L131", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_07_summary_self_check_passed", + "community": 37, + "norm_label": "self-check: passed" + }, + { + "label": "03-08-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_plan", + "community": 172, + "norm_label": "03-08-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-PLAN.md", + "source_location": "L138", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_plan_trust_boundaries", + "community": 172, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-PLAN.md", + "source_location": "L144", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_plan_stride_threat_register", + "community": 172, + "norm_label": "stride threat register" + }, + { + "label": "03-08-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary", + "community": 99, + "norm_label": "03-08-summary.md" + }, + { + "label": "Dependency graph", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L7", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_dependency_graph", + "community": 99, + "norm_label": "dependency graph" + }, + { + "label": "Tech tracking", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L26", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_tech_tracking", + "community": 99, + "norm_label": "tech tracking" + }, + { + "label": "Phase 03 Plan 08: Gate 2 Live Verification \u2014 Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L40", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "community": 99, + "norm_label": "phase 03 plan 08: gate 2 live verification \u2014 summary" + }, + { + "label": "Outcome", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_outcome", + "community": 99, + "norm_label": "outcome" + }, + { + "label": "Blocker bugs found + fixed live (all committed + deployed)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L53", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_blocker_bugs_found_fixed_live_all_committed_deployed", + "community": 99, + "norm_label": "blocker bugs found + fixed live (all committed + deployed)" + }, + { + "label": "Deferred / carried forward", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L63", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_deferred_carried_forward", + "community": 99, + "norm_label": "deferred / carried forward" + }, + { + "label": "Verification method", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L69", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_verification_method", + "community": 99, + "norm_label": "verification method" + }, + { + "label": "Self-Check", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L73", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_08_summary_self_check", + "community": 99, + "norm_label": "self-check" + }, + { + "label": "03-09-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_plan", + "community": 196, + "norm_label": "03-09-plan.md" + }, + { + "label": "03-09-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary", + "community": 75, + "norm_label": "03-09-summary.md" + }, + { + "label": "Phase 03 Plan 09: Route Schema + OIDC Resolution Fix Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L35", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "community": 75, + "norm_label": "phase 03 plan 09: route schema + oidc resolution fix summary" + }, + { + "label": "Tasks Completed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L39", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_tasks_completed", + "community": 75, + "norm_label": "tasks completed" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L48", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_verification", + "community": 75, + "norm_label": "verification" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L56", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_decisions_made", + "community": 75, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_deviations_from_plan", + "community": 75, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L63", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_auto_fixed_issues", + "community": 75, + "norm_label": "auto-fixed issues" + }, + { + "label": "Test Infrastructure Deviation (Rule 3)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_test_infrastructure_deviation_rule_3", + "community": 75, + "norm_label": "test infrastructure deviation (rule 3)" + }, + { + "label": "TDD Gate Compliance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L71", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_tdd_gate_compliance", + "community": 75, + "norm_label": "tdd gate compliance" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L77", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_known_stubs", + "community": 75, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L81", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_threat_flags", + "community": 75, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L85", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_09_summary_self_check_passed", + "community": 75, + "norm_label": "self-check: passed" + }, + { + "label": "03-10-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_plan", + "community": 197, + "norm_label": "03-10-plan.md" + }, + { + "label": "03-10-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary", + "community": 68, + "norm_label": "03-10-summary.md" + }, + { + "label": "Phase 03 Plan 10: Outbox Worker ICS Builder Wiring Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "community": 68, + "norm_label": "phase 03 plan 10: outbox worker ics builder wiring summary" + }, + { + "label": "Tasks Completed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L48", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_tasks_completed", + "community": 68, + "norm_label": "tasks completed" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L57", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_verification", + "community": 68, + "norm_label": "verification" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_decisions_made", + "community": 68, + "norm_label": "decisions made" + }, + { + "label": "TDD Gate Compliance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L73", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_tdd_gate_compliance", + "community": 68, + "norm_label": "tdd gate compliance" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L83", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_deviations_from_plan", + "community": 68, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L85", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_auto_fixed_issues", + "community": 68, + "norm_label": "auto-fixed issues" + }, + { + "label": "Infrastructure", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L89", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_infrastructure", + "community": 68, + "norm_label": "infrastructure" + }, + { + "label": "Issues Closed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L95", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_issues_closed", + "community": 68, + "norm_label": "issues closed" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L106", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_known_stubs", + "community": 68, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L110", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_threat_flags", + "community": 68, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L114", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_10_summary_self_check_passed", + "community": 68, + "norm_label": "self-check: passed" + }, + { + "label": "03-11-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_plan", + "community": 198, + "norm_label": "03-11-plan.md" + }, + { + "label": "03-11-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary", + "community": 48, + "norm_label": "03-11-summary.md" + }, + { + "label": "Phase 03 Plan 11: Outbox Durability and Etag Fix Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L40", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "community": 48, + "norm_label": "phase 03 plan 11: outbox durability and etag fix summary" + }, + { + "label": "Performance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_performance", + "community": 48, + "norm_label": "performance" + }, + { + "label": "Accomplishments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L52", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_accomplishments", + "community": 48, + "norm_label": "accomplishments" + }, + { + "label": "Task Commits", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L58", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_task_commits", + "community": 48, + "norm_label": "task commits" + }, + { + "label": "Files Created/Modified", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_files_created_modified", + "community": 48, + "norm_label": "files created/modified" + }, + { + "label": "Decisions Made", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L72", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_decisions_made", + "community": 48, + "norm_label": "decisions made" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L79", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_deviations_from_plan", + "community": 48, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L81", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_auto_fixed_issues", + "community": 48, + "norm_label": "auto-fixed issues" + }, + { + "label": "Issues Encountered", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L95", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_issues_encountered", + "community": 48, + "norm_label": "issues encountered" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L99", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_verification", + "community": 48, + "norm_label": "verification" + }, + { + "label": "Issues Closed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L107", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_issues_closed", + "community": 48, + "norm_label": "issues closed" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L115", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_known_stubs", + "community": 48, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L119", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_threat_flags", + "community": 48, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L123", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_11_summary_self_check_passed", + "community": 48, + "norm_label": "self-check: passed" + }, + { + "label": "03-12-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_plan", + "community": 199, + "norm_label": "03-12-plan.md" + }, + { + "label": "03-12-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary", + "community": 49, + "norm_label": "03-12-summary.md" + }, + { + "label": "Phase 03 Plan 12: EventForm Gap Closure \u2014 Edit Mode, Focus Trap, PWA Assets Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L36", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "community": 49, + "norm_label": "phase 03 plan 12: eventform gap closure \u2014 edit mode, focus trap, pwa assets summary" + }, + { + "label": "Tasks Completed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L40", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_tasks_completed", + "community": 49, + "norm_label": "tasks completed" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L49", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "community": 49, + "norm_label": "what was built" + }, + { + "label": "WR-03: Edit form re-populates when occurrence arrives after open", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L51", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_wr_03_edit_form_re_populates_when_occurrence_arrives_after_open", + "community": 49, + "norm_label": "wr-03: edit form re-populates when occurrence arrives after open" + }, + { + "label": "WR-05: Zone-consistent parseDateTime", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_wr_05_zone_consistent_parsedatetime", + "community": 49, + "norm_label": "wr-05: zone-consistent parsedatetime" + }, + { + "label": "IN-03: todayIso exported from calendarStore", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_in_03_todayiso_exported_from_calendarstore", + "community": 49, + "norm_label": "in-03: todayiso exported from calendarstore" + }, + { + "label": "WR-07: Real focus trap on EventForm dialog", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L71", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_wr_07_real_focus_trap_on_eventform_dialog", + "community": 49, + "norm_label": "wr-07: real focus trap on eventform dialog" + }, + { + "label": "PWA-01/PWA-02: Install assets confirmed present (IN-04)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L81", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_pwa_01_pwa_02_install_assets_confirmed_present_in_04", + "community": 49, + "norm_label": "pwa-01/pwa-02: install assets confirmed present (in-04)" + }, + { + "label": "TDD Gate Compliance", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L90", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_tdd_gate_compliance", + "community": 49, + "norm_label": "tdd gate compliance" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L99", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_deviations_from_plan", + "community": 49, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L101", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_auto_fixed_issues", + "community": 49, + "norm_label": "auto-fixed issues" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L115", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_verification", + "community": 49, + "norm_label": "verification" + }, + { + "label": "Issues Closed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L127", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_issues_closed", + "community": 49, + "norm_label": "issues closed" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L138", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_12_summary_self_check_passed", + "community": 49, + "norm_label": "self-check: passed" + }, + { + "label": "03-CONTEXT.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context", + "community": 31, + "norm_label": "03-context.md" + }, + { + "label": "Phase 3: Event Write-Back + PWA Install - Context", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "community": 31, + "norm_label": "phase 3: event write-back + pwa install - context" + }, + { + "label": "Phase Boundary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L7", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_phase_boundary", + "community": 31, + "norm_label": "phase boundary" + }, + { + "label": "Implementation Decisions", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L28", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_implementation_decisions", + "community": 31, + "norm_label": "implementation decisions" + }, + { + "label": "Target-calendar selection (write target)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L30", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_target_calendar_selection_write_target", + "community": 31, + "norm_label": "target-calendar selection (write target)" + }, + { + "label": "Write feedback & sync (the load-bearing architecture decision)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L45", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_write_feedback_sync_the_load_bearing_architecture_decision", + "community": 31, + "norm_label": "write feedback & sync (the load-bearing architecture decision)" + }, + { + "label": "Carried forward \u2014 locked, NOT re-discussed", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L69", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_carried_forward_locked_not_re_discussed", + "community": 31, + "norm_label": "carried forward \u2014 locked, not re-discussed" + }, + { + "label": "Claude's Discretion (researcher / planner decide)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L80", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_claude_s_discretion_researcher_planner_decide", + "community": 31, + "norm_label": "claude's discretion (researcher / planner decide)" + }, + { + "label": "Canonical References", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L100", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_canonical_references", + "community": 31, + "norm_label": "canonical references" + }, + { + "label": "Project decisions & scope", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L104", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_project_decisions_scope", + "community": 31, + "norm_label": "project decisions & scope" + }, + { + "label": "Phase 1/2 foundation this builds on", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L114", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_phase_1_2_foundation_this_builds_on", + "community": 31, + "norm_label": "phase 1/2 foundation this builds on" + }, + { + "label": "Code this phase extends", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L122", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_code_this_phase_extends", + "community": 31, + "norm_label": "code this phase extends" + }, + { + "label": "Existing Code Insights", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L142", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_existing_code_insights", + "community": 31, + "norm_label": "existing code insights" + }, + { + "label": "Reusable Assets", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L144", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_reusable_assets", + "community": 31, + "norm_label": "reusable assets" + }, + { + "label": "Established Patterns", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L153", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_established_patterns", + "community": 31, + "norm_label": "established patterns" + }, + { + "label": "Integration Points", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L161", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_integration_points", + "community": 31, + "norm_label": "integration points" + }, + { + "label": "Specific Ideas", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L175", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_specific_ideas", + "community": 31, + "norm_label": "specific ideas" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L188", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_context_deferred_ideas", + "community": 31, + "norm_label": "deferred ideas" + }, + { + "label": "03-DISCUSSION-LOG.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log", + "community": 50, + "norm_label": "03-discussion-log.md" + }, + { + "label": "Phase 3: Event Write-Back + PWA Install - Discussion Log", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_phase_3_event_write_back_pwa_install_discussion_log", + "community": 50, + "norm_label": "phase 3: event write-back + pwa install - discussion log" + }, + { + "label": "Target calendar pick", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L14", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_target_calendar_pick", + "community": 50, + "norm_label": "target calendar pick" + }, + { + "label": "Default target calendar for a new event", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L16", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_default_target_calendar_for_a_new_event", + "community": 50, + "norm_label": "default target calendar for a new event" + }, + { + "label": "Calendar selector visibility", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L26", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_calendar_selector_visibility", + "community": 50, + "norm_label": "calendar selector visibility" + }, + { + "label": "Move event between calendars on edit", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L34", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_move_event_between_calendars_on_edit", + "community": 50, + "norm_label": "move event between calendars on edit" + }, + { + "label": "Writable calendar set", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L43", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_writable_calendar_set", + "community": 50, + "norm_label": "writable calendar set" + }, + { + "label": "Write feedback & sync", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L53", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "community": 50, + "norm_label": "write feedback & sync" + }, + { + "label": "How the member sees their own change after save (poll-based cache)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_how_the_member_sees_their_own_change_after_save_poll_based_cache", + "community": 50, + "norm_label": "how the member sees their own change after save (poll-based cache)" + }, + { + "label": "Behavior when the CalDAV write fails", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L64", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_behavior_when_the_caldav_write_fails", + "community": 50, + "norm_label": "behavior when the caldav write fails" + }, + { + "label": "Edit-conflict (etag mismatch / 412) handling", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L73", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_edit_conflict_etag_mismatch_412_handling", + "community": 50, + "norm_label": "edit-conflict (etag mismatch / 412) handling" + }, + { + "label": "Pending-write queue location", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L81", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_pending_write_queue_location", + "community": 50, + "norm_label": "pending-write queue location" + }, + { + "label": "Transient vs hard-failure classification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L89", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_transient_vs_hard_failure_classification", + "community": 50, + "norm_label": "transient vs hard-failure classification" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L99", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_claude_s_discretion", + "community": 50, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L107", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_discussion_log_deferred_ideas", + "community": 50, + "norm_label": "deferred ideas" + }, + { + "label": "03-GATE2-RESULTS.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results", + "community": 42, + "norm_label": "03-gate2-results.md" + }, + { + "label": "Phase 3 Gate 2 \u2014 Live Verification Results", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "community": 42, + "norm_label": "phase 3 gate 2 \u2014 live verification results" + }, + { + "label": "Header", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L3", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_header", + "community": 42, + "norm_label": "header" + }, + { + "label": "Operator Setup Required Before Gate 2", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L24", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "community": 42, + "norm_label": "operator setup required before gate 2" + }, + { + "label": "1. Register FamilySync as an Authelia OIDC confidential client", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L29", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_1_register_familysync_as_an_authelia_oidc_confidential_client", + "community": 42, + "norm_label": "1. register familysync as an authelia oidc confidential client" + }, + { + "label": "2. Set OIDC_AUTH_EXTERNAL_URL in the app's .env", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_2_set_oidc_auth_external_url_in_the_app_s_env", + "community": 42, + "norm_label": "2. set oidc_auth_external_url in the app's .env" + }, + { + "label": "3. Expose via Pangolin / Newt (Mode A local rig)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L82", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_3_expose_via_pangolin_newt_mode_a_local_rig", + "community": 42, + "norm_label": "3. expose via pangolin / newt (mode a local rig)" + }, + { + "label": "4. Apply database schema (first deploy only)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L98", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_4_apply_database_schema_first_deploy_only", + "community": 42, + "norm_label": "4. apply database schema (first deploy only)" + }, + { + "label": "5. Bring up the app and confirm /health over the tunnel", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L107", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_5_bring_up_the_app_and_confirm_health_over_the_tunnel", + "community": 42, + "norm_label": "5. bring up the app and confirm /health over the tunnel" + }, + { + "label": "Gate 2 Checklist", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L121", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_gate_2_checklist", + "community": 42, + "norm_label": "gate 2 checklist" + }, + { + "label": "Part A \u2014 Auth, Session, Colors (Task 2)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L126", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_part_a_auth_session_colors_task_2", + "community": 42, + "norm_label": "part a \u2014 auth, session, colors (task 2)" + }, + { + "label": "Part B \u2014 iOS PWA Standalone Login (Task 2) \u2014 LOAD-BEARING CHECK", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L134", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_part_b_ios_pwa_standalone_login_task_2_load_bearing_check", + "community": 42, + "norm_label": "part b \u2014 ios pwa standalone login (task 2) \u2014 load-bearing check" + }, + { + "label": "Part C \u2014 SSE Smoke Test (Gate before Phase 4)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L152", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_part_c_sse_smoke_test_gate_before_phase_4", + "community": 42, + "norm_label": "part c \u2014 sse smoke test (gate before phase 4)" + }, + { + "label": "Part D \u2014 Create / Edit / Delete Fastmail Round-trips (Task 3)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L165", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_part_d_create_edit_delete_fastmail_round_trips_task_3", + "community": 42, + "norm_label": "part d \u2014 create / edit / delete fastmail round-trips (task 3)" + }, + { + "label": "/health Tunnel Verification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L178", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_health_tunnel_verification", + "community": 42, + "norm_label": "/health tunnel verification" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L190", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_gate2_results_summary", + "community": 42, + "norm_label": "summary" + }, + { + "label": "03-PATTERNS.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns", + "community": 13, + "norm_label": "03-patterns.md" + }, + { + "label": "Phase 3: Event Write-Back + PWA Install - Pattern Map", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "community": 13, + "norm_label": "phase 3: event write-back + pwa install - pattern map" + }, + { + "label": "File Classification", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L9", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_file_classification", + "community": 13, + "norm_label": "file classification" + }, + { + "label": "Pattern Assignments", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L28", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "community": 13, + "norm_label": "pattern assignments" + }, + { + "label": "`apps/api/src/db/schema.ts` \u2014 add `calendarOutbox` table + `objectUrl` column on `calendarEvents`", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L30", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_api_src_db_schema_ts_add_calendaroutbox_table_objecturl_column_on_calendarevents", + "community": 13, + "norm_label": "`apps/api/src/db/schema.ts` \u2014 add `calendaroutbox` table + `objecturl` column on `calendarevents`" + }, + { + "label": "`apps/api/src/broker/write.ts` \u2014 new file, tsdav PUT/DELETE wrapper", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L85", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_api_src_broker_write_ts_new_file_tsdav_put_delete_wrapper", + "community": 13, + "norm_label": "`apps/api/src/broker/write.ts` \u2014 new file, tsdav put/delete wrapper" + }, + { + "label": "`apps/api/src/broker/vevent.ts` \u2014 new file, ical.js VEVENT builder", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L115", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_api_src_broker_vevent_ts_new_file_ical_js_vevent_builder", + "community": 13, + "norm_label": "`apps/api/src/broker/vevent.ts` \u2014 new file, ical.js vevent builder" + }, + { + "label": "`apps/api/src/broker/outboxWorker.ts` \u2014 new file, outbox drain loop", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L152", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_api_src_broker_outboxworker_ts_new_file_outbox_drain_loop", + "community": 13, + "norm_label": "`apps/api/src/broker/outboxworker.ts` \u2014 new file, outbox drain loop" + }, + { + "label": "`apps/api/src/routes/events.ts` \u2014 extend with write endpoints + sync-status", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L228", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_api_src_routes_events_ts_extend_with_write_endpoints_sync_status", + "community": 13, + "norm_label": "`apps/api/src/routes/events.ts` \u2014 extend with write endpoints + sync-status" + }, + { + "label": "`apps/pwa/src/components/EventDetailPopover.tsx` \u2014 add edit/delete to reserved footer", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L289", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_components_eventdetailpopover_tsx_add_edit_delete_to_reserved_footer", + "community": 13, + "norm_label": "`apps/pwa/src/components/eventdetailpopover.tsx` \u2014 add edit/delete to reserved footer" + }, + { + "label": "`apps/pwa/src/components/EventForm.tsx` \u2014 new file, create/edit form", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L352", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_components_eventform_tsx_new_file_create_edit_form", + "community": 13, + "norm_label": "`apps/pwa/src/components/eventform.tsx` \u2014 new file, create/edit form" + }, + { + "label": "`apps/pwa/src/components/InstallPrompt.tsx` \u2014 new file, iOS/Android install", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L402", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_components_installprompt_tsx_new_file_ios_android_install", + "community": 13, + "norm_label": "`apps/pwa/src/components/installprompt.tsx` \u2014 new file, ios/android install" + }, + { + "label": "`apps/pwa/src/api/client.ts` \u2014 add write calls + sync-status poll", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L416", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_api_client_ts_add_write_calls_sync_status_poll", + "community": 13, + "norm_label": "`apps/pwa/src/api/client.ts` \u2014 add write calls + sync-status poll" + }, + { + "label": "`apps/pwa/vite.config.ts` \u2014 add VitePWA plugin", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L450", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_apps_pwa_vite_config_ts_add_vitepwa_plugin", + "community": 13, + "norm_label": "`apps/pwa/vite.config.ts` \u2014 add vitepwa plugin" + }, + { + "label": "Shared Patterns", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L474", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "community": 13, + "norm_label": "shared patterns" + }, + { + "label": "Auth guard in write route handlers", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L476", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_auth_guard_in_write_route_handlers", + "community": 13, + "norm_label": "auth guard in write route handlers" + }, + { + "label": "Error handling in route handlers", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L491", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_error_handling_in_route_handlers", + "community": 13, + "norm_label": "error handling in route handlers" + }, + { + "label": "ESM import extension", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L502", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_esm_import_extension", + "community": 13, + "norm_label": "esm import extension" + }, + { + "label": "Drizzle DB mock in tests", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L508", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_drizzle_db_mock_in_tests", + "community": 13, + "norm_label": "drizzle db mock in tests" + }, + { + "label": "OIDC mock in tests", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L522", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_oidc_mock_in_tests", + "community": 13, + "norm_label": "oidc mock in tests" + }, + { + "label": "TanStack Query integration in React components", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L533", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_tanstack_query_integration_in_react_components", + "community": 13, + "norm_label": "tanstack query integration in react components" + }, + { + "label": "Zustand UI state (not server state)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L544", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_zustand_ui_state_not_server_state", + "community": 13, + "norm_label": "zustand ui state (not server state)" + }, + { + "label": "No Analog Found", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L554", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_no_analog_found", + "community": 13, + "norm_label": "no analog found" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L562", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_patterns_metadata", + "community": 13, + "norm_label": "metadata" + }, + { + "label": "03-RESEARCH.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research", + "community": 24, + "norm_label": "03-research.md" + }, + { + "label": "Phase 3: Event Write-Back + PWA Install \u2014 Research", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "community": 24, + "norm_label": "phase 3: event write-back + pwa install \u2014 research" + }, + { + "label": "User Constraints (from CONTEXT.md)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L10", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_user_constraints_from_context_md", + "community": 152, + "norm_label": "user constraints (from context.md)" + }, + { + "label": "Locked Decisions", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L12", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_locked_decisions", + "community": 152, + "norm_label": "locked decisions" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L27", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_claude_s_discretion", + "community": 152, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas (OUT OF SCOPE)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L35", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_deferred_ideas_out_of_scope", + "community": 152, + "norm_label": "deferred ideas (out of scope)" + }, + { + "label": "Phase Requirements", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L42", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_phase_requirements", + "community": 24, + "norm_label": "phase requirements" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L56", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_summary", + "community": 24, + "norm_label": "summary" + }, + { + "label": "Architectural Responsibility Map", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L70", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_architectural_responsibility_map", + "community": 24, + "norm_label": "architectural responsibility map" + }, + { + "label": "Standard Stack", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L87", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_standard_stack", + "community": 129, + "norm_label": "standard stack" + }, + { + "label": "Core (already installed \u2014 no new installs for write-back)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L89", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_core_already_installed_no_new_installs_for_write_back", + "community": 129, + "norm_label": "core (already installed \u2014 no new installs for write-back)" + }, + { + "label": "New Installs (PWA layer only)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L100", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_new_installs_pwa_layer_only", + "community": 129, + "norm_label": "new installs (pwa layer only)" + }, + { + "label": "rrule \u2014 NOT needed for Phase 3", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L108", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_rrule_not_needed_for_phase_3", + "community": 129, + "norm_label": "rrule \u2014 not needed for phase 3" + }, + { + "label": "Installation", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L112", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_installation", + "community": 129, + "norm_label": "installation" + }, + { + "label": "Package Legitimacy Audit", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L122", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_package_legitimacy_audit", + "community": 24, + "norm_label": "package legitimacy audit" + }, + { + "label": "Architecture Patterns", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L140", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_architecture_patterns", + "community": 174, + "norm_label": "architecture patterns" + }, + { + "label": "System Architecture Diagram", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L142", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_system_architecture_diagram", + "community": 174, + "norm_label": "system architecture diagram" + }, + { + "label": "Recommended Project Structure Additions", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L182", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_recommended_project_structure_additions", + "community": 174, + "norm_label": "recommended project structure additions" + }, + { + "label": "Pattern 1: Building a VEVENT with ical.js (new file: `broker/vevent.ts`)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L215", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_1_building_a_vevent_with_ical_js_new_file_broker_vevent_ts", + "community": 24, + "norm_label": "pattern 1: building a vevent with ical.js (new file: `broker/vevent.ts`)" + }, + { + "label": "Pattern 2: tsdav Write Methods (new file: `broker/write.ts`)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L290", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_2_tsdav_write_methods_new_file_broker_write_ts", + "community": 24, + "norm_label": "pattern 2: tsdav write methods (new file: `broker/write.ts`)" + }, + { + "label": "Pattern 3: Outbox Table Schema", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L369", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_3_outbox_table_schema", + "community": 24, + "norm_label": "pattern 3: outbox table schema" + }, + { + "label": "Pattern 4: Outbox Worker (new file: `broker/outboxWorker.ts`)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L414", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_4_outbox_worker_new_file_broker_outboxworker_ts", + "community": 24, + "norm_label": "pattern 4: outbox worker (new file: `broker/outboxworker.ts`)" + }, + { + "label": "Pattern 5: vite-plugin-pwa Configuration", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L481", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_5_vite_plugin_pwa_configuration", + "community": 24, + "norm_label": "pattern 5: vite-plugin-pwa configuration" + }, + { + "label": "Pattern 6: iOS A2HS Detection and Walkthrough", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L555", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_6_ios_a2hs_detection_and_walkthrough", + "community": 24, + "norm_label": "pattern 6: ios a2hs detection and walkthrough" + }, + { + "label": "Pattern 7: Android beforeinstallprompt", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L584", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_7_android_beforeinstallprompt", + "community": 24, + "norm_label": "pattern 7: android beforeinstallprompt" + }, + { + "label": "Pattern 8: Polled Sync-State Endpoint (D-09)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L624", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pattern_8_polled_sync_state_endpoint_d_09", + "community": 24, + "norm_label": "pattern 8: polled sync-state endpoint (d-09)" + }, + { + "label": "Don't Hand-Roll", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L639", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_don_t_hand_roll", + "community": 24, + "norm_label": "don't hand-roll" + }, + { + "label": "Common Pitfalls", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L655", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "community": 109, + "norm_label": "common pitfalls" + }, + { + "label": "Pitfall 1: Service Worker intercepts `/callback` and breaks OIDC login", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L657", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_1_service_worker_intercepts_callback_and_breaks_oidc_login", + "community": 109, + "norm_label": "pitfall 1: service worker intercepts `/callback` and breaks oidc login" + }, + { + "label": "Pitfall 2: iOS standalone mode breaks on OIDC redirect to auth.DOMAIN", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L671", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_2_ios_standalone_mode_breaks_on_oidc_redirect_to_auth_domain", + "community": 109, + "norm_label": "pitfall 2: ios standalone mode breaks on oidc redirect to auth.domain" + }, + { + "label": "Pitfall 3: D-13 DATE vs DATETIME coercion in VEVENT building", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L687", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_3_d_13_date_vs_datetime_coercion_in_vevent_building", + "community": 109, + "norm_label": "pitfall 3: d-13 date vs datetime coercion in vevent building" + }, + { + "label": "Pitfall 4: ETag not returned after PUT on Fastmail", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L697", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_4_etag_not_returned_after_put_on_fastmail", + "community": 109, + "norm_label": "pitfall 4: etag not returned after put on fastmail" + }, + { + "label": "Pitfall 5: Edit-as-move (D-04) partial-failure", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L709", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_5_edit_as_move_d_04_partial_failure", + "community": 109, + "norm_label": "pitfall 5: edit-as-move (d-04) partial-failure" + }, + { + "label": "Pitfall 6: `navigateFallbackDenylist` not respected in dev mode", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L721", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_6_navigatefallbackdenylist_not_respected_in_dev_mode", + "community": 109, + "norm_label": "pitfall 6: `navigatefallbackdenylist` not respected in dev mode" + }, + { + "label": "Pitfall 7: Outbox worker runs without a valid DAVCalendar object for re-sync", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L731", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_pitfall_7_outbox_worker_runs_without_a_valid_davcalendar_object_for_re_sync", + "community": 109, + "norm_label": "pitfall 7: outbox worker runs without a valid davcalendar object for re-sync" + }, + { + "label": "Code Examples", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L739", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_code_examples", + "community": 153, + "norm_label": "code examples" + }, + { + "label": "Create a recurring event (whole-series RRULE presets)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L741", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_create_a_recurring_event_whole_series_rrule_presets", + "community": 153, + "norm_label": "create a recurring event (whole-series rrule presets)" + }, + { + "label": "Sync-state poll with TanStack Query", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L758", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_sync_state_poll_with_tanstack_query", + "community": 153, + "norm_label": "sync-state poll with tanstack query" + }, + { + "label": "Detect installed state (for hiding install prompts)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L775", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_detect_installed_state_for_hiding_install_prompts", + "community": 153, + "norm_label": "detect installed state (for hiding install prompts)" + }, + { + "label": "State of the Art", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L785", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_state_of_the_art", + "community": 24, + "norm_label": "state of the art" + }, + { + "label": "Assumptions Log", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L801", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_assumptions_log", + "community": 24, + "norm_label": "assumptions log" + }, + { + "label": "Open Questions (RESOLVED)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L814", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_open_questions_resolved", + "community": 24, + "norm_label": "open questions (resolved)" + }, + { + "label": "Environment Availability", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L837", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_environment_availability", + "community": 24, + "norm_label": "environment availability" + }, + { + "label": "Validation Architecture", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L855", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_validation_architecture", + "community": 130, + "norm_label": "validation architecture" + }, + { + "label": "Test Framework", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L859", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_test_framework", + "community": 130, + "norm_label": "test framework" + }, + { + "label": "Phase Requirements \u2192 Test Map", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L871", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_phase_requirements_test_map", + "community": 130, + "norm_label": "phase requirements \u2192 test map" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L892", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_sampling_rate", + "community": 130, + "norm_label": "sampling rate" + }, + { + "label": "Wave 0 Gaps", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L897", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_wave_0_gaps", + "community": 130, + "norm_label": "wave 0 gaps" + }, + { + "label": "Security Domain", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L908", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_security_domain", + "community": 173, + "norm_label": "security domain" + }, + { + "label": "Applicable ASVS Categories", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L912", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_applicable_asvs_categories", + "community": 173, + "norm_label": "applicable asvs categories" + }, + { + "label": "Known Threat Patterns", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L922", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_known_threat_patterns", + "community": 173, + "norm_label": "known threat patterns" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L935", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_sources", + "community": 154, + "norm_label": "sources" + }, + { + "label": "Primary (HIGH confidence)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L937", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_primary_high_confidence", + "community": 154, + "norm_label": "primary (high confidence)" + }, + { + "label": "Secondary (MEDIUM confidence)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L955", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_secondary_medium_confidence", + "community": 154, + "norm_label": "secondary (medium confidence)" + }, + { + "label": "Tertiary (LOW confidence / ASSUMED)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L960", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_tertiary_low_confidence_assumed", + "community": 154, + "norm_label": "tertiary (low confidence / assumed)" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L966", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_research_metadata", + "community": 24, + "norm_label": "metadata" + }, + { + "label": "03-REVIEW-FIX.iter2.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2", + "community": 32, + "norm_label": "03-review-fix.iter2.md" + }, + { + "label": "Phase 3: Code Review Fix Report", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L12", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_phase_3_code_review_fix_report", + "community": 32, + "norm_label": "phase 3: code review fix report" + }, + { + "label": "Fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L37", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "community": 32, + "norm_label": "fixed issues" + }, + { + "label": "CR-01: Event edit/delete ownership check resolves an arbitrary member's row (uid-only lookup)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L39", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_cr_01_event_edit_delete_ownership_check_resolves_an_arbitrary_member_s_row_uid_only_lookup", + "community": 32, + "norm_label": "cr-01: event edit/delete ownership check resolves an arbitrary member's row (uid-only lookup)" + }, + { + "label": "CR-02: Outbox WR-02 \"freshest etag\" re-read also queries uid-only", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L51", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_cr_02_outbox_wr_02_freshest_etag_re_read_also_queries_uid_only", + "community": 32, + "norm_label": "cr-02: outbox wr-02 \"freshest etag\" re-read also queries uid-only" + }, + { + "label": "CR-03: All-day end date exclusive on write but inclusive on edit pre-fill", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_cr_03_all_day_end_date_exclusive_on_write_but_inclusive_on_edit_pre_fill", + "community": 32, + "norm_label": "cr-03: all-day end date exclusive on write but inclusive on edit pre-fill" + }, + { + "label": "WR-01: Recurrence silently reset to `none` on every edit \u2014 data loss", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L74", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_01_recurrence_silently_reset_to_none_on_every_edit_data_loss", + "community": 32, + "norm_label": "wr-01: recurrence silently reset to `none` on every edit \u2014 data loss" + }, + { + "label": "WR-02: Default-calendar selection on create is non-deterministic", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L90", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_02_default_calendar_selection_on_create_is_non_deterministic", + "community": 32, + "norm_label": "wr-02: default-calendar selection on create is non-deterministic" + }, + { + "label": "WR-03: `parseDateTime` all-day check uses the raw `iso`, not the cleaned string", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L97", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_03_parsedatetime_all_day_check_uses_the_raw_iso_not_the_cleaned_string", + "community": 32, + "norm_label": "wr-03: `parsedatetime` all-day check uses the raw `iso`, not the cleaned string" + }, + { + "label": "WR-04: Worker cron schedules start on bare module import \u2014 pollutes the test process", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L104", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_04_worker_cron_schedules_start_on_bare_module_import_pollutes_the_test_process", + "community": 32, + "norm_label": "wr-04: worker cron schedules start on bare module import \u2014 pollutes the test process" + }, + { + "label": "WR-05: `index.ts` direct-run guard is fragile and can mis-fire", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L112", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_05_index_ts_direct_run_guard_is_fragile_and_can_mis_fire", + "community": 32, + "norm_label": "wr-05: `index.ts` direct-run guard is fragile and can mis-fire" + }, + { + "label": "WR-06: Edit-as-move create-412 dead-ends the move with no retry path", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L120", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_06_edit_as_move_create_412_dead_ends_the_move_with_no_retry_path", + "community": 32, + "norm_label": "wr-06: edit-as-move create-412 dead-ends the move with no retry path" + }, + { + "label": "IN-01: `triggerTargetedResync` re-loads and re-decrypts the credential per row", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L131", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_in_01_triggertargetedresync_re_loads_and_re_decrypts_the_credential_per_row", + "community": 32, + "norm_label": "in-01: `triggertargetedresync` re-loads and re-decrypts the credential per row" + }, + { + "label": "IN-02: Unknown-status responses retried for the full backoff window before giving up", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L141", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_in_02_unknown_status_responses_retried_for_the_full_backoff_window_before_giving_up", + "community": 32, + "norm_label": "in-02: unknown-status responses retried for the full backoff window before giving up" + }, + { + "label": "IN-03: `InstallPrompt` reads `localStorage` synchronously without try/catch", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L151", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_in_03_installprompt_reads_localstorage_synchronously_without_try_catch", + "community": 32, + "norm_label": "in-03: `installprompt` reads `localstorage` synchronously without try/catch" + }, + { + "label": "IN-04: `resolveUserId` typed as `any`", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L160", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_in_04_resolveuserid_typed_as_any", + "community": 32, + "norm_label": "in-04: `resolveuserid` typed as `any`" + }, + { + "label": "Skipped Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L172", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_skipped_issues", + "community": 32, + "norm_label": "skipped issues" + }, + { + "label": "IN-05: `deleteCalendarEvent` relies on tsdav ignoring `data: ''`", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L174", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter2_in_05_deletecalendarevent_relies_on_tsdav_ignoring_data", + "community": 32, + "norm_label": "in-05: `deletecalendarevent` relies on tsdav ignoring `data: ''`" + }, + { + "label": "03-REVIEW-FIX.iter3.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3", + "community": 82, + "norm_label": "03-review-fix.iter3.md" + }, + { + "label": "Phase 3: Code Review Fix Report (Iteration 2)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L12", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_phase_3_code_review_fix_report_iteration_2", + "community": 82, + "norm_label": "phase 3: code review fix report (iteration 2)" + }, + { + "label": "Fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L28", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "community": 82, + "norm_label": "fixed issues" + }, + { + "label": "CR-01: Edit-as-move silently strips a recurring series' RRULE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L30", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_cr_01_edit_as_move_silently_strips_a_recurring_series_rrule", + "community": 82, + "norm_label": "cr-01: edit-as-move silently strips a recurring series' rrule" + }, + { + "label": "WR-01: Edit form provides no indication recurrence is locked", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L37", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_01_edit_form_provides_no_indication_recurrence_is_locked", + "community": 82, + "norm_label": "wr-01: edit form provides no indication recurrence is locked" + }, + { + "label": "WR-02: `handleAllDayToggle` can leave end-date inconsistent", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L43", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_02_handlealldaytoggle_can_leave_end_date_inconsistent", + "community": 82, + "norm_label": "wr-02: `handlealldaytoggle` can leave end-date inconsistent" + }, + { + "label": "WR-03: Missing cached etag becomes an unconditional PUT/DELETE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L49", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_03_missing_cached_etag_becomes_an_unconditional_put_delete", + "community": 82, + "norm_label": "wr-03: missing cached etag becomes an unconditional put/delete" + }, + { + "label": "WR-04: `sync-status` masks an earlier failure behind the newest row", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_04_sync_status_masks_an_earlier_failure_behind_the_newest_row", + "community": 82, + "norm_label": "wr-04: `sync-status` masks an earlier failure behind the newest row" + }, + { + "label": "IN-01: `RRULE_PRESETS` round-trip is lossy for parameterized RRULEs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_in_01_rrule_presets_round_trip_is_lossy_for_parameterized_rrules", + "community": 82, + "norm_label": "in-01: `rrule_presets` round-trip is lossy for parameterized rrules" + }, + { + "label": "IN-02: `parseDateTime` silently rewrites a malformed edit value to today/09:00", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_in_02_parsedatetime_silently_rewrites_a_malformed_edit_value_to_today_09_00", + "community": 82, + "norm_label": "in-02: `parsedatetime` silently rewrites a malformed edit value to today/09:00" + }, + { + "label": "IN-03: Unchecked `as` casts on JSON-parsed outbox payload fields", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L74", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_iter3_in_03_unchecked_as_casts_on_json_parsed_outbox_payload_fields", + "community": 82, + "norm_label": "in-03: unchecked `as` casts on json-parsed outbox payload fields" + }, + { + "label": "03-REVIEW-FIX.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix", + "community": 81, + "norm_label": "03-review-fix.md" + }, + { + "label": "Phase 3: Code Review Fix Report (Iteration 2)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L12", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_phase_3_code_review_fix_report_iteration_2", + "community": 81, + "norm_label": "phase 3: code review fix report (iteration 2)" + }, + { + "label": "Fixed Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L28", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "community": 81, + "norm_label": "fixed issues" + }, + { + "label": "CR-01: Edit-as-move silently strips a recurring series' RRULE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L30", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_cr_01_edit_as_move_silently_strips_a_recurring_series_rrule", + "community": 81, + "norm_label": "cr-01: edit-as-move silently strips a recurring series' rrule" + }, + { + "label": "WR-01: Edit form provides no indication recurrence is locked", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L37", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_wr_01_edit_form_provides_no_indication_recurrence_is_locked", + "community": 81, + "norm_label": "wr-01: edit form provides no indication recurrence is locked" + }, + { + "label": "WR-02: `handleAllDayToggle` can leave end-date inconsistent", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L43", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_wr_02_handlealldaytoggle_can_leave_end_date_inconsistent", + "community": 81, + "norm_label": "wr-02: `handlealldaytoggle` can leave end-date inconsistent" + }, + { + "label": "WR-03: Missing cached etag becomes an unconditional PUT/DELETE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L49", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_wr_03_missing_cached_etag_becomes_an_unconditional_put_delete", + "community": 81, + "norm_label": "wr-03: missing cached etag becomes an unconditional put/delete" + }, + { + "label": "WR-04: `sync-status` masks an earlier failure behind the newest row", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_wr_04_sync_status_masks_an_earlier_failure_behind_the_newest_row", + "community": 81, + "norm_label": "wr-04: `sync-status` masks an earlier failure behind the newest row" + }, + { + "label": "IN-01: `RRULE_PRESETS` round-trip is lossy for parameterized RRULEs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_in_01_rrule_presets_round_trip_is_lossy_for_parameterized_rrules", + "community": 81, + "norm_label": "in-01: `rrule_presets` round-trip is lossy for parameterized rrules" + }, + { + "label": "IN-02: `parseDateTime` silently rewrites a malformed edit value to today/09:00", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L67", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_in_02_parsedatetime_silently_rewrites_a_malformed_edit_value_to_today_09_00", + "community": 81, + "norm_label": "in-02: `parsedatetime` silently rewrites a malformed edit value to today/09:00" + }, + { + "label": "IN-03: Unchecked `as` casts on JSON-parsed outbox payload fields", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L74", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_fix_in_03_unchecked_as_casts_on_json_parsed_outbox_payload_fields", + "community": 81, + "norm_label": "in-03: unchecked `as` casts on json-parsed outbox payload fields" + }, + { + "label": "03-REVIEW.iter2.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2", + "community": 21, + "norm_label": "03-review.iter2.md" + }, + { + "label": "Phase 3: Code Review Report", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "community": 21, + "norm_label": "phase 3: code review report" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L51", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_summary", + "community": 21, + "norm_label": "summary" + }, + { + "label": "Narrative Findings (AI reviewer)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L57", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_narrative_findings_ai_reviewer", + "community": 21, + "norm_label": "narrative findings (ai reviewer)" + }, + { + "label": "Critical Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L59", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_critical_issues", + "community": 21, + "norm_label": "critical issues" + }, + { + "label": "CR-01: Event edit/delete ownership check resolves an arbitrary member's row (uid-only lookup)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_cr_01_event_edit_delete_ownership_check_resolves_an_arbitrary_member_s_row_uid_only_lookup", + "community": 21, + "norm_label": "cr-01: event edit/delete ownership check resolves an arbitrary member's row (uid-only lookup)" + }, + { + "label": "CR-02: Outbox WR-02 \"freshest etag\" re-read also queries uid-only \u2014 can pick the wrong member's etag", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L83", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_cr_02_outbox_wr_02_freshest_etag_re_read_also_queries_uid_only_can_pick_the_wrong_member_s_etag", + "community": 21, + "norm_label": "cr-02: outbox wr-02 \"freshest etag\" re-read also queries uid-only \u2014 can pick the wrong member's etag" + }, + { + "label": "CR-03: All-day end date is exclusive on write but inclusive on edit pre-fill \u2014 span grows one day per re-edit", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L101", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_cr_03_all_day_end_date_is_exclusive_on_write_but_inclusive_on_edit_pre_fill_span_grows_one_day_per_re_edit", + "community": 21, + "norm_label": "cr-03: all-day end date is exclusive on write but inclusive on edit pre-fill \u2014 span grows one day per re-edit" + }, + { + "label": "Warnings", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L107", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "community": 21, + "norm_label": "warnings" + }, + { + "label": "WR-01: Recurrence is silently reset to `none` on every edit \u2014 data loss on recurring events", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L109", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_wr_01_recurrence_is_silently_reset_to_none_on_every_edit_data_loss_on_recurring_events", + "community": 21, + "norm_label": "wr-01: recurrence is silently reset to `none` on every edit \u2014 data loss on recurring events" + }, + { + "label": "WR-02: Default-calendar selection on create is non-deterministic (no ORDER BY)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L115", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_wr_02_default_calendar_selection_on_create_is_non_deterministic_no_order_by", + "community": 21, + "norm_label": "wr-02: default-calendar selection on create is non-deterministic (no order by)" + }, + { + "label": "WR-03: `parseDateTime` all-day check uses the raw `iso`, not the cleaned string", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L121", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_wr_03_parsedatetime_all_day_check_uses_the_raw_iso_not_the_cleaned_string", + "community": 21, + "norm_label": "wr-03: `parsedatetime` all-day check uses the raw `iso`, not the cleaned string" + }, + { + "label": "WR-04: Worker cron schedules start on bare module import \u2014 pollutes the test process", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L127", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_wr_04_worker_cron_schedules_start_on_bare_module_import_pollutes_the_test_process", + "community": 21, + "norm_label": "wr-04: worker cron schedules start on bare module import \u2014 pollutes the test process" + }, + { + "label": "WR-05: `index.ts` direct-run guard is fragile and can mis-fire", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L133", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_wr_05_index_ts_direct_run_guard_is_fragile_and_can_mis_fire", + "community": 21, + "norm_label": "wr-05: `index.ts` direct-run guard is fragile and can mis-fire" + }, + { + "label": "WR-06: Edit-as-move create-412 dead-ends the move with no retry path", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L139", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_wr_06_edit_as_move_create_412_dead_ends_the_move_with_no_retry_path", + "community": 21, + "norm_label": "wr-06: edit-as-move create-412 dead-ends the move with no retry path" + }, + { + "label": "Info", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L145", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_info", + "community": 21, + "norm_label": "info" + }, + { + "label": "IN-01: `triggerTargetedResync` re-loads and re-decrypts the credential per row", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L147", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_in_01_triggertargetedresync_re_loads_and_re_decrypts_the_credential_per_row", + "community": 21, + "norm_label": "in-01: `triggertargetedresync` re-loads and re-decrypts the credential per row" + }, + { + "label": "IN-02: Unknown-status responses retried for the full backoff window before giving up", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L153", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_in_02_unknown_status_responses_retried_for_the_full_backoff_window_before_giving_up", + "community": 21, + "norm_label": "in-02: unknown-status responses retried for the full backoff window before giving up" + }, + { + "label": "IN-03: `InstallPrompt` reads `localStorage` synchronously in `useState` initializer without try/catch", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L159", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_in_03_installprompt_reads_localstorage_synchronously_in_usestate_initializer_without_try_catch", + "community": 21, + "norm_label": "in-03: `installprompt` reads `localstorage` synchronously in `usestate` initializer without try/catch" + }, + { + "label": "IN-04: `resolveUserId` typed as `any`", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L165", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_in_04_resolveuserid_typed_as_any", + "community": 21, + "norm_label": "in-04: `resolveuserid` typed as `any`" + }, + { + "label": "IN-05: `deleteCalendarEvent` relies on tsdav ignoring `data: ''`", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L171", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter2_in_05_deletecalendarevent_relies_on_tsdav_ignoring_data", + "community": 21, + "norm_label": "in-05: `deletecalendarevent` relies on tsdav ignoring `data: ''`" + }, + { + "label": "03-REVIEW.iter3.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3", + "community": 57, + "norm_label": "03-review.iter3.md" + }, + { + "label": "Phase 3: Code Review Report (Re-Review, Iteration 2)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_phase_3_code_review_report_re_review_iteration_2", + "community": 57, + "norm_label": "phase 3: code review report (re-review, iteration 2)" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L51", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_summary", + "community": 57, + "norm_label": "summary" + }, + { + "label": "Critical Issues", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L61", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_critical_issues", + "community": 57, + "norm_label": "critical issues" + }, + { + "label": "CR-01: Edit-as-move silently strips a recurring series' RRULE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L63", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_cr_01_edit_as_move_silently_strips_a_recurring_series_rrule", + "community": 57, + "norm_label": "cr-01: edit-as-move silently strips a recurring series' rrule" + }, + { + "label": "Warnings", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L96", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_warnings", + "community": 57, + "norm_label": "warnings" + }, + { + "label": "WR-01: Edit form cannot edit recurrence and provides no way to remove an RRULE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L98", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_wr_01_edit_form_cannot_edit_recurrence_and_provides_no_way_to_remove_an_rrule", + "community": 57, + "norm_label": "wr-01: edit form cannot edit recurrence and provides no way to remove an rrule" + }, + { + "label": "WR-02: `handleAllDayToggle` can leave end-date inconsistent with the discarded time inputs", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L106", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_wr_02_handlealldaytoggle_can_leave_end_date_inconsistent_with_the_discarded_time_inputs", + "community": 57, + "norm_label": "wr-02: `handlealldaytoggle` can leave end-date inconsistent with the discarded time inputs" + }, + { + "label": "WR-03: Missing cached etag becomes an unconditional PUT/DELETE, defeating D-08 conflict detection", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L114", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_wr_03_missing_cached_etag_becomes_an_unconditional_put_delete_defeating_d_08_conflict_detection", + "community": 57, + "norm_label": "wr-03: missing cached etag becomes an unconditional put/delete, defeating d-08 conflict detection" + }, + { + "label": "WR-04: `sync-status` reports only the newest outbox row per uid, masking an earlier failure", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L122", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_wr_04_sync_status_reports_only_the_newest_outbox_row_per_uid_masking_an_earlier_failure", + "community": 57, + "norm_label": "wr-04: `sync-status` reports only the newest outbox row per uid, masking an earlier failure" + }, + { + "label": "Info", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L130", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_info", + "community": 57, + "norm_label": "info" + }, + { + "label": "IN-01: `RRULE_PRESETS` round-trip is lossy for any parameterized RRULE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L132", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_in_01_rrule_presets_round_trip_is_lossy_for_any_parameterized_rrule", + "community": 57, + "norm_label": "in-01: `rrule_presets` round-trip is lossy for any parameterized rrule" + }, + { + "label": "IN-02: `parseDateTime` silently rewrites a malformed edit value to today/09:00", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L140", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_in_02_parsedatetime_silently_rewrites_a_malformed_edit_value_to_today_09_00", + "community": 57, + "norm_label": "in-02: `parsedatetime` silently rewrites a malformed edit value to today/09:00" + }, + { + "label": "IN-03: Unchecked `as` casts on JSON-parsed outbox payload fields", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L148", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iter3_in_03_unchecked_as_casts_on_json_parsed_outbox_payload_fields", + "community": 57, + "norm_label": "in-03: unchecked `as` casts on json-parsed outbox payload fields" + }, + { + "label": "03-REVIEW.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review", + "community": 90, + "norm_label": "03-review.md" + }, + { + "label": "Phase 3: Code Review Report (Re-Review, Iteration 3 \u2014 final --auto pass)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L44", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_phase_3_code_review_report_re_review_iteration_3_final_auto_pass", + "community": 90, + "norm_label": "phase 3: code review report (re-review, iteration 3 \u2014 final --auto pass)" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L51", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_summary", + "community": 90, + "norm_label": "summary" + }, + { + "label": "Iteration-2 fixes \u2014 verified", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L55", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_iteration_2_fixes_verified", + "community": 90, + "norm_label": "iteration-2 fixes \u2014 verified" + }, + { + "label": "Warnings", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L69", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_warnings", + "community": 90, + "norm_label": "warnings" + }, + { + "label": "WR-01: Missing cached etag still produces an unconditional PUT/DELETE (D-08 gap)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L71", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_wr_01_missing_cached_etag_still_produces_an_unconditional_put_delete_d_08_gap", + "community": 90, + "norm_label": "wr-01: missing cached etag still produces an unconditional put/delete (d-08 gap)" + }, + { + "label": "WR-02: Edit cannot change or remove an RRULE; \"no recurrence field\" is overloaded as \"keep existing\"", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L79", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_wr_02_edit_cannot_change_or_remove_an_rrule_no_recurrence_field_is_overloaded_as_keep_existing", + "community": 90, + "norm_label": "wr-02: edit cannot change or remove an rrule; \"no recurrence field\" is overloaded as \"keep existing\"" + }, + { + "label": "Info", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L87", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_info", + "community": 90, + "norm_label": "info" + }, + { + "label": "IN-01: `RRULE_PRESETS` round-trip is lossy for any parameterized RRULE", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L89", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_in_01_rrule_presets_round_trip_is_lossy_for_any_parameterized_rrule", + "community": 90, + "norm_label": "in-01: `rrule_presets` round-trip is lossy for any parameterized rrule" + }, + { + "label": "IN-02: Move-path RRULE preservation depends silently on `rawVevent` being non-empty", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L97", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_review_in_02_move_path_rrule_preservation_depends_silently_on_rawvevent_being_non_empty", + "community": 90, + "norm_label": "in-02: move-path rrule preservation depends silently on `rawvevent` being non-empty" + }, + { + "label": "03-UI-SPEC.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec", + "community": 4, + "norm_label": "03-ui-spec.md" + }, + { + "label": "Phase 3 \u2014 UI Design Contract", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L10", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "community": 4, + "norm_label": "phase 3 \u2014 ui design contract" + }, + { + "label": "Event Write-Back + PWA Install", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L11", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_event_write_back_pwa_install", + "community": 4, + "norm_label": "event write-back + pwa install" + }, + { + "label": "Design System", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L25", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_design_system", + "community": 4, + "norm_label": "design system" + }, + { + "label": "Token Layer (inherited \u2014 no new tokens required)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L40", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_token_layer_inherited_no_new_tokens_required", + "community": 4, + "norm_label": "token layer (inherited \u2014 no new tokens required)" + }, + { + "label": "Color", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L54", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_color", + "community": 4, + "norm_label": "color" + }, + { + "label": "Spacing Scale", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L72", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_spacing_scale", + "community": 4, + "norm_label": "spacing scale" + }, + { + "label": "Typography", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L93", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_typography", + "community": 4, + "norm_label": "typography" + }, + { + "label": "Component Inventory", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L112", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "community": 4, + "norm_label": "component inventory" + }, + { + "label": "EventDetailPopover (extended \u2014 Phase 2 component)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L114", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_eventdetailpopover_extended_phase_2_component", + "community": 4, + "norm_label": "eventdetailpopover (extended \u2014 phase 2 component)" + }, + { + "label": "EventForm (new component)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L124", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_eventform_new_component", + "community": 4, + "norm_label": "eventform (new component)" + }, + { + "label": "CalendarPicker (within EventForm \u2014 conditional, D-02)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L166", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_calendarpicker_within_eventform_conditional_d_02", + "community": 4, + "norm_label": "calendarpicker (within eventform \u2014 conditional, d-02)" + }, + { + "label": "SyncStateToast (new component)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L170", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_syncstatetoast_new_component", + "community": 4, + "norm_label": "syncstatetoast (new component)" + }, + { + "label": "DeleteConfirmationDialog (new component)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L196", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_deleteconfirmationdialog_new_component", + "community": 4, + "norm_label": "deleteconfirmationdialog (new component)" + }, + { + "label": "InstallPrompt (new component)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L211", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_installprompt_new_component", + "community": 4, + "norm_label": "installprompt (new component)" + }, + { + "label": "Copywriting Contract", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L248", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_copywriting_contract", + "community": 4, + "norm_label": "copywriting contract" + }, + { + "label": "Interaction Contract", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L300", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "community": 4, + "norm_label": "interaction contract" + }, + { + "label": "EventForm \u2014 open / close", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L302", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_eventform_open_close", + "community": 4, + "norm_label": "eventform \u2014 open / close" + }, + { + "label": "EventForm \u2014 all-day toggle behavior", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L309", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_eventform_all_day_toggle_behavior", + "community": 4, + "norm_label": "eventform \u2014 all-day toggle behavior" + }, + { + "label": "EventForm \u2014 calendar picker (conditional, D-02)", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L315", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_eventform_calendar_picker_conditional_d_02", + "community": 4, + "norm_label": "eventform \u2014 calendar picker (conditional, d-02)" + }, + { + "label": "EventForm \u2014 recurrence", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L322", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_eventform_recurrence", + "community": 4, + "norm_label": "eventform \u2014 recurrence" + }, + { + "label": "Sync-state feedback", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L329", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_sync_state_feedback", + "community": 4, + "norm_label": "sync-state feedback" + }, + { + "label": "Delete interaction", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L337", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_delete_interaction", + "community": 4, + "norm_label": "delete interaction" + }, + { + "label": "iOS install walkthrough", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L346", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_ios_install_walkthrough", + "community": 4, + "norm_label": "ios install walkthrough" + }, + { + "label": "Android install", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L355", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_android_install", + "community": 4, + "norm_label": "android install" + }, + { + "label": "Touch targets", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L361", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_touch_targets", + "community": 4, + "norm_label": "touch targets" + }, + { + "label": "Keyboard / accessibility", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L365", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_keyboard_accessibility", + "community": 4, + "norm_label": "keyboard / accessibility" + }, + { + "label": "State Management Contract", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L379", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_state_management_contract", + "community": 4, + "norm_label": "state management contract" + }, + { + "label": "PWA Manifest Contract", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L399", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_pwa_manifest_contract", + "community": 4, + "norm_label": "pwa manifest contract" + }, + { + "label": "Registry Safety", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L430", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_registry_safety", + "community": 4, + "norm_label": "registry safety" + }, + { + "label": "Pre-Population Sources", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L442", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_pre_population_sources", + "community": 4, + "norm_label": "pre-population sources" + }, + { + "label": "Checker Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L469", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_ui_spec_checker_sign_off", + "community": 4, + "norm_label": "checker sign-off" + }, + { + "label": "03-VALIDATION.md", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L1", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation", + "community": 110, + "norm_label": "03-validation.md" + }, + { + "label": "Phase 3 \u2014 Validation Strategy", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L10", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "community": 110, + "norm_label": "phase 3 \u2014 validation strategy" + }, + { + "label": "Test Infrastructure", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L17", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_test_infrastructure", + "community": 110, + "norm_label": "test infrastructure" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L32", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_sampling_rate", + "community": 110, + "norm_label": "sampling rate" + }, + { + "label": "Per-Task Verification Map", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L42", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_per_task_verification_map", + "community": 110, + "norm_label": "per-task verification map" + }, + { + "label": "Wave 0 Requirements", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L66", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_wave_0_requirements", + "community": 110, + "norm_label": "wave 0 requirements" + }, + { + "label": "Manual-Only Verifications", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L81", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_manual_only_verifications", + "community": 110, + "norm_label": "manual-only verifications" + }, + { + "label": "Validation Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L90", + "_origin": "ast", + "id": "03_event_write_back_pwa_install_03_validation_validation_sign_off", + "community": 110, + "norm_label": "validation sign-off" + }, + { + "label": ".continue-here.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_continue_here", + "community": 158, + "norm_label": ".continue-here.md" + }, + { + "label": "Required Reading (in order)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L62", + "_origin": "ast", + "id": "04_shared_lists_live_sync_continue_here_required_reading_in_order", + "community": 158, + "norm_label": "required reading (in order)" + }, + { + "label": "Open Decisions for the Planner (intentionally NOT pre-decided)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L68", + "_origin": "ast", + "id": "04_shared_lists_live_sync_continue_here_open_decisions_for_the_planner_intentionally_not_pre_decided", + "community": 158, + "norm_label": "open decisions for the planner (intentionally not pre-decided)" + }, + { + "label": "Infrastructure State", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L74", + "_origin": "ast", + "id": "04_shared_lists_live_sync_continue_here_infrastructure_state", + "community": 158, + "norm_label": "infrastructure state" + }, + { + "label": "04-01-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_01_plan", + "community": 155, + "norm_label": "04-01-plan.md" + }, + { + "label": "Phase Goal", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L67", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_01_plan_phase_goal", + "community": 155, + "norm_label": "phase goal" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L215", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_01_plan_trust_boundaries", + "community": 155, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L223", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_01_plan_stride_threat_register", + "community": 155, + "norm_label": "stride threat register" + }, + { + "label": "04-02-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-02-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_02_plan", + "community": 175, + "norm_label": "04-02-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-02-PLAN.md", + "source_location": "L102", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_02_plan_trust_boundaries", + "community": 175, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-02-PLAN.md", + "source_location": "L109", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_02_plan_stride_threat_register", + "community": 175, + "norm_label": "stride threat register" + }, + { + "label": "04-03-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-03-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_03_plan", + "community": 176, + "norm_label": "04-03-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-03-PLAN.md", + "source_location": "L160", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_03_plan_trust_boundaries", + "community": 176, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-03-PLAN.md", + "source_location": "L167", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_03_plan_stride_threat_register", + "community": 176, + "norm_label": "stride threat register" + }, + { + "label": "04-04-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-04-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_04_plan", + "community": 177, + "norm_label": "04-04-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-04-PLAN.md", + "source_location": "L157", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_04_plan_trust_boundaries", + "community": 177, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-04-PLAN.md", + "source_location": "L164", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_04_plan_stride_threat_register", + "community": 177, + "norm_label": "stride threat register" + }, + { + "label": "04-05-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-05-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_05_plan", + "community": 178, + "norm_label": "04-05-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-05-PLAN.md", + "source_location": "L123", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_05_plan_trust_boundaries", + "community": 178, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-05-PLAN.md", + "source_location": "L129", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_05_plan_stride_threat_register", + "community": 178, + "norm_label": "stride threat register" + }, + { + "label": "04-06-PLAN.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-06-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_06_plan", + "community": 179, + "norm_label": "04-06-plan.md" + }, + { + "label": "Trust Boundaries", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-06-PLAN.md", + "source_location": "L154", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_06_plan_trust_boundaries", + "community": 179, + "norm_label": "trust boundaries" + }, + { + "label": "STRIDE Threat Register", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-06-PLAN.md", + "source_location": "L161", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_06_plan_stride_threat_register", + "community": 179, + "norm_label": "stride threat register" + }, + { + "label": "04-CONTEXT.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context", + "community": 15, + "norm_label": "04-context.md" + }, + { + "label": "Phase 4: Shared Lists + Live Sync - Context", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "community": 15, + "norm_label": "phase 4: shared lists + live sync - context" + }, + { + "label": "Phase Boundary", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L7", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_phase_boundary", + "community": 15, + "norm_label": "phase boundary" + }, + { + "label": "Implementation Decisions", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L23", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_implementation_decisions", + "community": 15, + "norm_label": "implementation decisions" + }, + { + "label": "Sharing model (List & item behavior)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L25", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_sharing_model_list_item_behavior", + "community": 15, + "norm_label": "sharing model (list & item behavior)" + }, + { + "label": "Item behavior", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L31", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_item_behavior", + "community": 15, + "norm_label": "item behavior" + }, + { + "label": "Live feel & conflict resolution", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L35", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_live_feel_conflict_resolution", + "community": 15, + "norm_label": "live feel & conflict resolution" + }, + { + "label": "Reconnect & transport (success criterion 3)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L40", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_reconnect_transport_success_criterion_3", + "community": 15, + "norm_label": "reconnect & transport (success criterion 3)" + }, + { + "label": "Reordering (LIST-03)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L45", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_reordering_list_03", + "community": 15, + "norm_label": "reordering (list-03)" + }, + { + "label": "Navigation / app shell", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L50", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_navigation_app_shell", + "community": 15, + "norm_label": "navigation / app shell" + }, + { + "label": "Project-level principle (applies beyond this phase)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L54", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_project_level_principle_applies_beyond_this_phase", + "community": 15, + "norm_label": "project-level principle (applies beyond this phase)" + }, + { + "label": "Claude's Discretion (deferred to research/planner)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L57", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_claude_s_discretion_deferred_to_research_planner", + "community": 15, + "norm_label": "claude's discretion (deferred to research/planner)" + }, + { + "label": "Reviewed Todos", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L61", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_reviewed_todos", + "community": 15, + "norm_label": "reviewed todos" + }, + { + "label": "Canonical References", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L67", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_canonical_references", + "community": 15, + "norm_label": "canonical references" + }, + { + "label": "Entry gate & transport", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L71", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_entry_gate_transport", + "community": 15, + "norm_label": "entry gate & transport" + }, + { + "label": "Prior decisions & requirements", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L75", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_prior_decisions_requirements", + "community": 15, + "norm_label": "prior decisions & requirements" + }, + { + "label": "Schema & code patterns", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L81", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_schema_code_patterns", + "community": 15, + "norm_label": "schema & code patterns" + }, + { + "label": "Existing Code Insights", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L89", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_existing_code_insights", + "community": 15, + "norm_label": "existing code insights" + }, + { + "label": "Reusable Assets", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L91", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_reusable_assets", + "community": 15, + "norm_label": "reusable assets" + }, + { + "label": "Established Patterns", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L97", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_established_patterns", + "community": 15, + "norm_label": "established patterns" + }, + { + "label": "Integration Points", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L102", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_integration_points", + "community": 15, + "norm_label": "integration points" + }, + { + "label": "Specific Ideas", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L111", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_specific_ideas", + "community": 15, + "norm_label": "specific ideas" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L120", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_context_deferred_ideas", + "community": 15, + "norm_label": "deferred ideas" + }, + { + "label": "04-DISCUSSION-LOG.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log", + "community": 83, + "norm_label": "04-discussion-log.md" + }, + { + "label": "Phase 4: Shared Lists + Live Sync - Discussion Log", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "community": 83, + "norm_label": "phase 4: shared lists + live sync - discussion log" + }, + { + "label": "List & item behavior \u2014 Sharing", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L12", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_list_item_behavior_sharing", + "community": 83, + "norm_label": "list & item behavior \u2014 sharing" + }, + { + "label": "List & item behavior \u2014 Privacy (refined)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L22", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_list_item_behavior_privacy_refined", + "community": 83, + "norm_label": "list & item behavior \u2014 privacy (refined)" + }, + { + "label": "List & item behavior \u2014 Checked items & delete guard", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L33", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_list_item_behavior_checked_items_delete_guard", + "community": 83, + "norm_label": "list & item behavior \u2014 checked items & delete guard" + }, + { + "label": "Live feel & conflicts", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L49", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_live_feel_conflicts", + "community": 83, + "norm_label": "live feel & conflicts" + }, + { + "label": "Reconnect catch-up", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L65", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_reconnect_catch_up", + "community": 83, + "norm_label": "reconnect catch-up" + }, + { + "label": "Reordering behavior", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L82", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_reordering_behavior", + "community": 83, + "norm_label": "reordering behavior" + }, + { + "label": "Lists navigation", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L98", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_lists_navigation", + "community": 83, + "norm_label": "lists navigation" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L113", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_claude_s_discretion", + "community": 83, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L118", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_discussion_log_deferred_ideas", + "community": 83, + "norm_label": "deferred ideas" + }, + { + "label": "04-PATTERNS.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns", + "community": 9, + "norm_label": "04-patterns.md" + }, + { + "label": "Phase 4: Shared Lists + Live Sync \u2014 Pattern Map", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "community": 9, + "norm_label": "phase 4: shared lists + live sync \u2014 pattern map" + }, + { + "label": "File Classification", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L9", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_file_classification", + "community": 9, + "norm_label": "file classification" + }, + { + "label": "Pattern Assignments", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L35", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "community": 9, + "norm_label": "pattern assignments" + }, + { + "label": "`apps/api/src/db/schema.ts` (model, CRUD \u2014 append new tables)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L37", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_api_src_db_schema_ts_model_crud_append_new_tables", + "community": 9, + "norm_label": "`apps/api/src/db/schema.ts` (model, crud \u2014 append new tables)" + }, + { + "label": "`apps/api/src/routes/lists.ts` (route, CRUD)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L87", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_api_src_routes_lists_ts_route_crud", + "community": 9, + "norm_label": "`apps/api/src/routes/lists.ts` (route, crud)" + }, + { + "label": "`apps/api/src/routes/sse.ts` (route, streaming \u2014 extend existing)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L196", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_api_src_routes_sse_ts_route_streaming_extend_existing", + "community": 9, + "norm_label": "`apps/api/src/routes/sse.ts` (route, streaming \u2014 extend existing)" + }, + { + "label": "`apps/api/src/lib/listEmitter.ts` (utility, event-driven)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L263", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_api_src_lib_listemitter_ts_utility_event_driven", + "community": 9, + "norm_label": "`apps/api/src/lib/listemitter.ts` (utility, event-driven)" + }, + { + "label": "`apps/api/src/index.ts` (config, modify)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L295", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_api_src_index_ts_config_modify", + "community": 9, + "norm_label": "`apps/api/src/index.ts` (config, modify)" + }, + { + "label": "`apps/pwa/src/App.tsx` (component, modify)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L322", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_app_tsx_component_modify", + "community": 9, + "norm_label": "`apps/pwa/src/app.tsx` (component, modify)" + }, + { + "label": "`apps/pwa/src/components/BottomTabBar.tsx` (component, request-response)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L359", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_components_bottomtabbar_tsx_component_request_response", + "community": 9, + "norm_label": "`apps/pwa/src/components/bottomtabbar.tsx` (component, request-response)" + }, + { + "label": "`apps/pwa/src/api/listsClient.ts` (utility, request-response)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L406", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_api_listsclient_ts_utility_request_response", + "community": 9, + "norm_label": "`apps/pwa/src/api/listsclient.ts` (utility, request-response)" + }, + { + "label": "`apps/pwa/src/store/listsStore.ts` (store, request-response)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L468", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_store_listsstore_ts_store_request_response", + "community": 9, + "norm_label": "`apps/pwa/src/store/listsstore.ts` (store, request-response)" + }, + { + "label": "`apps/pwa/src/routes/ListsIndex.tsx` (component, CRUD)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L498", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_routes_listsindex_tsx_component_crud", + "community": 9, + "norm_label": "`apps/pwa/src/routes/listsindex.tsx` (component, crud)" + }, + { + "label": "`apps/pwa/src/routes/ListDetail.tsx` (component, CRUD + event-driven)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L543", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_routes_listdetail_tsx_component_crud_event_driven", + "community": 9, + "norm_label": "`apps/pwa/src/routes/listdetail.tsx` (component, crud + event-driven)" + }, + { + "label": "`apps/pwa/src/components/DeleteConfirmationDialog.tsx` (reuse \u2014 no modification)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L568", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_components_deleteconfirmationdialog_tsx_reuse_no_modification", + "community": 9, + "norm_label": "`apps/pwa/src/components/deleteconfirmationdialog.tsx` (reuse \u2014 no modification)" + }, + { + "label": "`apps/pwa/src/components/ItemRow.tsx` (component, event-driven)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L580", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_components_itemrow_tsx_component_event_driven", + "community": 9, + "norm_label": "`apps/pwa/src/components/itemrow.tsx` (component, event-driven)" + }, + { + "label": "`apps/pwa/src/hooks/useListSSE.ts` (hook, event-driven)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L624", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_hooks_uselistsse_ts_hook_event_driven", + "community": 9, + "norm_label": "`apps/pwa/src/hooks/uselistsse.ts` (hook, event-driven)" + }, + { + "label": "Shared Patterns", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L635", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "community": 9, + "norm_label": "shared patterns" + }, + { + "label": "Auth / User Resolution", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L637", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_auth_user_resolution", + "community": 9, + "norm_label": "auth / user resolution" + }, + { + "label": "Error Handling (API routes)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L657", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_error_handling_api_routes", + "community": 9, + "norm_label": "error handling (api routes)" + }, + { + "label": "401 Guard Pattern", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L671", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_401_guard_pattern", + "community": 9, + "norm_label": "401 guard pattern" + }, + { + "label": "CSS Token Usage (PWA components)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L679", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_css_token_usage_pwa_components", + "community": 9, + "norm_label": "css token usage (pwa components)" + }, + { + "label": "Fetch with Credentials (PWA API client)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L690", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_fetch_with_credentials_pwa_api_client", + "community": 9, + "norm_label": "fetch with credentials (pwa api client)" + }, + { + "label": "TanStack Query Keys", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L701", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_tanstack_query_keys", + "community": 9, + "norm_label": "tanstack query keys" + }, + { + "label": "Lucide Icons (PWA)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L712", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_lucide_icons_pwa", + "community": 9, + "norm_label": "lucide icons (pwa)" + }, + { + "label": "Zustand Store Shape", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L721", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_zustand_store_shape", + "community": 9, + "norm_label": "zustand store shape" + }, + { + "label": "Plain-text XSS Guard (PWA)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L728", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_plain_text_xss_guard_pwa", + "community": 9, + "norm_label": "plain-text xss guard (pwa)" + }, + { + "label": "No Analog Found", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L735", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_no_analog_found", + "community": 9, + "norm_label": "no analog found" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L745", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_patterns_metadata", + "community": 9, + "norm_label": "metadata" + }, + { + "label": "04-RESEARCH.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research", + "community": 38, + "norm_label": "04-research.md" + }, + { + "label": "Phase 4: Shared Lists + Live Sync \u2014 Research", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "community": 38, + "norm_label": "phase 4: shared lists + live sync \u2014 research" + }, + { + "label": "User Constraints (from CONTEXT.md)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L10", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_user_constraints_from_context_md", + "community": 156, + "norm_label": "user constraints (from context.md)" + }, + { + "label": "Locked Decisions", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L12", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_locked_decisions", + "community": 156, + "norm_label": "locked decisions" + }, + { + "label": "Claude's Discretion", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L34", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_claude_s_discretion", + "community": 156, + "norm_label": "claude's discretion" + }, + { + "label": "Deferred Ideas (OUT OF SCOPE)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L41", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_deferred_ideas_out_of_scope", + "community": 156, + "norm_label": "deferred ideas (out of scope)" + }, + { + "label": "Phase Requirements", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L50", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_phase_requirements", + "community": 38, + "norm_label": "phase requirements" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L63", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_summary", + "community": 38, + "norm_label": "summary" + }, + { + "label": "Entry Gate Status: CLEARED", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L75", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_entry_gate_status_cleared", + "community": 38, + "norm_label": "entry gate status: cleared" + }, + { + "label": "Architectural Responsibility Map", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L89", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_architectural_responsibility_map", + "community": 38, + "norm_label": "architectural responsibility map" + }, + { + "label": "Standard Stack", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L106", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_standard_stack", + "community": 182, + "norm_label": "standard stack" + }, + { + "label": "Core (already installed \u2014 no new installs needed)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L108", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_core_already_installed_no_new_installs_needed", + "community": 182, + "norm_label": "core (already installed \u2014 no new installs needed)" + }, + { + "label": "New Dependencies (must install)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L120", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_new_dependencies_must_install", + "community": 182, + "norm_label": "new dependencies (must install)" + }, + { + "label": "Package Legitimacy Audit", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L145", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_package_legitimacy_audit", + "community": 38, + "norm_label": "package legitimacy audit" + }, + { + "label": "Architecture Patterns", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L160", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_architecture_patterns", + "community": 181, + "norm_label": "architecture patterns" + }, + { + "label": "System Architecture Diagram", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L162", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_system_architecture_diagram", + "community": 181, + "norm_label": "system architecture diagram" + }, + { + "label": "Recommended Project Structure", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L209", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_recommended_project_structure", + "community": 181, + "norm_label": "recommended project structure" + }, + { + "label": "Research Finding 1: SSE Fan-out Mechanism", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L246", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_1_sse_fan_out_mechanism", + "community": 191, + "norm_label": "research finding 1: sse fan-out mechanism" + }, + { + "label": "Recommendation: In-Memory EventEmitter (YAGNI \u2014 single process today)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L248", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_recommendation_in_memory_eventemitter_yagni_single_process_today", + "community": 191, + "norm_label": "recommendation: in-memory eventemitter (yagni \u2014 single process today)" + }, + { + "label": "Research Finding 2: Fractional Indexing for Reorder (D-13)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L348", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_2_fractional_indexing_for_reorder_d_13", + "community": 189, + "norm_label": "research finding 2: fractional indexing for reorder (d-13)" + }, + { + "label": "Library: `fractional-indexing` v3.2.0 by Rocicorp", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L350", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_library_fractional_indexing_v3_2_0_by_rocicorp", + "community": 189, + "norm_label": "library: `fractional-indexing` v3.2.0 by rocicorp" + }, + { + "label": "Research Finding 3: Scoped SSE Fan-out (D-04)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L400", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_3_scoped_sse_fan_out_d_04", + "community": 38, + "norm_label": "research finding 3: scoped sse fan-out (d-04)" + }, + { + "label": "Research Finding 4: EventSource Backoff Wrapper (D-11)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L432", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_4_eventsource_backoff_wrapper_d_11", + "community": 38, + "norm_label": "research finding 4: eventsource backoff wrapper (d-11)" + }, + { + "label": "Research Finding 5: React Router v7 Integration (D-16/D-17)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L525", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_5_react_router_v7_integration_d_16_d_17", + "community": 190, + "norm_label": "research finding 5: react router v7 integration (d-16/d-17)" + }, + { + "label": "Pattern: Declarative mode (no data router)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L527", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pattern_declarative_mode_no_data_router", + "community": 190, + "norm_label": "pattern: declarative mode (no data router)" + }, + { + "label": "Research Finding 6: Optimistic UI + Per-Field PATCH (D-07/D-08)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L597", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_6_optimistic_ui_per_field_patch_d_07_d_08", + "community": 38, + "norm_label": "research finding 6: optimistic ui + per-field patch (d-07/d-08)" + }, + { + "label": "Research Finding 7: Drag-and-Drop (LIST-03)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L649", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_7_drag_and_drop_list_03", + "community": 188, + "norm_label": "research finding 7: drag-and-drop (list-03)" + }, + { + "label": "Library: @dnd-kit/core 6.3.1 + @dnd-kit/sortable 10.0.0", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L651", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_library_dnd_kit_core_6_3_1_dnd_kit_sortable_10_0_0", + "community": 188, + "norm_label": "library: @dnd-kit/core 6.3.1 + @dnd-kit/sortable 10.0.0" + }, + { + "label": "Research Finding 8: Drizzle generate+migrate Workflow (MariaDB)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L725", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_research_finding_8_drizzle_generate_migrate_workflow_mariadb", + "community": 38, + "norm_label": "research finding 8: drizzle generate+migrate workflow (mariadb)" + }, + { + "label": "Database Schema Design", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L764", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_database_schema_design", + "community": 187, + "norm_label": "database schema design" + }, + { + "label": "New Tables", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L766", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_new_tables", + "community": 187, + "norm_label": "new tables" + }, + { + "label": "Don't Hand-Roll", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L846", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_don_t_hand_roll", + "community": 38, + "norm_label": "don't hand-roll" + }, + { + "label": "Common Pitfalls", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L863", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_common_pitfalls", + "community": 111, + "norm_label": "common pitfalls" + }, + { + "label": "Pitfall 1: SSE fan-out leaking private list events to all clients", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L865", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_1_sse_fan_out_leaking_private_list_events_to_all_clients", + "community": 111, + "norm_label": "pitfall 1: sse fan-out leaking private list events to all clients" + }, + { + "label": "Pitfall 2: Float-based positions exhausting precision", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L875", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_2_float_based_positions_exhausting_precision", + "community": 111, + "norm_label": "pitfall 2: float-based positions exhausting precision" + }, + { + "label": "Pitfall 3: Raw EventSource reconnect storm", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L885", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_3_raw_eventsource_reconnect_storm", + "community": 111, + "norm_label": "pitfall 3: raw eventsource reconnect storm" + }, + { + "label": "Pitfall 4: `drizzle-kit push` on populated MariaDB", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L895", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_4_drizzle_kit_push_on_populated_mariadb", + "community": 111, + "norm_label": "pitfall 4: `drizzle-kit push` on populated mariadb" + }, + { + "label": "Pitfall 5: dnd-kit drag handle with touch \u2014 accidental drags", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L905", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_5_dnd_kit_drag_handle_with_touch_accidental_drags", + "community": 111, + "norm_label": "pitfall 5: dnd-kit drag handle with touch \u2014 accidental drags" + }, + { + "label": "Pitfall 6: React Router + vite-plugin-pwa navigation fallback", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L913", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_6_react_router_vite_plugin_pwa_navigation_fallback", + "community": 111, + "norm_label": "pitfall 6: react router + vite-plugin-pwa navigation fallback" + }, + { + "label": "Pitfall 7: SSE auth with `withCredentials`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L921", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_pitfall_7_sse_auth_with_withcredentials", + "community": 111, + "norm_label": "pitfall 7: sse auth with `withcredentials`" + }, + { + "label": "Code Examples", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L929", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_code_examples", + "community": 131, + "norm_label": "code examples" + }, + { + "label": "Verified Pattern: Hono streamSSE (existing sse.ts)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L931", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_verified_pattern_hono_streamsse_existing_sse_ts", + "community": 131, + "norm_label": "verified pattern: hono streamsse (existing sse.ts)" + }, + { + "label": "Verified Pattern: Drizzle schema conventions (existing schema.ts)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L950", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_verified_pattern_drizzle_schema_conventions_existing_schema_ts", + "community": 131, + "norm_label": "verified pattern: drizzle schema conventions (existing schema.ts)" + }, + { + "label": "Verified Pattern: React Query optimistic update", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L961", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_verified_pattern_react_query_optimistic_update", + "community": 131, + "norm_label": "verified pattern: react query optimistic update" + }, + { + "label": "Verified Pattern: NavLink with active styling", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L981", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_verified_pattern_navlink_with_active_styling", + "community": 131, + "norm_label": "verified pattern: navlink with active styling" + }, + { + "label": "Validation Architecture", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L995", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_validation_architecture", + "community": 157, + "norm_label": "validation architecture" + }, + { + "label": "Test Framework", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L997", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_test_framework", + "community": 157, + "norm_label": "test framework" + }, + { + "label": "Phase Requirements \u2192 Test Map", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1006", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_phase_requirements_test_map", + "community": 157, + "norm_label": "phase requirements \u2192 test map" + }, + { + "label": "Wave 0 Gaps", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1021", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_wave_0_gaps", + "community": 157, + "norm_label": "wave 0 gaps" + }, + { + "label": "Security Domain", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1030", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_security_domain", + "community": 180, + "norm_label": "security domain" + }, + { + "label": "Applicable ASVS Categories", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1032", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_applicable_asvs_categories", + "community": 180, + "norm_label": "applicable asvs categories" + }, + { + "label": "Known Threat Patterns for This Phase", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1042", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_known_threat_patterns_for_this_phase", + "community": 180, + "norm_label": "known threat patterns for this phase" + }, + { + "label": "Environment Availability", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1054", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_environment_availability", + "community": 38, + "norm_label": "environment availability" + }, + { + "label": "State of the Art", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1073", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_state_of_the_art", + "community": 38, + "norm_label": "state of the art" + }, + { + "label": "Assumptions Log", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1089", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_assumptions_log", + "community": 38, + "norm_label": "assumptions log" + }, + { + "label": "Open Questions", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1102", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_open_questions", + "community": 38, + "norm_label": "open questions" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1121", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_sources", + "community": 132, + "norm_label": "sources" + }, + { + "label": "Primary (HIGH confidence \u2014 VERIFIED from codebase)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1123", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_primary_high_confidence_verified_from_codebase", + "community": 132, + "norm_label": "primary (high confidence \u2014 verified from codebase)" + }, + { + "label": "Primary (HIGH confidence \u2014 VERIFIED via npm registry + Context7)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1135", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_primary_high_confidence_verified_via_npm_registry_context7", + "community": 132, + "norm_label": "primary (high confidence \u2014 verified via npm registry + context7)" + }, + { + "label": "Secondary (MEDIUM confidence \u2014 CITED from official docs)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1144", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_secondary_medium_confidence_cited_from_official_docs", + "community": 132, + "norm_label": "secondary (medium confidence \u2014 cited from official docs)" + }, + { + "label": "Tertiary (LOW confidence \u2014 ASSUMED)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1150", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_tertiary_low_confidence_assumed", + "community": 132, + "norm_label": "tertiary (low confidence \u2014 assumed)" + }, + { + "label": "Metadata", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1158", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_research_metadata", + "community": 38, + "norm_label": "metadata" + }, + { + "label": "04-UI-SPEC.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec", + "community": 3, + "norm_label": "04-ui-spec.md" + }, + { + "label": "Phase 4 \u2014 UI Design Contract", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L10", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "community": 3, + "norm_label": "phase 4 \u2014 ui design contract" + }, + { + "label": "Design System", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L21", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_design_system", + "community": 3, + "norm_label": "design system" + }, + { + "label": "Spacing Scale", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L38", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_spacing_scale", + "community": 3, + "norm_label": "spacing scale" + }, + { + "label": "Typography", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L62", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_typography", + "community": 3, + "norm_label": "typography" + }, + { + "label": "Color", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L80", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_color", + "community": 3, + "norm_label": "color" + }, + { + "label": "Layout: App Shell Changes", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L109", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_layout_app_shell_changes", + "community": 3, + "norm_label": "layout: app shell changes" + }, + { + "label": "Bottom Tab Bar (phone, \u2264767px)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L113", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_bottom_tab_bar_phone_767px", + "community": 3, + "norm_label": "bottom tab bar (phone, \u2264767px)" + }, + { + "label": "Desktop / Tablet (\u2265768px) \u2014 Left Sidebar Navigation", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L135", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_desktop_tablet_768px_left_sidebar_navigation", + "community": 3, + "norm_label": "desktop / tablet (\u2265768px) \u2014 left sidebar navigation" + }, + { + "label": "Routing (D-17)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L140", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_routing_d_17", + "community": 3, + "norm_label": "routing (d-17)" + }, + { + "label": "Component Inventory", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L152", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_component_inventory", + "community": 3, + "norm_label": "component inventory" + }, + { + "label": "New Components for Phase 4", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L154", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "community": 3, + "norm_label": "new components for phase 4" + }, + { + "label": "`BottomTabBar`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L159", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_bottomtabbar", + "community": 3, + "norm_label": "`bottomtabbar`" + }, + { + "label": "`ListsIndex`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L174", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_listsindex", + "community": 3, + "norm_label": "`listsindex`" + }, + { + "label": "`ListCard`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L186", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_listcard", + "community": 3, + "norm_label": "`listcard`" + }, + { + "label": "`ListDetail`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L204", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_listdetail", + "community": 3, + "norm_label": "`listdetail`" + }, + { + "label": "`ItemRow`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L219", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_itemrow", + "community": 3, + "norm_label": "`itemrow`" + }, + { + "label": "`AddItemInput`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L237", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_additeminput", + "community": 3, + "norm_label": "`additeminput`" + }, + { + "label": "`ListsEmptyState`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L253", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_listsemptystate", + "community": 3, + "norm_label": "`listsemptystate`" + }, + { + "label": "`ListEmptyState` (used inside ListDetail when list has no items)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L263", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_listemptystate_used_inside_listdetail_when_list_has_no_items", + "community": 3, + "norm_label": "`listemptystate` (used inside listdetail when list has no items)" + }, + { + "label": "`CreateListSheet` (new list creation)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L272", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_createlistsheet_new_list_creation", + "community": 3, + "norm_label": "`createlistsheet` (new list creation)" + }, + { + "label": "`LiveSyncIndicator`", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L289", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_livesyncindicator", + "community": 3, + "norm_label": "`livesyncindicator`" + }, + { + "label": "Interaction Contracts", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L303", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "community": 3, + "norm_label": "interaction contracts" + }, + { + "label": "Drag-to-Reorder (LIST-03, D-13)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L305", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_drag_to_reorder_list_03_d_13", + "community": 3, + "norm_label": "drag-to-reorder (list-03, d-13)" + }, + { + "label": "Optimistic Updates (D-07)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L321", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_optimistic_updates_d_07", + "community": 3, + "norm_label": "optimistic updates (d-07)" + }, + { + "label": "Checked-Off Sink Behavior (D-05)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L331", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_checked_off_sink_behavior_d_05", + "community": 3, + "norm_label": "checked-off sink behavior (d-05)" + }, + { + "label": "Live Sync + Reconnect (D-10, D-11, D-12)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L342", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_live_sync_reconnect_d_10_d_11_d_12", + "community": 3, + "norm_label": "live sync + reconnect (d-10, d-11, d-12)" + }, + { + "label": "List Delete (D-06)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L357", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_list_delete_d_06", + "community": 3, + "norm_label": "list delete (d-06)" + }, + { + "label": "Item Delete (D-06 \u2014 no confirmation for individual items)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L368", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_item_delete_d_06_no_confirmation_for_individual_items", + "community": 3, + "norm_label": "item delete (d-06 \u2014 no confirmation for individual items)" + }, + { + "label": "Sharing Toggle (D-01, D-02)", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L377", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_sharing_toggle_d_01_d_02", + "community": 3, + "norm_label": "sharing toggle (d-01, d-02)" + }, + { + "label": "Copywriting Contract", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L387", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_copywriting_contract", + "community": 3, + "norm_label": "copywriting contract" + }, + { + "label": "Registry Safety", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L425", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_registry_safety", + "community": 3, + "norm_label": "registry safety" + }, + { + "label": "Accessibility Baseline", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L437", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_accessibility_baseline", + "community": 3, + "norm_label": "accessibility baseline" + }, + { + "label": "Security Notes", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L454", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_security_notes", + "community": 3, + "norm_label": "security notes" + }, + { + "label": "Checker Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L467", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_ui_spec_checker_sign_off", + "community": 3, + "norm_label": "checker sign-off" + }, + { + "label": "04-VALIDATION.md", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L1", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation", + "community": 112, + "norm_label": "04-validation.md" + }, + { + "label": "Phase 4 \u2014 Validation Strategy", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L10", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "community": 112, + "norm_label": "phase 4 \u2014 validation strategy" + }, + { + "label": "Test Infrastructure", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L17", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_test_infrastructure", + "community": 112, + "norm_label": "test infrastructure" + }, + { + "label": "Sampling Rate", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L29", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_sampling_rate", + "community": 112, + "norm_label": "sampling rate" + }, + { + "label": "Per-Task Verification Map", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L38", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_per_task_verification_map", + "community": 112, + "norm_label": "per-task verification map" + }, + { + "label": "Wave 0 Requirements", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L57", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_wave_0_requirements", + "community": 112, + "norm_label": "wave 0 requirements" + }, + { + "label": "Manual-Only Verifications", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L66", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_manual_only_verifications", + "community": 112, + "norm_label": "manual-only verifications" + }, + { + "label": "Validation Sign-Off", + "file_type": "document", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L76", + "_origin": "ast", + "id": "04_shared_lists_live_sync_04_validation_validation_sign_off", + "community": 112, + "norm_label": "validation sign-off" + }, + { + "label": "260606-tv8-PLAN.md", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_plan", + "community": 200, + "norm_label": "260606-tv8-plan.md" + }, + { + "label": "260606-tv8-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary", + "community": 84, + "norm_label": "260606-tv8-summary.md" + }, + { + "label": "Quick Task 260606-tv8: Fix Missing Sign-in Redirect in the PWA \u2014 Summary", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L35", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "community": 84, + "norm_label": "quick task 260606-tv8: fix missing sign-in redirect in the pwa \u2014 summary" + }, + { + "label": "What Was Built", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L39", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_what_was_built", + "community": 84, + "norm_label": "what was built" + }, + { + "label": "Task 1: GET /api/login backend route + tests (commit 237ec49)", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L41", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_task_1_get_api_login_backend_route_tests_commit_237ec49", + "community": 84, + "norm_label": "task 1: get /api/login backend route + tests (commit 237ec49)" + }, + { + "label": "Task 2: One-shot login-redirect helper + tests (commit 6dc9ccd)", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L52", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_task_2_one_shot_login_redirect_helper_tests_commit_6dc9ccd", + "community": 84, + "norm_label": "task 2: one-shot login-redirect helper + tests (commit 6dc9ccd)" + }, + { + "label": "Task 3: CalendarShell meQuery wiring (commit c2e0ab1)", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L62", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_task_3_calendarshell_mequery_wiring_commit_c2e0ab1", + "community": 84, + "norm_label": "task 3: calendarshell mequery wiring (commit c2e0ab1)" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L70", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_deviations_from_plan", + "community": 84, + "norm_label": "deviations from plan" + }, + { + "label": "Verification Results", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L74", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_verification_results", + "community": 84, + "norm_label": "verification results" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L80", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_known_stubs", + "community": 84, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L84", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_threat_flags", + "community": 84, + "norm_label": "threat flags" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L88", + "_origin": "ast", + "id": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_self_check_passed", + "community": 84, + "norm_label": "self-check: passed" + }, + { + "label": "260607-l6l-PLAN.md", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan", + "community": 126, + "norm_label": "260607-l6l-plan.md" + }, + { + "label": "Reference idioms already in events.ts:", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L61", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_reference_idioms_already_in_events_ts", + "community": 126, + "norm_label": "reference idioms already in events.ts:" + }, + { + "label": "- Working join: GET / at ~line 142-183 uses", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L62", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_working_join_get_at_line_142_183_uses", + "community": 126, + "norm_label": "- working join: get / at ~line 142-183 uses" + }, + { + "label": ".from(calendarEvents).innerJoin(calendars, eq(calendarEvents.calendarId, calendars.id))", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L63", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_from_calendarevents_innerjoin_calendars_eq_calendarevents_calendarid_calendars_id", + "community": 126, + "norm_label": ".from(calendarevents).innerjoin(calendars, eq(calendarevents.calendarid, calendars.id))" + }, + { + "label": "- Working ownership predicate: /writable-calendars at ~line 501-509 uses", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L64", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_working_ownership_predicate_writable_calendars_at_line_501_509_uses", + "community": 126, + "norm_label": "- working ownership predicate: /writable-calendars at ~line 501-509 uses" + }, + { + "label": ".where(or(eq(calendars.userId, currentUserId), eq(calendars.isShared, true)))", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L65", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_where_or_eq_calendars_userid_currentuserid_eq_calendars_isshared_true", + "community": 126, + "norm_label": ".where(or(eq(calendars.userid, currentuserid), eq(calendars.isshared, true)))" + }, + { + "label": "260607-l6l-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary", + "community": 51, + "norm_label": "260607-l6l-summary.md" + }, + { + "label": "Phase quick-260607-l6l Plan 01: Fix Phase 03 Write-Path Correctness Bugs Summary", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L41", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "community": 51, + "norm_label": "phase quick-260607-l6l plan 01: fix phase 03 write-path correctness bugs summary" + }, + { + "label": "Tasks Completed", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L45", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_tasks_completed", + "community": 51, + "norm_label": "tasks completed" + }, + { + "label": "Bug Details", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L53", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_details", + "community": 51, + "norm_label": "bug details" + }, + { + "label": "BUG 1 \u2014 Missing join on PATCH/:uid/edit and DELETE/:uid (BLOCKING)", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L55", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_1_missing_join_on_patch_uid_edit_and_delete_uid_blocking", + "community": 51, + "norm_label": "bug 1 \u2014 missing join on patch/:uid/edit and delete/:uid (blocking)" + }, + { + "label": "BUG 2 \u2014 Blank displayName from weak OIDC claim reading", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L65", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_2_blank_displayname_from_weak_oidc_claim_reading", + "community": 51, + "norm_label": "bug 2 \u2014 blank displayname from weak oidc claim reading" + }, + { + "label": "BUG 3 \u2014 GET /api/events returning all users' events", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L85", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_3_get_api_events_returning_all_users_events", + "community": 51, + "norm_label": "bug 3 \u2014 get /api/events returning all users' events" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L99", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_deviations_from_plan", + "community": 51, + "norm_label": "deviations from plan" + }, + { + "label": "Auto-fixed Issues", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L101", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_auto_fixed_issues", + "community": 51, + "norm_label": "auto-fixed issues" + }, + { + "label": "Operator Actions Required", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L116", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_operator_actions_required", + "community": 51, + "norm_label": "operator actions required" + }, + { + "label": "Known Stubs", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L126", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_known_stubs", + "community": 51, + "norm_label": "known stubs" + }, + { + "label": "Threat Flags", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L130", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_threat_flags", + "community": 51, + "norm_label": "threat flags" + }, + { + "label": "Self-Check", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L134", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_self_check", + "community": 51, + "norm_label": "self-check" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L146", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_self_check_passed", + "community": 51, + "norm_label": "self-check: passed" + }, + { + "label": "Orchestrator Review Follow-ups (post-executor)", + "file_type": "document", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L148", + "_origin": "ast", + "id": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_orchestrator_review_follow_ups_post_executor", + "community": 51, + "norm_label": "orchestrator review follow-ups (post-executor)" + }, + { + "label": "260607-u8o-PLAN.md", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-PLAN.md", + "source_location": "L1", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_plan", + "community": 201, + "norm_label": "260607-u8o-plan.md" + }, + { + "label": "260607-u8o-SUMMARY.md", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary", + "community": 113, + "norm_label": "260607-u8o-summary.md" + }, + { + "label": "Quick Task 260607-u8o: Record SSE-over-Pangolin Smoke Test PASS Summary", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L29", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "community": 113, + "norm_label": "quick task 260607-u8o: record sse-over-pangolin smoke test pass summary" + }, + { + "label": "What Was Done", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L33", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_what_was_done", + "community": 113, + "norm_label": "what was done" + }, + { + "label": "Evidence Recorded (verbatim)", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L40", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_evidence_recorded_verbatim", + "community": 113, + "norm_label": "evidence recorded (verbatim)" + }, + { + "label": "Deviations from Plan", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L49", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_deviations_from_plan", + "community": 113, + "norm_label": "deviations from plan" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L53", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_verification", + "community": 113, + "norm_label": "verification" + }, + { + "label": "Commits", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L59", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_commits", + "community": 113, + "norm_label": "commits" + }, + { + "label": "Self-Check: PASSED", + "file_type": "document", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L64", + "_origin": "ast", + "id": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_self_check_passed", + "community": 113, + "norm_label": "self-check: passed" + }, + { + "label": "ARCHITECTURE.md", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_architecture", + "community": 7, + "norm_label": "architecture.md" + }, + { + "label": "Architecture Research", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_architecture_architecture_research", + "community": 7, + "norm_label": "architecture research" + }, + { + "label": "Standard Architecture", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L7", + "_origin": "ast", + "id": "research_architecture_standard_architecture", + "community": 7, + "norm_label": "standard architecture" + }, + { + "label": "System Overview", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L9", + "_origin": "ast", + "id": "research_architecture_system_overview", + "community": 7, + "norm_label": "system overview" + }, + { + "label": "Component Responsibilities", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L90", + "_origin": "ast", + "id": "research_architecture_component_responsibilities", + "community": 7, + "norm_label": "component responsibilities" + }, + { + "label": "Recommended Project Structure", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L106", + "_origin": "ast", + "id": "research_architecture_recommended_project_structure", + "community": 7, + "norm_label": "recommended project structure" + }, + { + "label": "Structure Rationale", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L143", + "_origin": "ast", + "id": "research_architecture_structure_rationale", + "community": 7, + "norm_label": "structure rationale" + }, + { + "label": "Architectural Patterns", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L149", + "_origin": "ast", + "id": "research_architecture_architectural_patterns", + "community": 7, + "norm_label": "architectural patterns" + }, + { + "label": "Pattern 1: Broker Cache with ctag-based Invalidation", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L151", + "_origin": "ast", + "id": "research_architecture_pattern_1_broker_cache_with_ctag_based_invalidation", + "community": 7, + "norm_label": "pattern 1: broker cache with ctag-based invalidation" + }, + { + "label": "Pattern 2: Single-Broker-Token with Per-Calendar App Passwords", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L169", + "_origin": "ast", + "id": "research_architecture_pattern_2_single_broker_token_with_per_calendar_app_passwords", + "community": 7, + "norm_label": "pattern 2: single-broker-token with per-calendar app passwords" + }, + { + "label": "Pattern 3: Redis Pub/Sub for List Co-Edit", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L182", + "_origin": "ast", + "id": "research_architecture_pattern_3_redis_pub_sub_for_list_co_edit", + "community": 7, + "norm_label": "pattern 3: redis pub/sub for list co-edit" + }, + { + "label": "Pattern 4: RRULE Expansion Client-Side from Stored Raw VEVENT", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L198", + "_origin": "ast", + "id": "research_architecture_pattern_4_rrule_expansion_client_side_from_stored_raw_vevent", + "community": 7, + "norm_label": "pattern 4: rrule expansion client-side from stored raw vevent" + }, + { + "label": "Data Flow", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L206", + "_origin": "ast", + "id": "research_architecture_data_flow", + "community": 7, + "norm_label": "data flow" + }, + { + "label": "Calendar Read (PWA \u2192 API \u2192 Cache)", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L208", + "_origin": "ast", + "id": "research_architecture_calendar_read_pwa_api_cache", + "community": 7, + "norm_label": "calendar read (pwa \u2192 api \u2192 cache)" + }, + { + "label": "Calendar Write (PWA \u2192 API \u2192 Fastmail)", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L219", + "_origin": "ast", + "id": "research_architecture_calendar_write_pwa_api_fastmail", + "community": 7, + "norm_label": "calendar write (pwa \u2192 api \u2192 fastmail)" + }, + { + "label": "Fastmail Sync Loop (background)", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L231", + "_origin": "ast", + "id": "research_architecture_fastmail_sync_loop_background", + "community": 7, + "norm_label": "fastmail sync loop (background)" + }, + { + "label": "List Co-Edit (real-time)", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L244", + "_origin": "ast", + "id": "research_architecture_list_co_edit_real_time", + "community": 7, + "norm_label": "list co-edit (real-time)" + }, + { + "label": "Web Push Delivery", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L256", + "_origin": "ast", + "id": "research_architecture_web_push_delivery", + "community": 7, + "norm_label": "web push delivery" + }, + { + "label": "Identity Mapping (OIDC \u2192 App User)", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L268", + "_origin": "ast", + "id": "research_architecture_identity_mapping_oidc_app_user", + "community": 7, + "norm_label": "identity mapping (oidc \u2192 app user)" + }, + { + "label": "Component Build Order (Dependencies)", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L284", + "_origin": "ast", + "id": "research_architecture_component_build_order_dependencies", + "community": 7, + "norm_label": "component build order (dependencies)" + }, + { + "label": "Integration Points", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L323", + "_origin": "ast", + "id": "research_architecture_integration_points", + "community": 7, + "norm_label": "integration points" + }, + { + "label": "External Services", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L325", + "_origin": "ast", + "id": "research_architecture_external_services", + "community": 7, + "norm_label": "external services" + }, + { + "label": "Internal Boundaries", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L334", + "_origin": "ast", + "id": "research_architecture_internal_boundaries", + "community": 7, + "norm_label": "internal boundaries" + }, + { + "label": "Anti-Patterns", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L344", + "_origin": "ast", + "id": "research_architecture_anti_patterns", + "community": 7, + "norm_label": "anti-patterns" + }, + { + "label": "Anti-Pattern 1: Fetching from Fastmail on Every Calendar Request", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L346", + "_origin": "ast", + "id": "research_architecture_anti_pattern_1_fetching_from_fastmail_on_every_calendar_request", + "community": 7, + "norm_label": "anti-pattern 1: fetching from fastmail on every calendar request" + }, + { + "label": "Anti-Pattern 2: Using Email as the App User Key", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L354", + "_origin": "ast", + "id": "research_architecture_anti_pattern_2_using_email_as_the_app_user_key", + "community": 7, + "norm_label": "anti-pattern 2: using email as the app user key" + }, + { + "label": "Anti-Pattern 3: Storing Recurring Events Only as Expanded Instances", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L362", + "_origin": "ast", + "id": "research_architecture_anti_pattern_3_storing_recurring_events_only_as_expanded_instances", + "community": 7, + "norm_label": "anti-pattern 3: storing recurring events only as expanded instances" + }, + { + "label": "Anti-Pattern 4: Separate Microservices for Broker, Lists, Push", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L370", + "_origin": "ast", + "id": "research_architecture_anti_pattern_4_separate_microservices_for_broker_lists_push", + "community": 7, + "norm_label": "anti-pattern 4: separate microservices for broker, lists, push" + }, + { + "label": "Anti-Pattern 5: Per-User CalDAV Credentials in the PWA", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L378", + "_origin": "ast", + "id": "research_architecture_anti_pattern_5_per_user_caldav_credentials_in_the_pwa", + "community": 7, + "norm_label": "anti-pattern 5: per-user caldav credentials in the pwa" + }, + { + "label": "Scaling Considerations", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L386", + "_origin": "ast", + "id": "research_architecture_scaling_considerations", + "community": 7, + "norm_label": "scaling considerations" + }, + { + "label": "Open Research Flags for Phase Research", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L398", + "_origin": "ast", + "id": "research_architecture_open_research_flags_for_phase_research", + "community": 7, + "norm_label": "open research flags for phase research" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L408", + "_origin": "ast", + "id": "research_architecture_sources", + "community": 7, + "norm_label": "sources" + }, + { + "label": "FEATURES.md", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_features", + "community": 55, + "norm_label": "features.md" + }, + { + "label": "Feature Research", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_features_feature_research", + "community": 55, + "norm_label": "feature research" + }, + { + "label": "Feature Landscape", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L9", + "_origin": "ast", + "id": "research_features_feature_landscape", + "community": 55, + "norm_label": "feature landscape" + }, + { + "label": "Table Stakes (Users Expect These)", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L11", + "_origin": "ast", + "id": "research_features_table_stakes_users_expect_these", + "community": 55, + "norm_label": "table stakes (users expect these)" + }, + { + "label": "Differentiators (Competitive Advantage for This Product)", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L33", + "_origin": "ast", + "id": "research_features_differentiators_competitive_advantage_for_this_product", + "community": 55, + "norm_label": "differentiators (competitive advantage for this product)" + }, + { + "label": "Anti-Features (Deliberately Exclude)", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L48", + "_origin": "ast", + "id": "research_features_anti_features_deliberately_exclude", + "community": 55, + "norm_label": "anti-features (deliberately exclude)" + }, + { + "label": "Feature Dependencies", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L70", + "_origin": "ast", + "id": "research_features_feature_dependencies", + "community": 55, + "norm_label": "feature dependencies" + }, + { + "label": "Dependency Notes", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L108", + "_origin": "ast", + "id": "research_features_dependency_notes", + "community": 55, + "norm_label": "dependency notes" + }, + { + "label": "MVP Definition", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L118", + "_origin": "ast", + "id": "research_features_mvp_definition", + "community": 55, + "norm_label": "mvp definition" + }, + { + "label": "Launch With (v1)", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L120", + "_origin": "ast", + "id": "research_features_launch_with_v1", + "community": 55, + "norm_label": "launch with (v1)" + }, + { + "label": "Add After Validation (v1.x)", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L132", + "_origin": "ast", + "id": "research_features_add_after_validation_v1_x", + "community": 55, + "norm_label": "add after validation (v1.x)" + }, + { + "label": "Future Consideration (v2+)", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L139", + "_origin": "ast", + "id": "research_features_future_consideration_v2", + "community": 55, + "norm_label": "future consideration (v2+)" + }, + { + "label": "Feature Prioritization Matrix", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L147", + "_origin": "ast", + "id": "research_features_feature_prioritization_matrix", + "community": 55, + "norm_label": "feature prioritization matrix" + }, + { + "label": "Competitor Feature Analysis", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L172", + "_origin": "ast", + "id": "research_features_competitor_feature_analysis", + "community": 55, + "norm_label": "competitor feature analysis" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L194", + "_origin": "ast", + "id": "research_features_sources", + "community": 55, + "norm_label": "sources" + }, + { + "label": "PITFALLS.md", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_pitfalls", + "community": 10, + "norm_label": "pitfalls.md" + }, + { + "label": "Pitfalls Research", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_pitfalls_pitfalls_research", + "community": 10, + "norm_label": "pitfalls research" + }, + { + "label": "Critical Pitfalls", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L9", + "_origin": "ast", + "id": "research_pitfalls_critical_pitfalls", + "community": 10, + "norm_label": "critical pitfalls" + }, + { + "label": "Pitfall 1: Fastmail Calendars Are CalDAV-Only \u2014 JMAP Calendar Is Not Production-Ready", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L11", + "_origin": "ast", + "id": "research_pitfalls_pitfall_1_fastmail_calendars_are_caldav_only_jmap_calendar_is_not_production_ready", + "community": 10, + "norm_label": "pitfall 1: fastmail calendars are caldav-only \u2014 jmap calendar is not production-ready" + }, + { + "label": "Pitfall 2: Recurring Event RRULE Expansion Done in the App Instead of Leveraged from Server", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L31", + "_origin": "ast", + "id": "research_pitfalls_pitfall_2_recurring_event_rrule_expansion_done_in_the_app_instead_of_leveraged_from_server", + "community": 10, + "norm_label": "pitfall 2: recurring event rrule expansion done in the app instead of leveraged from server" + }, + { + "label": "Pitfall 3: All-Day Events Interpreted as Timed UTC Events", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L52", + "_origin": "ast", + "id": "research_pitfalls_pitfall_3_all_day_events_interpreted_as_timed_utc_events", + "community": 10, + "norm_label": "pitfall 3: all-day events interpreted as timed utc events" + }, + { + "label": "Pitfall 4: ETag / Sync-Token Incremental Sync Done Wrong", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L72", + "_origin": "ast", + "id": "research_pitfalls_pitfall_4_etag_sync_token_incremental_sync_done_wrong", + "community": 10, + "norm_label": "pitfall 4: etag / sync-token incremental sync done wrong" + }, + { + "label": "Pitfall 5: Write-Back Modifying a Single Recurring Instance Corrupts the Series", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L95", + "_origin": "ast", + "id": "research_pitfalls_pitfall_5_write_back_modifying_a_single_recurring_instance_corrupts_the_series", + "community": 10, + "norm_label": "pitfall 5: write-back modifying a single recurring instance corrupts the series" + }, + { + "label": "Pitfall 6: DST Transition Shifts Recurring Events by One Hour", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L117", + "_origin": "ast", + "id": "research_pitfalls_pitfall_6_dst_transition_shifts_recurring_events_by_one_hour", + "community": 10, + "norm_label": "pitfall 6: dst transition shifts recurring events by one hour" + }, + { + "label": "Pitfall 7: Personal Calendar Sharing to the Broker Token Is Not Automatic", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L139", + "_origin": "ast", + "id": "research_pitfalls_pitfall_7_personal_calendar_sharing_to_the_broker_token_is_not_automatic", + "community": 10, + "norm_label": "pitfall 7: personal calendar sharing to the broker token is not automatic" + }, + { + "label": "Pitfall 8: iOS Web Push Requires \"Add to Home Screen\" \u2014 and Apple Provides No Install Prompt", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L164", + "_origin": "ast", + "id": "research_pitfalls_pitfall_8_ios_web_push_requires_add_to_home_screen_and_apple_provides_no_install_prompt", + "community": 10, + "norm_label": "pitfall 8: ios web push requires \"add to home screen\" \u2014 and apple provides no install prompt" + }, + { + "label": "Pitfall 9: iOS Kills Push Subscriptions Silently After 3 Silent Pushes", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L186", + "_origin": "ast", + "id": "research_pitfalls_pitfall_9_ios_kills_push_subscriptions_silently_after_3_silent_pushes", + "community": 10, + "norm_label": "pitfall 9: ios kills push subscriptions silently after 3 silent pushes" + }, + { + "label": "Pitfall 10: Declarative Web Push vs Standard Web Push \u2014 Choose the Right Target", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L213", + "_origin": "ast", + "id": "research_pitfalls_pitfall_10_declarative_web_push_vs_standard_web_push_choose_the_right_target", + "community": 10, + "norm_label": "pitfall 10: declarative web push vs standard web push \u2014 choose the right target" + }, + { + "label": "Pitfall 11: EU Digital Markets Act Breaks iOS PWA Entirely for EU Users", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L232", + "_origin": "ast", + "id": "research_pitfalls_pitfall_11_eu_digital_markets_act_breaks_ios_pwa_entirely_for_eu_users", + "community": 10, + "norm_label": "pitfall 11: eu digital markets act breaks ios pwa entirely for eu users" + }, + { + "label": "Pitfall 12: Service Worker Caching Serves Stale Calendar Data", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L248", + "_origin": "ast", + "id": "research_pitfalls_pitfall_12_service_worker_caching_serves_stale_calendar_data", + "community": 10, + "norm_label": "pitfall 12: service worker caching serves stale calendar data" + }, + { + "label": "Pitfall 13: Service Worker Update Staleness \u2014 App Never Updates for the Wife", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L271", + "_origin": "ast", + "id": "research_pitfalls_pitfall_13_service_worker_update_staleness_app_never_updates_for_the_wife", + "community": 10, + "norm_label": "pitfall 13: service worker update staleness \u2014 app never updates for the wife" + }, + { + "label": "Pitfall 14: Calendar Cache Stale vs Fastmail Source of Truth \u2014 Double-Write Window", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L294", + "_origin": "ast", + "id": "research_pitfalls_pitfall_14_calendar_cache_stale_vs_fastmail_source_of_truth_double_write_window", + "community": 10, + "norm_label": "pitfall 14: calendar cache stale vs fastmail source of truth \u2014 double-write window" + }, + { + "label": "Pitfall 15: Real-Time List Sync \u2014 Missed Updates During Reconnect Gap", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L317", + "_origin": "ast", + "id": "research_pitfalls_pitfall_15_real_time_list_sync_missed_updates_during_reconnect_gap", + "community": 10, + "norm_label": "pitfall 15: real-time list sync \u2014 missed updates during reconnect gap" + }, + { + "label": "Pitfall 16: Authelia OIDC \u2014 v4.39+ Breaking Change Drops `groups` from ID Token", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L340", + "_origin": "ast", + "id": "research_pitfalls_pitfall_16_authelia_oidc_v4_39_breaking_change_drops_groups_from_id_token", + "community": 10, + "norm_label": "pitfall 16: authelia oidc \u2014 v4.39+ breaking change drops `groups` from id token" + }, + { + "label": "Pitfall 17: Authelia OIDC \u2014 SPA Token Silent Renewal Breaks When Authelia Is on a Separate Domain", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L359", + "_origin": "ast", + "id": "research_pitfalls_pitfall_17_authelia_oidc_spa_token_silent_renewal_breaks_when_authelia_is_on_a_separate_domain", + "community": 10, + "norm_label": "pitfall 17: authelia oidc \u2014 spa token silent renewal breaks when authelia is on a separate domain" + }, + { + "label": "Pitfall 18: Pangolin/Newt Tunnel \u2014 WebSocket and SSE May Require Explicit Configuration", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L383", + "_origin": "ast", + "id": "research_pitfalls_pitfall_18_pangolin_newt_tunnel_websocket_and_sse_may_require_explicit_configuration", + "community": 10, + "norm_label": "pitfall 18: pangolin/newt tunnel \u2014 websocket and sse may require explicit configuration" + }, + { + "label": "Technical Debt Patterns", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L406", + "_origin": "ast", + "id": "research_pitfalls_technical_debt_patterns", + "community": 10, + "norm_label": "technical debt patterns" + }, + { + "label": "Integration Gotchas", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L421", + "_origin": "ast", + "id": "research_pitfalls_integration_gotchas", + "community": 10, + "norm_label": "integration gotchas" + }, + { + "label": "Performance Traps", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L440", + "_origin": "ast", + "id": "research_pitfalls_performance_traps", + "community": 10, + "norm_label": "performance traps" + }, + { + "label": "Security Mistakes", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L451", + "_origin": "ast", + "id": "research_pitfalls_security_mistakes", + "community": 10, + "norm_label": "security mistakes" + }, + { + "label": "UX Pitfalls", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L463", + "_origin": "ast", + "id": "research_pitfalls_ux_pitfalls", + "community": 10, + "norm_label": "ux pitfalls" + }, + { + "label": "\"Looks Done But Isn't\" Checklist", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L476", + "_origin": "ast", + "id": "research_pitfalls_looks_done_but_isn_t_checklist", + "community": 10, + "norm_label": "\"looks done but isn't\" checklist" + }, + { + "label": "Recovery Strategies", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L491", + "_origin": "ast", + "id": "research_pitfalls_recovery_strategies", + "community": 10, + "norm_label": "recovery strategies" + }, + { + "label": "Pitfall-to-Phase Mapping", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L507", + "_origin": "ast", + "id": "research_pitfalls_pitfall_to_phase_mapping", + "community": 10, + "norm_label": "pitfall-to-phase mapping" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L532", + "_origin": "ast", + "id": "research_pitfalls_sources", + "community": 10, + "norm_label": "sources" + }, + { + "label": "STACK.md", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_stack", + "community": 40, + "norm_label": "stack.md" + }, + { + "label": "Stack Research", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_stack_stack_research", + "community": 40, + "norm_label": "stack research" + }, + { + "label": "Recommended Stack", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L9", + "_origin": "ast", + "id": "research_stack_recommended_stack", + "community": 40, + "norm_label": "recommended stack" + }, + { + "label": "Core Technologies", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L11", + "_origin": "ast", + "id": "research_stack_core_technologies", + "community": 40, + "norm_label": "core technologies" + }, + { + "label": "Supporting Libraries", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L23", + "_origin": "ast", + "id": "research_stack_supporting_libraries", + "community": 40, + "norm_label": "supporting libraries" + }, + { + "label": "Development Tools", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L40", + "_origin": "ast", + "id": "research_stack_development_tools", + "community": 40, + "norm_label": "development tools" + }, + { + "label": "Installation", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L51", + "_origin": "ast", + "id": "research_stack_installation", + "community": 40, + "norm_label": "installation" + }, + { + "label": "Calendar Integration: CalDAV, Not JMAP", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L70", + "_origin": "ast", + "id": "research_stack_calendar_integration_caldav_not_jmap", + "community": 40, + "norm_label": "calendar integration: caldav, not jmap" + }, + { + "label": "Backend Framework", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L100", + "_origin": "ast", + "id": "research_stack_backend_framework", + "community": 40, + "norm_label": "backend framework" + }, + { + "label": "React PWA Stack", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L120", + "_origin": "ast", + "id": "research_stack_react_pwa_stack", + "community": 40, + "norm_label": "react pwa stack" + }, + { + "label": "Authelia OIDC Integration", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L155", + "_origin": "ast", + "id": "research_stack_authelia_oidc_integration", + "community": 40, + "norm_label": "authelia oidc integration" + }, + { + "label": "Live List Sync", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L179", + "_origin": "ast", + "id": "research_stack_live_list_sync", + "community": 40, + "norm_label": "live list sync" + }, + { + "label": "Alternatives Considered", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L195", + "_origin": "ast", + "id": "research_stack_alternatives_considered", + "community": 40, + "norm_label": "alternatives considered" + }, + { + "label": "What NOT to Use", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L210", + "_origin": "ast", + "id": "research_stack_what_not_to_use", + "community": 40, + "norm_label": "what not to use" + }, + { + "label": "Version Compatibility", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L225", + "_origin": "ast", + "id": "research_stack_version_compatibility", + "community": 40, + "norm_label": "version compatibility" + }, + { + "label": "Open Questions Flagged for Phase Research", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L237", + "_origin": "ast", + "id": "research_stack_open_questions_flagged_for_phase_research", + "community": 40, + "norm_label": "open questions flagged for phase research" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/research/STACK.md", + "source_location": "L247", + "_origin": "ast", + "id": "research_stack_sources", + "community": 40, + "norm_label": "sources" + }, + { + "label": "SUMMARY.md", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_summary", + "community": 19, + "norm_label": "summary.md" + }, + { + "label": "Project Research Summary", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_summary_project_research_summary", + "community": 19, + "norm_label": "project research summary" + }, + { + "label": "Executive Summary", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L8", + "_origin": "ast", + "id": "research_summary_executive_summary", + "community": 19, + "norm_label": "executive summary" + }, + { + "label": "Key Findings", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L16", + "_origin": "ast", + "id": "research_summary_key_findings", + "community": 19, + "norm_label": "key findings" + }, + { + "label": "Recommended Stack", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L18", + "_origin": "ast", + "id": "research_summary_recommended_stack", + "community": 19, + "norm_label": "recommended stack" + }, + { + "label": "Expected Features", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L41", + "_origin": "ast", + "id": "research_summary_expected_features", + "community": 19, + "norm_label": "expected features" + }, + { + "label": "Architecture Approach", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L66", + "_origin": "ast", + "id": "research_summary_architecture_approach", + "community": 19, + "norm_label": "architecture approach" + }, + { + "label": "Critical Pitfalls", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L85", + "_origin": "ast", + "id": "research_summary_critical_pitfalls", + "community": 19, + "norm_label": "critical pitfalls" + }, + { + "label": "Implications for Roadmap", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L101", + "_origin": "ast", + "id": "research_summary_implications_for_roadmap", + "community": 19, + "norm_label": "implications for roadmap" + }, + { + "label": "Phase 1: Foundation + CalDAV Broker Spike", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L105", + "_origin": "ast", + "id": "research_summary_phase_1_foundation_caldav_broker_spike", + "community": 19, + "norm_label": "phase 1: foundation + caldav broker spike" + }, + { + "label": "Phase 2: Calendar Display", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L127", + "_origin": "ast", + "id": "research_summary_phase_2_calendar_display", + "community": 19, + "norm_label": "phase 2: calendar display" + }, + { + "label": "Phase 3: Event Write-Back + PWA Install", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L149", + "_origin": "ast", + "id": "research_summary_phase_3_event_write_back_pwa_install", + "community": 19, + "norm_label": "phase 3: event write-back + pwa install" + }, + { + "label": "Phase 4: Shared Lists + Live Sync", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L171", + "_origin": "ast", + "id": "research_summary_phase_4_shared_lists_live_sync", + "community": 19, + "norm_label": "phase 4: shared lists + live sync" + }, + { + "label": "Phase 5: Web Push Notifications", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L191", + "_origin": "ast", + "id": "research_summary_phase_5_web_push_notifications", + "community": 19, + "norm_label": "phase 5: web push notifications" + }, + { + "label": "Phase Ordering Rationale", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L213", + "_origin": "ast", + "id": "research_summary_phase_ordering_rationale", + "community": 19, + "norm_label": "phase ordering rationale" + }, + { + "label": "Research Flags", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L221", + "_origin": "ast", + "id": "research_summary_research_flags", + "community": 19, + "norm_label": "research flags" + }, + { + "label": "Confidence Assessment", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L233", + "_origin": "ast", + "id": "research_summary_confidence_assessment", + "community": 19, + "norm_label": "confidence assessment" + }, + { + "label": "Gaps to Address", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L244", + "_origin": "ast", + "id": "research_summary_gaps_to_address", + "community": 19, + "norm_label": "gaps to address" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L254", + "_origin": "ast", + "id": "research_summary_sources", + "community": 19, + "norm_label": "sources" + }, + { + "label": "Primary (HIGH confidence)", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L256", + "_origin": "ast", + "id": "research_summary_primary_high_confidence", + "community": 19, + "norm_label": "primary (high confidence)" + }, + { + "label": "Secondary (MEDIUM confidence)", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L264", + "_origin": "ast", + "id": "research_summary_secondary_medium_confidence", + "community": 19, + "norm_label": "secondary (medium confidence)" + }, + { + "label": "Tertiary (LOW confidence)", + "file_type": "document", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L271", + "_origin": "ast", + "id": "research_summary_tertiary_low_confidence", + "community": 19, + "norm_label": "tertiary (low confidence)" + }, + { + "label": "questions.md", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_questions", + "community": 103, + "norm_label": "questions.md" + }, + { + "label": "Research Questions", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L1", + "_origin": "ast", + "id": "research_questions_research_questions", + "community": 103, + "norm_label": "research questions" + }, + { + "label": "Open", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L3", + "_origin": "ast", + "id": "research_questions_open", + "community": 103, + "norm_label": "open" + }, + { + "label": "RQ-003 \u2014 Fastmail calendar API: JMAP vs CalDAV", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L5", + "_origin": "ast", + "id": "research_questions_rq_003_fastmail_calendar_api_jmap_vs_caldav", + "community": 103, + "norm_label": "rq-003 \u2014 fastmail calendar api: jmap vs caldav" + }, + { + "label": "Resolved", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L19", + "_origin": "ast", + "id": "research_questions_resolved", + "community": 103, + "norm_label": "resolved" + }, + { + "label": "RQ-001 \u2014 Vikunja MariaDB compatibility \u2014 SUPERSEDED", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L21", + "_origin": "ast", + "id": "research_questions_rq_001_vikunja_mariadb_compatibility_superseded", + "community": 103, + "norm_label": "rq-001 \u2014 vikunja mariadb compatibility \u2014 superseded" + }, + { + "label": "RQ-002 \u2014 CalDAV server: Radicale vs Baikal \u2014 SUPERSEDED", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L28", + "_origin": "ast", + "id": "research_questions_rq_002_caldav_server_radicale_vs_baikal_superseded", + "community": 103, + "norm_label": "rq-002 \u2014 caldav server: radicale vs baikal \u2014 superseded" + }, + { + "label": "Calendar host decision \u2014 RESOLVED", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L40", + "_origin": "ast", + "id": "research_questions_calendar_host_decision_resolved", + "community": 103, + "norm_label": "calendar host decision \u2014 resolved" + }, + { + "label": "Email scope \u2014 RESOLVED", + "file_type": "document", + "source_file": ".planning/research/questions.md", + "source_location": "L45", + "_origin": "ast", + "id": "research_questions_email_scope_resolved", + "community": 103, + "norm_label": "email scope \u2014 resolved" + }, + { + "label": "adopt-drizzle-migrations-workflow.md", + "file_type": "document", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L1", + "_origin": "ast", + "id": "pending_adopt_drizzle_migrations_workflow", + "community": 160, + "norm_label": "adopt-drizzle-migrations-workflow.md" + }, + { + "label": "Adopt drizzle generate+migrate workflow (retire db:push on MariaDB)", + "file_type": "document", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L7", + "_origin": "ast", + "id": "pending_adopt_drizzle_migrations_workflow_adopt_drizzle_generate_migrate_workflow_retire_db_push_on_mariadb", + "community": 160, + "norm_label": "adopt drizzle generate+migrate workflow (retire db:push on mariadb)" + }, + { + "label": "Goal", + "file_type": "document", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L21", + "_origin": "ast", + "id": "pending_adopt_drizzle_migrations_workflow_goal", + "community": 160, + "norm_label": "goal" + }, + { + "label": "Tasks", + "file_type": "document", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L28", + "_origin": "ast", + "id": "pending_adopt_drizzle_migrations_workflow_tasks", + "community": 160, + "norm_label": "tasks" + }, + { + "label": "kickoff-new-project.md", + "file_type": "document", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L1", + "_origin": "ast", + "id": "pending_kickoff_new_project", + "community": 161, + "norm_label": "kickoff-new-project.md" + }, + { + "label": "Kick off FamilySync with /gsd:new-project", + "file_type": "document", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L7", + "_origin": "ast", + "id": "pending_kickoff_new_project_kick_off_familysync_with_gsd_new_project", + "community": 161, + "norm_label": "kick off familysync with /gsd:new-project" + }, + { + "label": "Pre-work before running", + "file_type": "document", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L14", + "_origin": "ast", + "id": "pending_kickoff_new_project_pre_work_before_running", + "community": 161, + "norm_label": "pre-work before running" + }, + { + "label": "Context to bring into the session", + "file_type": "document", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L19", + "_origin": "ast", + "id": "pending_kickoff_new_project_context_to_bring_into_the_session", + "community": 161, + "norm_label": "context to bring into the session" + }, + { + "label": "CLAUDE.md", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L1", + "_origin": "ast", + "id": "claude", + "community": 11, + "norm_label": "claude.md" + }, + { + "label": "Project", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L3", + "_origin": "ast", + "id": "claude_project", + "community": 11, + "norm_label": "project" + }, + { + "label": "Constraints", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L11", + "_origin": "ast", + "id": "claude_constraints", + "community": 11, + "norm_label": "constraints" + }, + { + "label": "Technology Stack", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L27", + "_origin": "ast", + "id": "claude_technology_stack", + "community": 11, + "norm_label": "technology stack" + }, + { + "label": "Recommended Stack", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L29", + "_origin": "ast", + "id": "claude_recommended_stack", + "community": 11, + "norm_label": "recommended stack" + }, + { + "label": "Core Technologies", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L31", + "_origin": "ast", + "id": "claude_core_technologies", + "community": 11, + "norm_label": "core technologies" + }, + { + "label": "Supporting Libraries", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L43", + "_origin": "ast", + "id": "claude_supporting_libraries", + "community": 11, + "norm_label": "supporting libraries" + }, + { + "label": "Development Tools", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L60", + "_origin": "ast", + "id": "claude_development_tools", + "community": 11, + "norm_label": "development tools" + }, + { + "label": "Installation", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L69", + "_origin": "ast", + "id": "claude_installation", + "community": 11, + "norm_label": "installation" + }, + { + "label": "Backend", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L71", + "_origin": "ast", + "id": "claude_backend", + "community": 11, + "norm_label": "backend" + }, + { + "label": "Frontend", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L73", + "_origin": "ast", + "id": "claude_frontend", + "community": 11, + "norm_label": "frontend" + }, + { + "label": "Dev", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L75", + "_origin": "ast", + "id": "claude_dev", + "community": 11, + "norm_label": "dev" + }, + { + "label": "Calendar Integration: CalDAV, Not JMAP", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L77", + "_origin": "ast", + "id": "claude_calendar_integration_caldav_not_jmap", + "community": 11, + "norm_label": "calendar integration: caldav, not jmap" + }, + { + "label": "Backend Framework", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L88", + "_origin": "ast", + "id": "claude_backend_framework", + "community": 11, + "norm_label": "backend framework" + }, + { + "label": "React PWA Stack", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L99", + "_origin": "ast", + "id": "claude_react_pwa_stack", + "community": 11, + "norm_label": "react pwa stack" + }, + { + "label": "Authelia OIDC Integration", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L113", + "_origin": "ast", + "id": "claude_authelia_oidc_integration", + "community": 11, + "norm_label": "authelia oidc integration" + }, + { + "label": "Live List Sync", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L120", + "_origin": "ast", + "id": "claude_live_list_sync", + "community": 11, + "norm_label": "live list sync" + }, + { + "label": "Alternatives Considered", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L122", + "_origin": "ast", + "id": "claude_alternatives_considered", + "community": 11, + "norm_label": "alternatives considered" + }, + { + "label": "What NOT to Use", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L135", + "_origin": "ast", + "id": "claude_what_not_to_use", + "community": 11, + "norm_label": "what not to use" + }, + { + "label": "Version Compatibility", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L148", + "_origin": "ast", + "id": "claude_version_compatibility", + "community": 11, + "norm_label": "version compatibility" + }, + { + "label": "Open Questions Flagged for Phase Research", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L158", + "_origin": "ast", + "id": "claude_open_questions_flagged_for_phase_research", + "community": 11, + "norm_label": "open questions flagged for phase research" + }, + { + "label": "Sources", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L160", + "_origin": "ast", + "id": "claude_sources", + "community": 11, + "norm_label": "sources" + }, + { + "label": "Conventions", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L182", + "_origin": "ast", + "id": "claude_conventions", + "community": 11, + "norm_label": "conventions" + }, + { + "label": "Browser-based verification", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L184", + "_origin": "ast", + "id": "claude_browser_based_verification", + "community": 11, + "norm_label": "browser-based verification" + }, + { + "label": "Architecture", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L193", + "_origin": "ast", + "id": "claude_architecture", + "community": 11, + "norm_label": "architecture" + }, + { + "label": "Project Skills", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L200", + "_origin": "ast", + "id": "claude_project_skills", + "community": 11, + "norm_label": "project skills" + }, + { + "label": "GSD Workflow Enforcement", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L207", + "_origin": "ast", + "id": "claude_gsd_workflow_enforcement", + "community": 11, + "norm_label": "gsd workflow enforcement" + }, + { + "label": "Developer Profile", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": "L222", + "_origin": "ast", + "id": "claude_developer_profile", + "community": 11, + "norm_label": "developer profile" + }, + { + "label": "deployment.md", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L1", + "_origin": "ast", + "id": "docs_deployment", + "community": 53, + "norm_label": "deployment.md" + }, + { + "label": "FamilySync \u2014 Deployment & Live-Verification Runbook", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L1", + "_origin": "ast", + "id": "docs_deployment_familysync_deployment_live_verification_runbook", + "community": 53, + "norm_label": "familysync \u2014 deployment & live-verification runbook" + }, + { + "label": "Topology", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L20", + "_origin": "ast", + "id": "docs_deployment_topology", + "community": 53, + "norm_label": "topology" + }, + { + "label": "Prerequisites (both modes)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L50", + "_origin": "ast", + "id": "docs_deployment_prerequisites_both_modes", + "community": 53, + "norm_label": "prerequisites (both modes)" + }, + { + "label": "\u26a0\ufe0f Same-parent-domain requirement (Pitfall 1)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L58", + "_origin": "ast", + "id": "docs_deployment_same_parent_domain_requirement_pitfall_1", + "community": 53, + "norm_label": "\u26a0\ufe0f same-parent-domain requirement (pitfall 1)" + }, + { + "label": "Step 1 \u2014 Register the OIDC client in Authelia", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L66", + "_origin": "ast", + "id": "docs_deployment_step_1_register_the_oidc_client_in_authelia", + "community": 53, + "norm_label": "step 1 \u2014 register the oidc client in authelia" + }, + { + "label": "Step 2 \u2014 App environment (`.env`)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L105", + "_origin": "ast", + "id": "docs_deployment_step_2_app_environment_env", + "community": 53, + "norm_label": "step 2 \u2014 app environment (`.env`)" + }, + { + "label": "Step 3 \u2014 Apply the database schema", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L141", + "_origin": "ast", + "id": "docs_deployment_step_3_apply_the_database_schema", + "community": 53, + "norm_label": "step 3 \u2014 apply the database schema" + }, + { + "label": "Step 4 \u2014 Pangolin route + Newt connector", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L156", + "_origin": "ast", + "id": "docs_deployment_step_4_pangolin_route_newt_connector", + "community": 53, + "norm_label": "step 4 \u2014 pangolin route + newt connector" + }, + { + "label": "\u26a0\ufe0f SSE idle timeout (Phase 4 dependency, issue #1034)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L165", + "_origin": "ast", + "id": "docs_deployment_sse_idle_timeout_phase_4_dependency_issue_1034", + "community": 53, + "norm_label": "\u26a0\ufe0f sse idle timeout (phase 4 dependency, issue #1034)" + }, + { + "label": "Newt connector", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L172", + "_origin": "ast", + "id": "docs_deployment_newt_connector", + "community": 53, + "norm_label": "newt connector" + }, + { + "label": "Step 5 \u2014 Bring up the app", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L188", + "_origin": "ast", + "id": "docs_deployment_step_5_bring_up_the_app", + "community": 53, + "norm_label": "step 5 \u2014 bring up the app" + }, + { + "label": "Step 6 \u2014 Unraid production (Mode B only)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L199", + "_origin": "ast", + "id": "docs_deployment_step_6_unraid_production_mode_b_only", + "community": 53, + "norm_label": "step 6 \u2014 unraid production (mode b only)" + }, + { + "label": "Gate 2 \u2014 Live verification checklist (`01-HUMAN-UAT.md`)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L215", + "_origin": "ast", + "id": "docs_deployment_gate_2_live_verification_checklist_01_human_uat_md", + "community": 53, + "norm_label": "gate 2 \u2014 live verification checklist (`01-human-uat.md`)" + }, + { + "label": "Dev-auth bypass (Phase 2+ local development)", + "file_type": "document", + "source_file": "docs/deployment.md", + "source_location": "L241", + "_origin": "ast", + "id": "docs_deployment_dev_auth_bypass_phase_2_local_development", + "community": 53, + "norm_label": "dev-auth bypass (phase 2+ local development)" + } + ], + "links": [ + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/settings.local.json", + "source_location": "L2", + "weight": 1.0, + "source": "claude_settings_local", + "target": "claude_settings_local_permissions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/settings.local.json", + "source_location": "L3", + "weight": 1.0, + "source": "claude_settings_local_permissions", + "target": "claude_settings_local_permissions_allow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L23", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_blockers", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L12", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_completed_tasks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L34", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_context_notes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L27", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L24", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_human_actions_pending", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L33", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_next_action", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L4", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_phase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L6", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_phase_dir", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L5", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_phase_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L7", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L18", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_remaining_tasks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L11", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_stage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L10", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L8", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_task", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L3", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_timestamp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L9", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_total_tasks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L32", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_uncommitted_files", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/HANDOFF.json", + "source_location": "L2", + "weight": 1.0, + "source": "planning_handoff", + "target": "planning_handoff_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L81", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_agent_skills", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L6", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_brave_search", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L82", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_claude_md_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L3", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_commit_docs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L8", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_exa_search", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L7", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_firecrawl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L9", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_git", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L88", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_granularity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L92", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_graphify", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L76", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_hooks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L89", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_intel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L87", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L2", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_model_profile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L4", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_parallelization", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L80", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_phase_naming", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L83", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_plan_review", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L79", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_project_code", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L5", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_search_gitignored", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L49", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_ship", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L16", + "weight": 1.0, + "source": "planning_config", + "target": "planning_config_workflow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L10", + "weight": 1.0, + "source": "planning_config_git", + "target": "planning_config_git_branching_strategy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L11", + "weight": 1.0, + "source": "planning_config_git", + "target": "planning_config_git_create_tag", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L13", + "weight": 1.0, + "source": "planning_config_git", + "target": "planning_config_git_milestone_branch_template", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L12", + "weight": 1.0, + "source": "planning_config_git", + "target": "planning_config_git_phase_branch_template", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L14", + "weight": 1.0, + "source": "planning_config_git", + "target": "planning_config_git_quick_branch_template", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L26", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_ai_integration_phase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L21", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_auto_advance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L45", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_auto_chain_active", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L40", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_auto_prune_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L33", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_code_review", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L35", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_code_review_command", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L34", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_code_review_depth", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L31", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_discuss_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L28", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_human_verify_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L22", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_node_repair", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L23", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_node_repair_budget", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L20", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_nyquist_validation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L36", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_pattern_mapper", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L37", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_plan_bounce", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L39", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_plan_bounce_passes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L38", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_plan_bounce_script", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L18", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_plan_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L41", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_post_planning_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L17", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L30", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_research_before_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L43", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_security_asvs_level", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L44", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_security_block_on", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L42", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_security_enforcement", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L32", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_skip_discuss", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L27", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_tdd_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L29", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_text_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L24", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_ui_phase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L46", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_ui_review", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L25", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_ui_safety_gate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L47", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_use_worktrees", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L19", + "weight": 1.0, + "source": "planning_config_workflow", + "target": "planning_config_workflow_verifier", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L50", + "weight": 1.0, + "source": "planning_config_ship", + "target": "planning_config_ship_pr_body_sections", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L77", + "weight": 1.0, + "source": "planning_config_hooks", + "target": "planning_config_hooks_context_warnings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L84", + "weight": 1.0, + "source": "planning_config_plan_review", + "target": "planning_config_plan_review_source_grounding", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L85", + "weight": 1.0, + "source": "planning_config_plan_review", + "target": "planning_config_plan_review_source_grounding_authority", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L90", + "weight": 1.0, + "source": "planning_config_intel", + "target": "planning_config_intel_enabled", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/config.json", + "source_location": "L93", + "weight": 1.0, + "source": "planning_config_graphify", + "target": "planning_config_graphify_enabled", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".playwright/cli.config.json", + "source_location": "L2", + "weight": 1.0, + "source": "playwright_cli_config", + "target": "playwright_cli_config_browser", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".playwright/cli.config.json", + "source_location": "L3", + "weight": 1.0, + "source": "playwright_cli_config_browser", + "target": "playwright_cli_config_browser_browsername", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".playwright/cli.config.json", + "source_location": "L4", + "weight": 1.0, + "source": "playwright_cli_config_browser", + "target": "playwright_cli_config_browser_launchoptions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".playwright/cli.config.json", + "source_location": "L5", + "weight": 1.0, + "source": "playwright_cli_config_browser_launchoptions", + "target": "playwright_cli_config_launchoptions_channel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L17", + "weight": 1.0, + "source": "api_package", + "target": "api_package_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L29", + "weight": 1.0, + "source": "api_package", + "target": "api_package_devdependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L2", + "weight": 1.0, + "source": "api_package", + "target": "api_package_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L4", + "weight": 1.0, + "source": "api_package", + "target": "api_package_private", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L6", + "weight": 1.0, + "source": "api_package", + "target": "api_package_scripts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L5", + "weight": 1.0, + "source": "api_package", + "target": "api_package_type", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L3", + "weight": 1.0, + "source": "api_package", + "target": "api_package_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L8", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_build", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L14", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_db_generate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L15", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_db_migrate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L13", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_db_push", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L7", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_dev", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L9", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_start", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L10", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L11", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_test_watch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L12", + "weight": 1.0, + "source": "api_package_scripts", + "target": "api_package_scripts_typecheck", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L21", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_drizzle_orm", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L22", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_hono", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L18", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_hono_node_server", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L19", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_hono_oidc_auth", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L20", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_hono_zod_validator", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L23", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_ical_js", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L24", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_mysql2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L25", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_node_cron", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L26", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_tsdav", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L27", + "weight": 1.0, + "source": "api_package_dependencies", + "target": "api_package_dependencies_zod", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L31", + "weight": 1.0, + "source": "api_package_devdependencies", + "target": "api_package_devdependencies_drizzle_kit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L32", + "weight": 1.0, + "source": "api_package_devdependencies", + "target": "api_package_devdependencies_temporal_polyfill", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L30", + "weight": 1.0, + "source": "api_package_devdependencies", + "target": "api_package_devdependencies_types_node", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L33", + "weight": 1.0, + "source": "api_package_devdependencies", + "target": "api_package_devdependencies_typescript", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/package.json", + "source_location": "L34", + "weight": 1.0, + "source": "api_package_devdependencies", + "target": "api_package_devdependencies_vitest", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L45", + "weight": 1.0, + "source": "auth_devbypass", + "target": "auth_devbypass_contextvariablemap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L30", + "weight": 1.0, + "source": "auth_devbypass", + "target": "auth_devbypass_dev_user", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L58", + "weight": 1.0, + "source": "auth_devbypass", + "target": "auth_devbypass_devauthbypass", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L28", + "weight": 1.0, + "source": "auth_devbypass", + "target": "auth_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/devBypass.ts", + "source_location": "L28", + "weight": 1.0, + "source": "auth_devbypass", + "target": "auth_user_color_palette", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L38", + "weight": 1.0, + "source": "routes_events", + "target": "auth_devbypass", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L26", + "weight": 1.0, + "source": "routes_me", + "target": "auth_devbypass", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L11", + "weight": 1.0, + "source": "src_index", + "target": "auth_devbypass", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L11", + "weight": 1.0, + "source": "src_index", + "target": "auth_devbypass_devauthbypass", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L35", + "weight": 1.0, + "source": "routes_events", + "target": "auth_middleware", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L23", + "weight": 1.0, + "source": "routes_me", + "target": "auth_middleware", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L10", + "weight": 1.0, + "source": "src_index", + "target": "auth_middleware", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L35", + "weight": 1.0, + "source": "auth_user", + "target": "auth_user_claimstr", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L25", + "weight": 1.0, + "source": "auth_user", + "target": "auth_user_color_palette", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L56", + "weight": 1.0, + "source": "auth_user", + "target": "auth_user_derivedisplayname", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L79", + "weight": 1.0, + "source": "auth_user", + "target": "auth_user_upsertuser", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L12", + "weight": 1.0, + "source": "auth_user", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L12", + "weight": 1.0, + "source": "auth_user", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L13", + "weight": 1.0, + "source": "auth_user", + "target": "db_schema", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L13", + "weight": 1.0, + "source": "auth_user", + "target": "db_schema_users", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "auth_user_test", + "target": "auth_user", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L36", + "weight": 1.0, + "source": "routes_events", + "target": "auth_user", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L24", + "weight": 1.0, + "source": "routes_me", + "target": "auth_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "auth_user_test", + "target": "auth_user_color_palette", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/auth/user.ts", + "source_location": "L62", + "weight": 1.0, + "source": "auth_user_derivedisplayname", + "target": "auth_user_claimstr", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L36", + "weight": 1.0, + "source": "routes_events", + "target": "auth_user_derivedisplayname", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L76", + "weight": 1.0, + "source": "routes_events_resolveuserid", + "target": "auth_user_derivedisplayname", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L24", + "weight": 1.0, + "source": "routes_me", + "target": "auth_user_derivedisplayname", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "auth_user_test", + "target": "auth_user_upsertuser", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L36", + "weight": 1.0, + "source": "routes_events", + "target": "auth_user_upsertuser", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L78", + "weight": 1.0, + "source": "routes_events_resolveuserid", + "target": "auth_user_upsertuser", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L24", + "weight": 1.0, + "source": "routes_me", + "target": "auth_user_upsertuser", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/client.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_client", + "target": "broker_client_createfastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/client.ts", + "source_location": "L15", + "weight": 1.0, + "source": "broker_client", + "target": "broker_client_fastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L36", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/spike.ts", + "source_location": "L27", + "weight": 1.0, + "source": "broker_spike", + "target": "broker_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_sync", + "target": "broker_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L27", + "weight": 1.0, + "source": "broker_write", + "target": "broker_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L36", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_client_fastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_sync", + "target": "broker_client_fastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L27", + "weight": 1.0, + "source": "broker_write", + "target": "broker_client_fastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L31", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_client_createfastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L128", + "weight": 1.0, + "source": "broker_outboxworker_loadclientforuser", + "target": "broker_client_createfastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_client_createfastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L43", + "weight": 1.0, + "source": "broker_poller_runpoll", + "target": "broker_client_createfastmailclient" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/spike.ts", + "source_location": "L27", + "weight": 1.0, + "source": "broker_spike", + "target": "broker_client_createfastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/spike.ts", + "source_location": "L43", + "weight": 1.0, + "source": "broker_spike_main", + "target": "broker_client_createfastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L60", + "weight": 1.0, + "source": "broker_crypto", + "target": "broker_crypto_decryptpassword", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L31", + "weight": 1.0, + "source": "broker_crypto", + "target": "broker_crypto_encryptedpayload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L42", + "weight": 1.0, + "source": "broker_crypto", + "target": "broker_crypto_encryptpassword", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L20", + "weight": 1.0, + "source": "broker_crypto", + "target": "broker_crypto_getkey", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/crypto.test.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_crypto_test_getcrypto", + "target": "broker_crypto", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L32", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_crypto", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_crypto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L61", + "weight": 1.0, + "source": "broker_crypto_decryptpassword", + "target": "broker_crypto_getkey", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/crypto.ts", + "source_location": "L43", + "weight": 1.0, + "source": "broker_crypto_encryptpassword", + "target": "broker_crypto_getkey", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L32", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_crypto_decryptpassword", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L127", + "weight": 1.0, + "source": "broker_outboxworker_loadclientforuser", + "target": "broker_crypto_decryptpassword", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_crypto_decryptpassword", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L41", + "weight": 1.0, + "source": "broker_poller_runpoll", + "target": "broker_crypto_decryptpassword" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L37", + "weight": 1.0, + "source": "broker_expand", + "target": "broker_expand_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L167", + "weight": 1.0, + "source": "broker_expand", + "target": "broker_expand_expandoccurrences", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L109", + "weight": 1.0, + "source": "broker_expand", + "target": "broker_expand_formatutcoffset", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L99", + "weight": 1.0, + "source": "broker_expand", + "target": "broker_expand_makeoccurrenceid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L73", + "weight": 1.0, + "source": "broker_expand", + "target": "broker_expand_occurrencemeta", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L126", + "weight": 1.0, + "source": "broker_expand", + "target": "broker_expand_serializetime", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_expand_test", + "target": "broker_expand", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L33", + "weight": 1.0, + "source": "routes_events", + "target": "broker_expand", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L242", + "weight": 1.0, + "source": "broker_expand_expandoccurrences", + "target": "broker_expand_makeoccurrenceid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L155", + "weight": 1.0, + "source": "broker_expand_serializetime", + "target": "broker_expand_formatutcoffset", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/expand.ts", + "source_location": "L239", + "weight": 1.0, + "source": "broker_expand_expandoccurrences", + "target": "broker_expand_serializetime", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_expand_test", + "target": "broker_expand_expandoccurrences", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L33", + "weight": 1.0, + "source": "routes_events", + "target": "broker_expand_expandoccurrences", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L46", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_backoff_seconds", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L185", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_dispatchresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L193", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_dispatchrow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L52", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_hard_fail_statuses", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L112", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_loadclientforuser", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L84", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_outboxpayloadfields", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L70", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_outboxpayloadschema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L183", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_outboxrow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L440", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_runoutboxdrain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L625", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_startoutboxworker", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L49", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_transient_statuses", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L143", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_outboxworker_triggertargetedresync", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L33", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_sync", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L33", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_sync_synccalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L35", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_vevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L35", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_vevent_buildveventstring", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L35", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_vevent_extractrrulestring", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L35", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_vevent_rrule_presets", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L34", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_write", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L34", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_write_createcalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L34", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_write_deletecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L34", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "broker_write_updatecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L29", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L29", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L30", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_schema", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L30", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_schema_calendarevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L30", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_schema_calendaroutbox", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L30", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_schema_calendars", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L30", + "weight": 1.0, + "source": "broker_outboxworker", + "target": "db_schema_membercredentials", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L13", + "weight": 1.0, + "source": "src_index", + "target": "broker_outboxworker", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L197", + "weight": 1.0, + "source": "broker_outboxworker_dispatchrow", + "target": "broker_outboxworker_loadclientforuser", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L152", + "weight": 1.0, + "source": "broker_outboxworker_triggertargetedresync", + "target": "broker_outboxworker_loadclientforuser", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L548", + "weight": 1.0, + "source": "broker_outboxworker_runoutboxdrain", + "target": "broker_outboxworker_triggertargetedresync", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L171", + "weight": 1.0, + "source": "broker_outboxworker_triggertargetedresync", + "target": "broker_sync_synccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L287", + "weight": 1.0, + "source": "broker_outboxworker_dispatchrow", + "target": "broker_vevent_buildveventstring", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L284", + "weight": 1.0, + "source": "broker_outboxworker_dispatchrow", + "target": "broker_vevent_extractrrulestring", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L357", + "weight": 1.0, + "source": "broker_outboxworker_dispatchrow", + "target": "broker_write_createcalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L211", + "weight": 1.0, + "source": "broker_outboxworker_dispatchrow", + "target": "broker_write_deletecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L298", + "weight": 1.0, + "source": "broker_outboxworker_dispatchrow", + "target": "broker_write_updatecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/outboxWorker.ts", + "source_location": "L527", + "weight": 1.0, + "source": "broker_outboxworker_runoutboxdrain", + "target": "broker_outboxworker_dispatchrow", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_runoutboxdrain", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L13", + "weight": 1.0, + "source": "src_index", + "target": "broker_outboxworker_startoutboxworker", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L35", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_poller_runpoll", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L83", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_poller_startbrokerpoller", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L24", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_sync", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L24", + "weight": 1.0, + "source": "broker_poller", + "target": "broker_sync_synccalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L20", + "weight": 1.0, + "source": "broker_poller", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L20", + "weight": 1.0, + "source": "broker_poller", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_poller", + "target": "db_schema", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_poller", + "target": "db_schema_calendars", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_poller", + "target": "db_schema_membercredentials", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L12", + "weight": 1.0, + "source": "src_index", + "target": "broker_poller", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/api/src/broker/poller.ts", + "source_location": "L67", + "weight": 1.0, + "source": "broker_poller_runpoll", + "target": "broker_sync_synccalendar" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L12", + "weight": 1.0, + "source": "src_index", + "target": "broker_poller_startbrokerpoller", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/spike.ts", + "source_location": "L29", + "weight": 1.0, + "source": "broker_spike", + "target": "broker_spike_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L33", + "weight": 1.0, + "source": "broker_sync", + "target": "broker_sync_synccalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_sync", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_sync", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_sync", + "target": "db_schema", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_sync", + "target": "db_schema_calendarevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/sync.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_sync", + "target": "db_schema_calendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L85", + "weight": 1.0, + "source": "broker_vevent", + "target": "broker_vevent_buildveventstring", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L63", + "weight": 1.0, + "source": "broker_vevent", + "target": "broker_vevent_extractrrulestring", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_vevent", + "target": "broker_vevent_neweventparams", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/vevent.ts", + "source_location": "L49", + "weight": 1.0, + "source": "broker_vevent", + "target": "broker_vevent_rrule_presets", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/vevent.test.ts", + "source_location": "L20", + "weight": 1.0, + "source": "broker_vevent_test", + "target": "broker_vevent", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L34", + "weight": 1.0, + "source": "routes_events", + "target": "broker_vevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L34", + "weight": 1.0, + "source": "routes_events", + "target": "broker_vevent_extractrrulestring", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/vevent.test.ts", + "source_location": "L20", + "weight": 1.0, + "source": "broker_vevent_test", + "target": "broker_vevent_buildveventstring", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L39", + "weight": 1.0, + "source": "broker_write", + "target": "broker_write_createcalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L96", + "weight": 1.0, + "source": "broker_write", + "target": "broker_write_deletecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/broker/write.ts", + "source_location": "L62", + "weight": 1.0, + "source": "broker_write", + "target": "broker_write_updatecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_write_test", + "target": "broker_write", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_write_test", + "target": "broker_write_createcalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_write_test", + "target": "broker_write_updatecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L19", + "weight": 1.0, + "source": "broker_write_test", + "target": "broker_write_deletecalendarevent", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L18", + "weight": 1.0, + "source": "auth_user_test", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/client.ts", + "source_location": "L16", + "weight": 1.0, + "source": "db_client", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/client.ts", + "source_location": "L6", + "weight": 1.0, + "source": "db_client", + "target": "db_client_pool", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/client.ts", + "source_location": "L4", + "weight": 1.0, + "source": "db_client", + "target": "db_schema", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L31", + "weight": 1.0, + "source": "routes_events", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/health.ts", + "source_location": "L2", + "weight": 1.0, + "source": "routes_health", + "target": "db_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L18", + "weight": 1.0, + "source": "auth_user_test", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L31", + "weight": 1.0, + "source": "routes_events", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/health.ts", + "source_location": "L2", + "weight": 1.0, + "source": "routes_health", + "target": "db_client_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L96", + "weight": 1.0, + "source": "db_schema", + "target": "db_schema_calendarevents", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L134", + "weight": 1.0, + "source": "db_schema", + "target": "db_schema_calendaroutbox", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L61", + "weight": 1.0, + "source": "db_schema", + "target": "db_schema_calendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L40", + "weight": 1.0, + "source": "db_schema", + "target": "db_schema_membercredentials", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/db/schema.ts", + "source_location": "L19", + "weight": 1.0, + "source": "db_schema", + "target": "db_schema_users", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L32", + "weight": 1.0, + "source": "routes_events", + "target": "db_schema", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L32", + "weight": 1.0, + "source": "routes_events", + "target": "db_schema_users", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L32", + "weight": 1.0, + "source": "routes_events", + "target": "db_schema_calendars", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L32", + "weight": 1.0, + "source": "routes_events", + "target": "db_schema_calendarevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L32", + "weight": 1.0, + "source": "routes_events", + "target": "db_schema_calendaroutbox", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L8", + "weight": 1.0, + "source": "src_index", + "target": "routes_events", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L8", + "weight": 1.0, + "source": "src_index", + "target": "routes_events_eventsrouter", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L6", + "weight": 1.0, + "source": "src_index", + "target": "routes_health", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L6", + "weight": 1.0, + "source": "src_index", + "target": "routes_health_healthrouter", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L7", + "weight": 1.0, + "source": "src_index", + "target": "routes_me", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L7", + "weight": 1.0, + "source": "src_index", + "target": "routes_me_merouter", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L9", + "weight": 1.0, + "source": "src_index", + "target": "routes_sse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L9", + "weight": 1.0, + "source": "src_index", + "target": "routes_sse_sserouter", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L15", + "weight": 1.0, + "source": "src_index", + "target": "src_index_app", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/index.ts", + "source_location": "L92", + "weight": 1.0, + "source": "src_index", + "target": "src_index_ismainmodule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L100", + "weight": 1.0, + "source": "routes_events", + "target": "routes_events_eventfieldsschema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L87", + "weight": 1.0, + "source": "routes_events", + "target": "routes_events_eventsqueryschema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L40", + "weight": 1.0, + "source": "routes_events", + "target": "routes_events_eventsrouter", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L63", + "weight": 1.0, + "source": "routes_events", + "target": "routes_events_resolveuserid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/events.ts", + "source_location": "L112", + "weight": 1.0, + "source": "routes_events", + "target": "routes_events_syncstatusqueryschema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/health.ts", + "source_location": "L5", + "weight": 1.0, + "source": "routes_health", + "target": "routes_health_healthrouter", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/me.ts", + "source_location": "L28", + "weight": 1.0, + "source": "routes_me", + "target": "routes_me_merouter", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/src/routes/sse.ts", + "source_location": "L21", + "weight": 1.0, + "source": "routes_sse", + "target": "routes_sse_sserouter", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L38", + "weight": 1.0, + "source": "auth_user_test", + "target": "auth_user_test_makeinsertchain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L27", + "weight": 1.0, + "source": "auth_user_test", + "target": "auth_user_test_makeselectchain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/auth/user.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "auth_user_test", + "target": "auth_user_test_mockdb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/crypto.test.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_crypto_test", + "target": "broker_crypto_test_getcrypto", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "broker_expand_test", + "target": "broker_expand_test_dirname", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_expand_test", + "target": "broker_expand_test_fixtures", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/expand.test.ts", + "source_location": "L24", + "weight": 1.0, + "source": "broker_expand_test", + "target": "broker_expand_test_loadfixture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L96", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_default_form_payload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L58", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_fake_cred_row", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L123", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_makeresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L104", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_makerow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L55", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_mockpendingrows", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L31", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_mockupdateset_mockupdate_mockwherepending_mockwherecalevents_mockfromfn_mockselectfn_mockdecryptpassword", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/outboxWorker.test.ts", + "source_location": "L128", + "weight": 1.0, + "source": "broker_outboxworker_test", + "target": "broker_outboxworker_test_wiremockchain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L25", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockcalendarsselectresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L63", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockcreatefastmailclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L26", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockcredentialsselectresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L62", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockfetchcalendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L40", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L39", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockselectfrom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L37", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockselectlimit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L38", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mockselectwhere", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/poller.test.ts", + "source_location": "L13", + "weight": 1.0, + "source": "broker_poller_test", + "target": "broker_poller_test_mocksynccalendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L31", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockdelete", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L30", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockdeletewhere", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L27", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockfrom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L24", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockinsert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L25", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mocklimit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L22", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockonduplicatekeyupdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L28", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L23", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockvalues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L26", + "weight": 1.0, + "source": "broker_sync_test", + "target": "broker_sync_test_mockwhere", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/sync.test.ts", + "source_location": "L14", + "weight": 1.0, + "source": "broker_sync_test", + "target": "helpers_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/broker/write.test.ts", + "source_location": "L25", + "weight": 1.0, + "source": "broker_write_test", + "target": "broker_write_test_makemockresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/helpers/db.ts", + "source_location": "L19", + "weight": 1.0, + "source": "helpers_db", + "target": "helpers_db_createmockdb", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/routes/events.test.ts", + "source_location": "L23", + "weight": 1.0, + "source": "routes_events_test", + "target": "helpers_db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/routes/login.test.ts", + "source_location": "L42", + "weight": 1.0, + "source": "routes_login_test", + "target": "routes_login_test_oidcmiddlewarespy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tests/routes/me.test.ts", + "source_location": "L44", + "weight": 1.0, + "source": "routes_me_test", + "target": "routes_me_test_oidcmiddlewarespy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L2", + "weight": 1.0, + "source": "api_tsconfig", + "target": "api_tsconfig_compileroptions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L19", + "weight": 1.0, + "source": "api_tsconfig", + "target": "api_tsconfig_exclude", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L18", + "weight": 1.0, + "source": "api_tsconfig", + "target": "api_tsconfig_include", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L14", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_declaration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L15", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_declarationmap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L10", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_esmoduleinterop", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L12", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_forceconsistentcasinginfilenames", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L6", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_lib", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L4", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_module", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L5", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_moduleresolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L7", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_outdir", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L13", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_resolvejsonmodule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L8", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_rootdir", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L11", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_skiplibcheck", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L16", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_sourcemap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L9", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_strict", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/api/tsconfig.json", + "source_location": "L3", + "weight": 1.0, + "source": "api_tsconfig_compileroptions", + "target": "api_tsconfig_compileroptions_target", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L13", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L29", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_devdependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L2", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L4", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_private", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L6", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_scripts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L5", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_type", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L3", + "weight": 1.0, + "source": "pwa_package", + "target": "pwa_package_version", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L8", + "weight": 1.0, + "source": "pwa_package_scripts", + "target": "pwa_package_scripts_build", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L7", + "weight": 1.0, + "source": "pwa_package_scripts", + "target": "pwa_package_scripts_dev", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L9", + "weight": 1.0, + "source": "pwa_package_scripts", + "target": "pwa_package_scripts_preview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L11", + "weight": 1.0, + "source": "pwa_package_scripts", + "target": "pwa_package_scripts_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L10", + "weight": 1.0, + "source": "pwa_package_scripts", + "target": "pwa_package_scripts_typecheck", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L21", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_ical_js", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L22", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_lucide_react", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L23", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_react", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L24", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_react_dom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L14", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_schedule_x_calendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L15", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_schedule_x_calendar_controls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L16", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_schedule_x_event_modal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L17", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_schedule_x_events_service", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L18", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_schedule_x_react", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L19", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_schedule_x_theme_default", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L20", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_tanstack_react_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L25", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_temporal_polyfill", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L26", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_vite_plugin_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L27", + "weight": 1.0, + "source": "pwa_package_dependencies", + "target": "pwa_package_dependencies_zustand", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L35", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_jsdom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L30", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_testing_library_jest_dom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L31", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_testing_library_react", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L32", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_types_react", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L33", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_types_react_dom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L36", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_typescript", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L37", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_vite", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L34", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_vitejs_plugin_react", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/package.json", + "source_location": "L38", + "weight": 1.0, + "source": "pwa_package_devdependencies", + "target": "pwa_package_devdependencies_vitest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/App.tsx", + "source_location": "L1", + "weight": 1.0, + "source": "src_app", + "target": "components_calendarshell_calendarshell", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/App.tsx", + "source_location": "L3", + "weight": 1.0, + "source": "src_app", + "target": "src_app_app", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L71", + "weight": 1.0, + "source": "api_client", + "target": "api_client_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L173", + "weight": 1.0, + "source": "api_client", + "target": "api_client_createevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L136", + "weight": 1.0, + "source": "api_client", + "target": "api_client_createeventpayload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L151", + "weight": 1.0, + "source": "api_client", + "target": "api_client_createeventresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L218", + "weight": 1.0, + "source": "api_client", + "target": "api_client_deleteevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L106", + "weight": 1.0, + "source": "api_client", + "target": "api_client_fetchevents", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L28", + "weight": 1.0, + "source": "api_client", + "target": "api_client_fetchme", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L254", + "weight": 1.0, + "source": "api_client", + "target": "api_client_fetchsyncstatus", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L273", + "weight": 1.0, + "source": "api_client", + "target": "api_client_fetchwritablecalendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L24", + "weight": 1.0, + "source": "api_client", + "target": "api_client_meresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L18", + "weight": 1.0, + "source": "api_client", + "target": "api_client_meuser", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L93", + "weight": 1.0, + "source": "api_client", + "target": "api_client_occurrencesresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L130", + "weight": 1.0, + "source": "api_client", + "target": "api_client_recurrencepreset", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L241", + "weight": 1.0, + "source": "api_client", + "target": "api_client_syncstatus", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L235", + "weight": 1.0, + "source": "api_client", + "target": "api_client_syncstatusvalue", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L194", + "weight": 1.0, + "source": "api_client", + "target": "api_client_updateevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/api/client.ts", + "source_location": "L160", + "weight": 1.0, + "source": "api_client", + "target": "api_client_writablecalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L44", + "weight": 1.0, + "source": "components_calendarshell", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L76", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L29", + "weight": 1.0, + "source": "components_deleteconfirmationdialog", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L29", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L48", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L42", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L85", + "weight": 1.0, + "source": "components_eventform_test", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L27", + "weight": 1.0, + "source": "components_syncstatetoast", + "target": "api_client", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L44", + "weight": 1.0, + "source": "components_calendarshell", + "target": "api_client_fetchme", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L76", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "api_client_fetchme", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L29", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "api_client_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L48", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "api_client_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L42", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L84", + "weight": 1.0, + "source": "components_eventform_test", + "target": "api_client_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L44", + "weight": 1.0, + "source": "components_calendarshell", + "target": "api_client_fetchevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L76", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "api_client_fetchevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L35", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client_recurrencepreset", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L35", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client_createeventpayload", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L85", + "weight": 1.0, + "source": "components_eventform_test", + "target": "api_client_writablecalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L35", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client_createevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L35", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client_updateevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L29", + "weight": 1.0, + "source": "components_deleteconfirmationdialog", + "target": "api_client_deleteevent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L27", + "weight": 1.0, + "source": "components_syncstatetoast", + "target": "api_client_syncstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L27", + "weight": 1.0, + "source": "components_syncstatetoast", + "target": "api_client_fetchsyncstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L35", + "weight": 1.0, + "source": "components_eventform", + "target": "api_client_fetchwritablecalendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L22", + "weight": 1.0, + "source": "components_appnav", + "target": "components_appnav_appnav", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L16", + "weight": 1.0, + "source": "components_appnav", + "target": "components_appnav_appnavprops", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L106", + "weight": 1.0, + "source": "components_appnav", + "target": "components_appnav_desktopnav", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L33", + "weight": 1.0, + "source": "components_appnav", + "target": "components_appnav_phonenav", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L14", + "weight": 1.0, + "source": "components_appnav", + "target": "components_colorlegend_colorlegend", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/AppNav.tsx", + "source_location": "L14", + "weight": 1.0, + "source": "components_appnav", + "target": "components_colorlegend_legendmember", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L53", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_appnav_appnav", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L78", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "components_calendarshell_calendarshell", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L98", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "components_calendarshell_test_allday_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L116", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "components_calendarshell_test_makequeryclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L39", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "components_calendarshell_test_mockeventsserviceset", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L128", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "components_calendarshell_test_renderwithclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L82", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "components_calendarshell_test_timed_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L77", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "lib_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L77", + "weight": 1.0, + "source": "components_calendarshell_test", + "target": "lib_hydrateevents_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L129", + "weight": 1.0, + "source": "components_calendarshell_test_renderwithclient", + "target": "components_calendarshell_test_makequeryclient", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "apps/pwa/src/components/CalendarShell.test.tsx", + "source_location": "L130", + "weight": 1.0, + "source": "components_calendarshell_test_renderwithclient", + "target": "components_errorboundary_errorboundary_render" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L75", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_calendarshell_calendarshell", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L69", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_calendarshell_isphone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L64", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_calendarshell_resolvedefaultview", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L54", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_colorlegend_colorlegend", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L51", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_deleteconfirmationdialog_deleteconfirmationdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L49", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_eventdetailpopover_eventdetailpopover", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L50", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_eventform_eventform", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L56", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_installprompt_installprompt", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L55", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_skeletoncalendar_skeletoncalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L52", + "weight": 1.0, + "source": "components_calendarshell", + "target": "components_syncstatetoast_syncstatetoast", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L47", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_calendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L47", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_calendarconfig_buildcalendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L45", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L45", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_hydrateevents_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L46", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_loginredirect", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L46", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_loginredirect_clearloginredirect", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L46", + "weight": 1.0, + "source": "components_calendarshell", + "target": "lib_loginredirect_mayberedirecttologin", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L48", + "weight": 1.0, + "source": "components_calendarshell", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L48", + "weight": 1.0, + "source": "components_calendarshell", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L137", + "weight": 1.0, + "source": "components_calendarshell_calendarshell", + "target": "components_calendarshell_resolvedefaultview", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L216", + "weight": 1.0, + "source": "components_calendarshell_calendarshell", + "target": "components_calendarshell_isphone", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/pwa/src/components/CalendarShell.tsx", + "source_location": "L79", + "weight": 1.0, + "source": "components_calendarshell_calendarshell", + "target": "store_calendarstore_usecalendarstore" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L28", + "weight": 1.0, + "source": "components_colorlegend", + "target": "components_colorlegend_colorlegend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L24", + "weight": 1.0, + "source": "components_colorlegend", + "target": "components_colorlegend_colorlegendprops", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L18", + "weight": 1.0, + "source": "components_colorlegend", + "target": "components_colorlegend_legendmember", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ColorLegend.tsx", + "source_location": "L58", + "weight": 1.0, + "source": "components_colorlegend", + "target": "components_colorlegend_legendrow", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L58", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_test", + "target": "components_deleteconfirmationdialog_deleteconfirmationdialog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L62", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_test", + "target": "components_deleteconfirmationdialog_test_makequeryclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L23", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_test", + "target": "components_deleteconfirmationdialog_test_mockdeleteevent_mocksetdeletedialog_mocksetlastsynceduid_mocksetopeneventid_mockdeletedialogopen_mockdeletedialoguid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L66", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_test", + "target": "components_deleteconfirmationdialog_test_renderdialog", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L67", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_test_renderdialog", + "target": "components_deleteconfirmationdialog_test_makequeryclient", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.test.tsx", + "source_location": "L68", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_test_renderdialog", + "target": "components_errorboundary_errorboundary_render" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L33", + "weight": 1.0, + "source": "components_deleteconfirmationdialog", + "target": "components_deleteconfirmationdialog_deleteconfirmationdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L28", + "weight": 1.0, + "source": "components_deleteconfirmationdialog", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L28", + "weight": 1.0, + "source": "components_deleteconfirmationdialog", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/pwa/src/components/DeleteConfirmationDialog.tsx", + "source_location": "L34", + "weight": 1.0, + "source": "components_deleteconfirmationdialog_deleteconfirmationdialog", + "target": "store_calendarstore_usecalendarstore" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EmptyState.tsx", + "source_location": "L15", + "weight": 1.0, + "source": "components_emptystate", + "target": "components_emptystate_emptystate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L21", + "weight": 1.0, + "source": "components_errorboundary", + "target": "components_errorboundary_errorboundary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L12", + "weight": 1.0, + "source": "components_errorboundary", + "target": "components_errorboundary_errorboundaryprops", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L16", + "weight": 1.0, + "source": "components_errorboundary", + "target": "components_errorboundary_errorboundarystate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L28", + "weight": 1.0, + "source": "components_errorboundary_errorboundary", + "target": "components_errorboundary_errorboundary_componentdidcatch", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L24", + "weight": 1.0, + "source": "components_errorboundary_errorboundary", + "target": "components_errorboundary_errorboundary_getderivedstatefromerror", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/ErrorBoundary.tsx", + "source_location": "L34", + "weight": 1.0, + "source": "components_errorboundary_errorboundary", + "target": "components_errorboundary_errorboundary_render", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/main.tsx", + "source_location": "L15", + "weight": 1.0, + "source": "src_main", + "target": "components_errorboundary_errorboundary", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L121", + "weight": 1.0, + "source": "components_eventdetailpopover_test_renderpopover", + "target": "components_errorboundary_errorboundary_render" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L158", + "weight": 1.0, + "source": "components_eventform_test_renderform", + "target": "components_errorboundary_errorboundary_render" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L59", + "weight": 1.0, + "source": "components_syncstatetoast_test_rendertoast", + "target": "components_errorboundary_errorboundary_render" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L95", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "components_eventdetailpopover_eventdetailpopover", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L76", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "components_eventdetailpopover_test_allday_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L22", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "components_eventdetailpopover_test_mocksetopeneventid_mockseteventform_mocksetdeletedialog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L67", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "components_eventdetailpopover_test_occurrence_with_html", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L100", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "components_eventdetailpopover_test_renderpopover", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L50", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "components_eventdetailpopover_test_timed_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L96", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.test.tsx", + "source_location": "L96", + "weight": 1.0, + "source": "components_eventdetailpopover_test", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L108", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "components_eventdetailpopover_eventdetailpopover", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L57", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "components_eventdetailpopover_formatdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L34", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "components_eventdetailpopover_schedulexeventmodalprops", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L28", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L28", + "weight": 1.0, + "source": "components_eventdetailpopover", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L303", + "weight": 1.0, + "source": "components_eventdetailpopover_eventdetailpopover", + "target": "components_eventdetailpopover_formatdatetime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/pwa/src/components/EventDetailPopover.tsx", + "source_location": "L109", + "weight": 1.0, + "source": "components_eventdetailpopover_eventdetailpopover", + "target": "store_calendarstore_usecalendarstore" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L115", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_eventform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L96", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_edit_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L500", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_late_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L40", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_mockseteventform_mocksetlastsynceduid_mockcreateevent_mockupdateevent_mockfetchwritablecalendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L87", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_one_calendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L475", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_recurring_occurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L120", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_renderform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L91", + "weight": 1.0, + "source": "components_eventform_test", + "target": "components_eventform_test_two_calendars", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L116", + "weight": 1.0, + "source": "components_eventform_test", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.test.tsx", + "source_location": "L116", + "weight": 1.0, + "source": "components_eventform_test", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L158", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_eventform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L86", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_exclusiveendtoinclusivedate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L143", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_initformdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L55", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_isphonebreakpoint", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L107", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_parsedatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L60", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_readlastcalendarurl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L69", + "weight": 1.0, + "source": "components_eventform", + "target": "components_eventform_writelastcalendarurl", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L43", + "weight": 1.0, + "source": "components_eventform", + "target": "lib_eventdatetime", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L43", + "weight": 1.0, + "source": "components_eventform", + "target": "lib_eventdatetime_serializeeventdatetime", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L34", + "weight": 1.0, + "source": "components_eventform", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L34", + "weight": 1.0, + "source": "components_eventform", + "target": "store_calendarstore_todayiso", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L34", + "weight": 1.0, + "source": "components_eventform", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L437", + "weight": 1.0, + "source": "components_eventform_eventform", + "target": "components_eventform_isphonebreakpoint", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L199", + "weight": 1.0, + "source": "components_eventform_eventform", + "target": "components_eventform_exclusiveendtoinclusivedate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L149", + "weight": 1.0, + "source": "components_eventform_initformdatetime", + "target": "components_eventform_parsedatetime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L132", + "weight": 1.0, + "source": "components_eventform_parsedatetime", + "target": "store_calendarstore_todayiso", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L192", + "weight": 1.0, + "source": "components_eventform_eventform", + "target": "components_eventform_initformdatetime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L148", + "weight": 1.0, + "source": "components_eventform_initformdatetime", + "target": "store_calendarstore_todayiso", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/pwa/src/components/EventForm.tsx", + "source_location": "L159", + "weight": 1.0, + "source": "components_eventform_eventform", + "target": "store_calendarstore_usecalendarstore" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L20", + "weight": 1.0, + "source": "components_installprompt_test", + "target": "components_installprompt_isiossafarinonstandalone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L33", + "weight": 1.0, + "source": "components_installprompt_test", + "target": "components_installprompt_test_setstandalone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L25", + "weight": 1.0, + "source": "components_installprompt_test", + "target": "components_installprompt_test_setuseragent", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.test.tsx", + "source_location": "L20", + "weight": 1.0, + "source": "components_installprompt_test", + "target": "components_installprompt_useandroidinstallprompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L63", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_beforeinstallpromptevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L300", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_installprompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L109", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_ios_steps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L54", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_isinstalled", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L39", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_isiossafarinonstandalone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L292", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_persistdismissed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L284", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_readdismissed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L76", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_useandroidinstallprompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L121", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_walkthroughsheet", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L117", + "weight": 1.0, + "source": "components_installprompt", + "target": "components_installprompt_walkthroughsheetprops", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L321", + "weight": 1.0, + "source": "components_installprompt_installprompt", + "target": "components_installprompt_isiossafarinonstandalone", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/InstallPrompt.tsx", + "source_location": "L303", + "weight": 1.0, + "source": "components_installprompt_installprompt", + "target": "components_installprompt_useandroidinstallprompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L94", + "weight": 1.0, + "source": "components_skeletoncalendar", + "target": "components_skeletoncalendar_agendaskeleton", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L47", + "weight": 1.0, + "source": "components_skeletoncalendar", + "target": "components_skeletoncalendar_monthskeleton", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L22", + "weight": 1.0, + "source": "components_skeletoncalendar", + "target": "components_skeletoncalendar_shimmerstyle", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L30", + "weight": 1.0, + "source": "components_skeletoncalendar", + "target": "components_skeletoncalendar_skeletoncalendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L17", + "weight": 1.0, + "source": "components_skeletoncalendar", + "target": "components_skeletoncalendar_skeletoncalendarprops", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SkeletonCalendar.tsx", + "source_location": "L15", + "weight": 1.0, + "source": "components_skeletoncalendar", + "target": "components_skeletoncalendar_skeletonvariant", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L19", + "weight": 1.0, + "source": "components_syncstatetoast_test", + "target": "components_syncstatetoast_syncstatetoast", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L50", + "weight": 1.0, + "source": "components_syncstatetoast_test", + "target": "components_syncstatetoast_test_makequeryclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L24", + "weight": 1.0, + "source": "components_syncstatetoast_test", + "target": "components_syncstatetoast_test_mocklastsynceduid_mocksetlastsynceduid_mockfetchsyncstatus", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.test.tsx", + "source_location": "L58", + "weight": 1.0, + "source": "components_syncstatetoast_test", + "target": "components_syncstatetoast_test_rendertoast", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L31", + "weight": 1.0, + "source": "components_syncstatetoast", + "target": "components_syncstatetoast_syncstatetoast", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L26", + "weight": 1.0, + "source": "components_syncstatetoast", + "target": "store_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L26", + "weight": 1.0, + "source": "components_syncstatetoast", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/pwa/src/components/SyncStateToast.tsx", + "source_location": "L32", + "weight": 1.0, + "source": "components_syncstatetoast_syncstatetoast", + "target": "store_calendarstore_usecalendarstore" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.test.ts", + "source_location": "L16", + "weight": 1.0, + "source": "lib_calendarconfig_test", + "target": "lib_calendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.test.ts", + "source_location": "L16", + "weight": 1.0, + "source": "lib_calendarconfig_test", + "target": "lib_calendarconfig_buildcalendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L71", + "weight": 1.0, + "source": "lib_calendarconfig", + "target": "lib_calendarconfig_buildcalendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L55", + "weight": 1.0, + "source": "lib_calendarconfig", + "target": "lib_calendarconfig_calendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L40", + "weight": 1.0, + "source": "lib_calendarconfig", + "target": "lib_calendarconfig_membercalendarconfig", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L46", + "weight": 1.0, + "source": "lib_calendarconfig", + "target": "lib_calendarconfig_schedulexcalendarentry", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L20", + "weight": 1.0, + "source": "lib_calendarconfig", + "target": "lib_colorutils", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L20", + "weight": 1.0, + "source": "lib_calendarconfig", + "target": "lib_colorutils_deriveschedulexcolors", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "apps/pwa/src/lib/calendarConfig.ts", + "source_location": "L77", + "weight": 1.0, + "source": "lib_calendarconfig_buildcalendarconfig", + "target": "lib_colorutils_deriveschedulexcolors" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L2", + "weight": 1.0, + "source": "lib_colorutils_test", + "target": "lib_colorutils", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L2", + "weight": 1.0, + "source": "lib_colorutils_test", + "target": "lib_colorutils_deriveschedulexcolors", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L2", + "weight": 1.0, + "source": "lib_colorutils_test", + "target": "lib_colorutils_hextocontainer", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L2", + "weight": 1.0, + "source": "lib_colorutils_test", + "target": "lib_colorutils_hextooncontainer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.test.ts", + "source_location": "L101", + "weight": 1.0, + "source": "lib_colorutils_test", + "target": "lib_colorutils_test_hextorgbtest", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L62", + "weight": 1.0, + "source": "lib_colorutils", + "target": "lib_colorutils_deriveschedulexcolors", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L37", + "weight": 1.0, + "source": "lib_colorutils", + "target": "lib_colorutils_hextocontainer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L48", + "weight": 1.0, + "source": "lib_colorutils", + "target": "lib_colorutils_hextooncontainer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L15", + "weight": 1.0, + "source": "lib_colorutils", + "target": "lib_colorutils_hextorgb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L26", + "weight": 1.0, + "source": "lib_colorutils", + "target": "lib_colorutils_rgbtohex", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L38", + "weight": 1.0, + "source": "lib_colorutils_hextocontainer", + "target": "lib_colorutils_hextorgb", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L49", + "weight": 1.0, + "source": "lib_colorutils_hextooncontainer", + "target": "lib_colorutils_hextorgb", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L41", + "weight": 1.0, + "source": "lib_colorutils_hextocontainer", + "target": "lib_colorutils_rgbtohex", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L51", + "weight": 1.0, + "source": "lib_colorutils_hextooncontainer", + "target": "lib_colorutils_rgbtohex", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L69", + "weight": 1.0, + "source": "lib_colorutils_deriveschedulexcolors", + "target": "lib_colorutils_hextocontainer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/colorUtils.ts", + "source_location": "L70", + "weight": 1.0, + "source": "lib_colorutils_deriveschedulexcolors", + "target": "lib_colorutils_hextooncontainer", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/eventDateTime.test.ts", + "source_location": "L16", + "weight": 1.0, + "source": "lib_eventdatetime_test", + "target": "lib_eventdatetime", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/eventDateTime.test.ts", + "source_location": "L16", + "weight": 1.0, + "source": "lib_eventdatetime_test", + "target": "lib_eventdatetime_localwallclocktoutciso", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/eventDateTime.test.ts", + "source_location": "L16", + "weight": 1.0, + "source": "lib_eventdatetime_test", + "target": "lib_eventdatetime_serializeeventdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/eventDateTime.ts", + "source_location": "L59", + "weight": 1.0, + "source": "lib_eventdatetime", + "target": "lib_eventdatetime_localwallclocktoutciso", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/eventDateTime.ts", + "source_location": "L33", + "weight": 1.0, + "source": "lib_eventdatetime", + "target": "lib_eventdatetime_serializeeventdatetime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/eventDateTime.ts", + "source_location": "L49", + "weight": 1.0, + "source": "lib_eventdatetime_serializeeventdatetime", + "target": "lib_eventdatetime_localwallclocktoutciso", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L20", + "weight": 1.0, + "source": "lib_hydrateevents_test", + "target": "lib_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L20", + "weight": 1.0, + "source": "lib_hydrateevents_test", + "target": "lib_hydrateevents_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L39", + "weight": 1.0, + "source": "lib_hydrateevents_test", + "target": "lib_hydrateevents_test_makeoccurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.test.ts", + "source_location": "L23", + "weight": 1.0, + "source": "lib_hydrateevents_test", + "target": "lib_hydrateevents_test_testoccurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L26", + "weight": 1.0, + "source": "lib_hydrateevents", + "target": "lib_hydrateevents_calendaroccurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L71", + "weight": 1.0, + "source": "lib_hydrateevents", + "target": "lib_hydrateevents_hydrateevents", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/hydrateEvents.ts", + "source_location": "L42", + "weight": 1.0, + "source": "lib_hydrateevents", + "target": "lib_hydrateevents_schedulexevent", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/loginRedirect.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "lib_loginredirect_test", + "target": "lib_loginredirect", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/loginRedirect.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "lib_loginredirect_test", + "target": "lib_loginredirect_clearloginredirect", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/loginRedirect.test.ts", + "source_location": "L21", + "weight": 1.0, + "source": "lib_loginredirect_test", + "target": "lib_loginredirect_mayberedirecttologin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/loginRedirect.test.ts", + "source_location": "L15", + "weight": 1.0, + "source": "lib_loginredirect_test", + "target": "lib_loginredirect_test_locationstub", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/loginRedirect.ts", + "source_location": "L55", + "weight": 1.0, + "source": "lib_loginredirect", + "target": "lib_loginredirect_clearloginredirect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/lib/loginRedirect.ts", + "source_location": "L28", + "weight": 1.0, + "source": "lib_loginredirect", + "target": "lib_loginredirect_mayberedirecttologin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/main.tsx", + "source_location": "L17", + "weight": 1.0, + "source": "src_main", + "target": "src_main_queryclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L30", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_breakpointgroup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L32", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L85", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_getbreakpointgroup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L109", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_initialcalendarrange", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L96", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_readpersistedview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L122", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_todayiso", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L128", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_usecalendarstore", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L91", + "weight": 1.0, + "source": "store_calendarstore", + "target": "store_calendarstore_viewstoragekey", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L97", + "weight": 1.0, + "source": "store_calendarstore_readpersistedview", + "target": "store_calendarstore_getbreakpointgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/src/store/calendarStore.ts", + "source_location": "L99", + "weight": 1.0, + "source": "store_calendarstore_readpersistedview", + "target": "store_calendarstore_viewstoragekey", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L2", + "weight": 1.0, + "source": "pwa_tsconfig", + "target": "pwa_tsconfig_compileroptions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L16", + "weight": 1.0, + "source": "pwa_tsconfig", + "target": "pwa_tsconfig_exclude", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L15", + "weight": 1.0, + "source": "pwa_tsconfig", + "target": "pwa_tsconfig_include", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L10", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_esmoduleinterop", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L11", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_forceconsistentcasinginfilenames", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L7", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_jsx", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L4", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_lib", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L5", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_module", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L6", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_moduleresolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L12", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_noemit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L13", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_resolvejsonmodule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L9", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_skiplibcheck", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L8", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_strict", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "apps/pwa/tsconfig.json", + "source_location": "L3", + "weight": 1.0, + "source": "pwa_tsconfig_compileroptions", + "target": "pwa_tsconfig_compileroptions_target", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L2", + "weight": 1.0, + "source": "package", + "target": "package_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L4", + "weight": 1.0, + "source": "package", + "target": "package_packagemanager", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L3", + "weight": 1.0, + "source": "package", + "target": "package_private", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L5", + "weight": 1.0, + "source": "package", + "target": "package_scripts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L8", + "weight": 1.0, + "source": "package_scripts", + "target": "package_scripts_build", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L6", + "weight": 1.0, + "source": "package_scripts", + "target": "package_scripts_dev_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L7", + "weight": 1.0, + "source": "package_scripts", + "target": "package_scripts_dev_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L10", + "weight": 1.0, + "source": "package_scripts", + "target": "package_scripts_lint", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L9", + "weight": 1.0, + "source": "package_scripts", + "target": "package_scripts_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L11", + "weight": 1.0, + "source": "package_scripts", + "target": "package_scripts_typecheck", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L7", + "weight": 1.0, + "source": "playwright_cli_skill", + "target": "playwright_cli_skill_browser_automation_with_playwright_cli", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L292", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_browser_sessions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L26", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_commands", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L348", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_example_debugging_with_devtools", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L324", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_example_form_submission", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L368", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_example_interactive_session", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L337", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_example_multi_tab_workflow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L310", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_installation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L200", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_open_parameters", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L9", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_quick_start", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L180", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_raw_output", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L234", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_snapshots", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L377", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_specific_tasks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L267", + "weight": 1.0, + "source": "playwright_cli_skill_browser_automation_with_playwright_cli", + "target": "playwright_cli_skill_targeting_elements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L28", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_core", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L151", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_devtools", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L70", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_keyboard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L79", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_mouse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L62", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_navigation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L141", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_network", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L90", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_save_as", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L110", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_storage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/SKILL.md", + "source_location": "L99", + "weight": 1.0, + "source": "playwright_cli_skill_commands", + "target": "playwright_cli_skill_tabs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/element-attributes.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_element_attributes", + "target": "references_element_attributes_inspecting_element_attributes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/element-attributes.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_element_attributes_inspecting_element_attributes", + "target": "references_element_attributes_examples", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/playwright-tests.md", + "source_location": "L13", + "weight": 1.0, + "source": "references_playwright_tests", + "target": "references_playwright_tests_debugging_playwright_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/playwright-tests.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_playwright_tests", + "target": "references_playwright_tests_running_playwright_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_request_mocking", + "target": "references_request_mocking_request_mocking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L37", + "weight": 1.0, + "source": "references_request_mocking_request_mocking", + "target": "references_request_mocking_advanced_mocking_with_run_code", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_request_mocking_request_mocking", + "target": "references_request_mocking_cli_route_commands", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L28", + "weight": 1.0, + "source": "references_request_mocking_request_mocking", + "target": "references_request_mocking_url_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L41", + "weight": 1.0, + "source": "references_request_mocking_advanced_mocking_with_run_code", + "target": "references_request_mocking_conditional_response_based_on_request", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L78", + "weight": 1.0, + "source": "references_request_mocking_advanced_mocking_with_run_code", + "target": "references_request_mocking_delayed_response", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L56", + "weight": 1.0, + "source": "references_request_mocking_advanced_mocking_with_run_code", + "target": "references_request_mocking_modify_real_response", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/request-mocking.md", + "source_location": "L69", + "weight": 1.0, + "source": "references_request_mocking_advanced_mocking_with_run_code", + "target": "references_request_mocking_simulate_network_failures", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_running_code", + "target": "references_running_code_running_custom_playwright_code", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L143", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_clipboard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L217", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_complex_workflows", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L203", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_error_handling", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L130", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_file_downloads", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L114", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_frames_and_iframes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L24", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_geolocation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L182", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_javascript_execution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L66", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_media_emulation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L158", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_page_information", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L45", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_permissions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_syntax", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/running-code.md", + "source_location": "L90", + "weight": 1.0, + "source": "references_running_code_running_custom_playwright_code", + "target": "references_running_code_wait_strategies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_session_management", + "target": "references_session_management_browser_session_management", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L108", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_attaching_to_a_running_browser", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L193", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_best_practices", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L31", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_browser_session_commands", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L175", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_browser_session_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L21", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_browser_session_isolation_properties", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L61", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_common_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L164", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_default_browser_session", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L52", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_environment_variable", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_session_management_browser_session_management", + "target": "references_session_management_named_browser_sessions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L84", + "weight": 1.0, + "source": "references_session_management_common_patterns", + "target": "references_session_management_a_b_testing_sessions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L63", + "weight": 1.0, + "source": "references_session_management_common_patterns", + "target": "references_session_management_concurrent_scraping", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L96", + "weight": 1.0, + "source": "references_session_management_common_patterns", + "target": "references_session_management_persistent_profile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L112", + "weight": 1.0, + "source": "references_session_management_attaching_to_a_running_browser", + "target": "references_session_management_attach_by_channel_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L142", + "weight": 1.0, + "source": "references_session_management_attaching_to_a_running_browser", + "target": "references_session_management_attach_via_browser_extension", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L134", + "weight": 1.0, + "source": "references_session_management_attaching_to_a_running_browser", + "target": "references_session_management_attach_via_cdp_endpoint", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L150", + "weight": 1.0, + "source": "references_session_management_attaching_to_a_running_browser", + "target": "references_session_management_detach", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L195", + "weight": 1.0, + "source": "references_session_management_best_practices", + "target": "references_session_management_1_name_browser_sessions_semantically", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L206", + "weight": 1.0, + "source": "references_session_management_best_practices", + "target": "references_session_management_2_always_clean_up", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/session-management.md", + "source_location": "L220", + "weight": 1.0, + "source": "references_session_management_best_practices", + "target": "references_session_management_3_delete_stale_browser_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_spec_driven_testing", + "target": "references_spec_driven_testing_spec_driven_testing_plan_generate_heal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L13", + "weight": 1.0, + "source": "references_spec_driven_testing_spec_driven_testing_plan_generate_heal", + "target": "references_spec_driven_testing_1_planning", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L152", + "weight": 1.0, + "source": "references_spec_driven_testing_spec_driven_testing_plan_generate_heal", + "target": "references_spec_driven_testing_2_generate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L237", + "weight": 1.0, + "source": "references_spec_driven_testing_spec_driven_testing_plan_generate_heal", + "target": "references_spec_driven_testing_3_heal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L298", + "weight": 1.0, + "source": "references_spec_driven_testing_spec_driven_testing_plan_generate_heal", + "target": "references_spec_driven_testing_cross_references", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L17", + "weight": 1.0, + "source": "references_spec_driven_testing_1_planning", + "target": "references_spec_driven_testing_1_1_prerequisite_workspace", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L33", + "weight": 1.0, + "source": "references_spec_driven_testing_1_planning", + "target": "references_spec_driven_testing_1_2_prerequisite_seed_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L74", + "weight": 1.0, + "source": "references_spec_driven_testing_1_planning", + "target": "references_spec_driven_testing_1_3_explore_the_app", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L105", + "weight": 1.0, + "source": "references_spec_driven_testing_1_planning", + "target": "references_spec_driven_testing_1_4_write_the_spec_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L156", + "weight": 1.0, + "source": "references_spec_driven_testing_2_generate", + "target": "references_spec_driven_testing_2_1_inputs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L162", + "weight": 1.0, + "source": "references_spec_driven_testing_2_generate", + "target": "references_spec_driven_testing_2_2_generate_one_scenario", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L221", + "weight": 1.0, + "source": "references_spec_driven_testing_2_generate", + "target": "references_spec_driven_testing_2_3_generate_multiple_scenarios", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L225", + "weight": 1.0, + "source": "references_spec_driven_testing_2_generate", + "target": "references_spec_driven_testing_2_4_run_generated_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L241", + "weight": 1.0, + "source": "references_spec_driven_testing_3_heal", + "target": "references_spec_driven_testing_3_1_find_failing_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L249", + "weight": 1.0, + "source": "references_spec_driven_testing_3_heal", + "target": "references_spec_driven_testing_3_2_debug_one_failure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L272", + "weight": 1.0, + "source": "references_spec_driven_testing_3_heal", + "target": "references_spec_driven_testing_3_3_apply_the_fix", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L278", + "weight": 1.0, + "source": "references_spec_driven_testing_3_heal", + "target": "references_spec_driven_testing_3_4_reconcile_with_the_spec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/spec-driven-testing.md", + "source_location": "L291", + "weight": 1.0, + "source": "references_spec_driven_testing_3_heal", + "target": "references_spec_driven_testing_3_5_iteration_and_giving_up", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_storage_state", + "target": "references_storage_state_storage_management", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L230", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_common_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L59", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_cookies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L207", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_indexeddb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L123", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_local_storage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L269", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_security_notes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L175", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_session_storage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_storage_state_storage_management", + "target": "references_storage_state_storage_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L19", + "weight": 1.0, + "source": "references_storage_state_storage_state", + "target": "references_storage_state_restore_storage_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L9", + "weight": 1.0, + "source": "references_storage_state_storage_state", + "target": "references_storage_state_save_storage_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L29", + "weight": 1.0, + "source": "references_storage_state_storage_state", + "target": "references_storage_state_storage_state_file_format", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L110", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_advanced_multiple_cookies_or_custom_options", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L104", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_clear_all_cookies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L98", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_delete_a_cookie", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L67", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_filter_cookies_by_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L73", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_filter_cookies_by_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L79", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_get_specific_cookie", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L61", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_list_all_cookies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L85", + "weight": 1.0, + "source": "references_storage_state_cookies", + "target": "references_storage_state_set_a_cookie", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L161", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_advanced_multiple_operations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L155", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_clear_all_localstorage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L149", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_delete_single_item", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L131", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_get_single_value", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L125", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_list_all_localstorage_items", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L143", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_set_json_value", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L137", + "weight": 1.0, + "source": "references_storage_state_local_storage", + "target": "references_storage_state_set_value", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L201", + "weight": 1.0, + "source": "references_storage_state_session_storage", + "target": "references_storage_state_clear_sessionstorage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L195", + "weight": 1.0, + "source": "references_storage_state_session_storage", + "target": "references_storage_state_delete_single_item_195", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L183", + "weight": 1.0, + "source": "references_storage_state_session_storage", + "target": "references_storage_state_get_single_value_183", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L177", + "weight": 1.0, + "source": "references_storage_state_session_storage", + "target": "references_storage_state_list_all_sessionstorage_items", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L189", + "weight": 1.0, + "source": "references_storage_state_session_storage", + "target": "references_storage_state_set_value_189", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L220", + "weight": 1.0, + "source": "references_storage_state_indexeddb", + "target": "references_storage_state_delete_database", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L209", + "weight": 1.0, + "source": "references_storage_state_indexeddb", + "target": "references_storage_state_list_databases", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L232", + "weight": 1.0, + "source": "references_storage_state_common_patterns", + "target": "references_storage_state_authentication_state_reuse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/storage-state.md", + "source_location": "L251", + "weight": 1.0, + "source": "references_storage_state_common_patterns", + "target": "references_storage_state_save_and_restore_roundtrip", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_test_generation", + "target": "references_test_generation_test_generation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L53", + "weight": 1.0, + "source": "references_test_generation_test_generation", + "target": "references_test_generation_best_practices", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L34", + "weight": 1.0, + "source": "references_test_generation_test_generation", + "target": "references_test_generation_building_a_test_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L10", + "weight": 1.0, + "source": "references_test_generation_test_generation", + "target": "references_test_generation_example_workflow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_test_generation_test_generation", + "target": "references_test_generation_how_it_works", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L55", + "weight": 1.0, + "source": "references_test_generation_best_practices", + "target": "references_test_generation_1_use_semantic_locators", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L67", + "weight": 1.0, + "source": "references_test_generation_best_practices", + "target": "references_test_generation_2_explore_before_recording", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/test-generation.md", + "source_location": "L78", + "weight": 1.0, + "source": "references_test_generation_best_practices", + "target": "references_test_generation_3_add_assertions_manually", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_tracing", + "target": "references_tracing_tracing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_basic_usage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L114", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_best_practices", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L135", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_limitations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L20", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_trace_output_files", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L103", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_trace_vs_video_vs_screenshot", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L62", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_use_cases", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L51", + "weight": 1.0, + "source": "references_tracing_tracing", + "target": "references_tracing_what_traces_capture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L44", + "weight": 1.0, + "source": "references_tracing_trace_output_files", + "target": "references_tracing_resources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L34", + "weight": 1.0, + "source": "references_tracing_trace_output_files", + "target": "references_tracing_trace_timestamp_network", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L24", + "weight": 1.0, + "source": "references_tracing_trace_output_files", + "target": "references_tracing_trace_timestamp_trace", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L77", + "weight": 1.0, + "source": "references_tracing_use_cases", + "target": "references_tracing_analyzing_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L87", + "weight": 1.0, + "source": "references_tracing_use_cases", + "target": "references_tracing_capturing_evidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L64", + "weight": 1.0, + "source": "references_tracing_use_cases", + "target": "references_tracing_debugging_failed_actions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L116", + "weight": 1.0, + "source": "references_tracing_best_practices", + "target": "references_tracing_1_start_tracing_before_the_problem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/tracing.md", + "source_location": "L126", + "weight": 1.0, + "source": "references_tracing_best_practices", + "target": "references_tracing_2_clean_up_old_traces", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L1", + "weight": 1.0, + "source": "references_video_recording", + "target": "references_video_recording_video_recording", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L5", + "weight": 1.0, + "source": "references_video_recording_video_recording", + "target": "references_video_recording_basic_recording", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L30", + "weight": 1.0, + "source": "references_video_recording_video_recording", + "target": "references_video_recording_best_practices", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L140", + "weight": 1.0, + "source": "references_video_recording_video_recording", + "target": "references_video_recording_limitations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L131", + "weight": 1.0, + "source": "references_video_recording_video_recording", + "target": "references_video_recording_tracing_vs_video", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L32", + "weight": 1.0, + "source": "references_video_recording_best_practices", + "target": "references_video_recording_1_use_descriptive_filenames", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L40", + "weight": 1.0, + "source": "references_video_recording_best_practices", + "target": "references_video_recording_2_record_entire_hero_scripts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".claude/skills/playwright-cli/references/video-recording.md", + "source_location": "L122", + "weight": 1.0, + "source": "references_video_recording_best_practices", + "target": "references_video_recording_overlay_api_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L1", + "weight": 1.0, + "source": "planning_project", + "target": "planning_project_familysync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L55", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_constraints", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L44", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L7", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_core_value", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L83", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_evolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L67", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_key_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L11", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L3", + "weight": 1.0, + "source": "planning_project_familysync", + "target": "planning_project_what_this_is", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L22", + "weight": 1.0, + "source": "planning_project_requirements", + "target": "planning_project_active", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L31", + "weight": 1.0, + "source": "planning_project_requirements", + "target": "planning_project_out_of_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/PROJECT.md", + "source_location": "L13", + "weight": 1.0, + "source": "planning_project_requirements", + "target": "planning_project_validated", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L1", + "weight": 1.0, + "source": "planning_requirements", + "target": "planning_requirements_requirements_familysync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L65", + "weight": 1.0, + "source": "planning_requirements_requirements_familysync", + "target": "planning_requirements_out_of_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L89", + "weight": 1.0, + "source": "planning_requirements_requirements_familysync", + "target": "planning_requirements_traceability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L6", + "weight": 1.0, + "source": "planning_requirements_requirements_familysync", + "target": "planning_requirements_v1_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L47", + "weight": 1.0, + "source": "planning_requirements_requirements_familysync", + "target": "planning_requirements_v1_x_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L58", + "weight": 1.0, + "source": "planning_requirements_requirements_familysync", + "target": "planning_requirements_v2_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L10", + "weight": 1.0, + "source": "planning_requirements_v1_requirements", + "target": "planning_requirements_authentication_onboarding", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L18", + "weight": 1.0, + "source": "planning_requirements_v1_requirements", + "target": "planning_requirements_calendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L29", + "weight": 1.0, + "source": "planning_requirements_v1_requirements", + "target": "planning_requirements_lists", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L36", + "weight": 1.0, + "source": "planning_requirements_v1_requirements", + "target": "planning_requirements_notifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L42", + "weight": 1.0, + "source": "planning_requirements_v1_requirements", + "target": "planning_requirements_pwa_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L51", + "weight": 1.0, + "source": "planning_requirements_v1_x_requirements", + "target": "planning_requirements_calendar_51", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/REQUIREMENTS.md", + "source_location": "L60", + "weight": 1.0, + "source": "planning_requirements_v2_requirements", + "target": "planning_requirements_display", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L1", + "weight": 1.0, + "source": "planning_roadmap", + "target": "planning_roadmap_roadmap_familysync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L220", + "weight": 1.0, + "source": "planning_roadmap_roadmap_familysync", + "target": "planning_roadmap_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L3", + "weight": 1.0, + "source": "planning_roadmap_roadmap_familysync", + "target": "planning_roadmap_overview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L23", + "weight": 1.0, + "source": "planning_roadmap_roadmap_familysync", + "target": "planning_roadmap_phase_details", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L7", + "weight": 1.0, + "source": "planning_roadmap_roadmap_familysync", + "target": "planning_roadmap_phases", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L205", + "weight": 1.0, + "source": "planning_roadmap_roadmap_familysync", + "target": "planning_roadmap_progress", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L25", + "weight": 1.0, + "source": "planning_roadmap_phase_details", + "target": "planning_roadmap_phase_1_foundation_broker_spike", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L49", + "weight": 1.0, + "source": "planning_roadmap_phase_details", + "target": "planning_roadmap_phase_2_calendar_display", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L89", + "weight": 1.0, + "source": "planning_roadmap_phase_details", + "target": "planning_roadmap_phase_3_event_write_back_pwa_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L131", + "weight": 1.0, + "source": "planning_roadmap_phase_details", + "target": "planning_roadmap_phase_4_shared_lists_live_sync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L171", + "weight": 1.0, + "source": "planning_roadmap_phase_details", + "target": "planning_roadmap_phase_5_web_push_notifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L186", + "weight": 1.0, + "source": "planning_roadmap_phase_details", + "target": "planning_roadmap_phase_6_ux_polish", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L222", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_1_treat_fastmail_as_one_calendar_provider_framework_supports_adding_more_providers_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L232", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_2_slick_unauthenticated_entry_no_calendar_sign_in_required_flash_before_authelia_redirect_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L248", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_3_redirect_to_sign_in_on_session_timeout_instead_of_hanging_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L264", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_4_event_creation_notification_reminder_valarm_options_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L276", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_5_first_login_provider_setup_prompt_instructions_to_add_a_fastmail_app_password_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L298", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_6_all_day_events_should_stand_out_visually_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L310", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_7_event_form_auto_advance_end_when_start_moves_keep_duration_sane_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L324", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_8_recurrence_bound_repeat_until_count_recurring_create_polish_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/ROADMAP.md", + "source_location": "L336", + "weight": 1.0, + "source": "planning_roadmap_backlog", + "target": "planning_roadmap_phase_999_9_edit_a_recurring_series_whole_series_edit_backlog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L17", + "weight": 1.0, + "source": "planning_state", + "target": "planning_state_project_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L63", + "weight": 1.0, + "source": "planning_state_project_state", + "target": "planning_state_accumulated_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L26", + "weight": 1.0, + "source": "planning_state_project_state", + "target": "planning_state_current_position", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L116", + "weight": 1.0, + "source": "planning_state_project_state", + "target": "planning_state_deferred_items", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L35", + "weight": 1.0, + "source": "planning_state_project_state", + "target": "planning_state_performance_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L19", + "weight": 1.0, + "source": "planning_state_project_state", + "target": "planning_state_project_reference", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L127", + "weight": 1.0, + "source": "planning_state_project_state", + "target": "planning_state_session_continuity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L100", + "weight": 1.0, + "source": "planning_state_accumulated_context", + "target": "planning_state_blockers_concerns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L65", + "weight": 1.0, + "source": "planning_state_accumulated_context", + "target": "planning_state_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L94", + "weight": 1.0, + "source": "planning_state_accumulated_context", + "target": "planning_state_pending_todos", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L108", + "weight": 1.0, + "source": "planning_state_accumulated_context", + "target": "planning_state_quick_tasks_completed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/STATE.md", + "source_location": "L90", + "weight": 1.0, + "source": "planning_state_accumulated_context", + "target": "planning_state_roadmap_evolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L2", + "weight": 1.0, + "source": "codebase_architecture", + "target": "codebase_architecture_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L282", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_anti_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L272", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_architectural_constraints", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L58", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_component_responsibilities", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L146", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_data_flow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L235", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_entry_points", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L208", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_key_abstractions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L107", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_layers", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L83", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_pattern_overview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L6", + "weight": 1.0, + "source": "codebase_architecture_architecture", + "target": "codebase_architecture_system_overview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L186", + "weight": 1.0, + "source": "codebase_architecture_data_flow", + "target": "codebase_architecture_calendar_sync_background_poller_synccalendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L148", + "weight": 1.0, + "source": "codebase_architecture_data_flow", + "target": "codebase_architecture_primary_request_path_get_api_events", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L166", + "weight": 1.0, + "source": "codebase_architecture_data_flow", + "target": "codebase_architecture_write_path_post_api_events_create", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L296", + "weight": 1.0, + "source": "codebase_architecture_anti_patterns", + "target": "codebase_architecture_caching_tsdav_clients_across_polls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L284", + "weight": 1.0, + "source": "codebase_architecture_anti_patterns", + "target": "codebase_architecture_direct_fastmail_calls_from_routes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L314", + "weight": 1.0, + "source": "codebase_architecture_anti_patterns", + "target": "codebase_architecture_relying_on_200_response_to_mean_write_success", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L308", + "weight": 1.0, + "source": "codebase_architecture_anti_patterns", + "target": "codebase_architecture_storing_all_day_events_as_midnight_utc_datetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L290", + "weight": 1.0, + "source": "codebase_architecture_anti_patterns", + "target": "codebase_architecture_storing_displayname_as_identity_key", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/ARCHITECTURE.md", + "source_location": "L302", + "weight": 1.0, + "source": "codebase_architecture_anti_patterns", + "target": "codebase_architecture_windowed_event_query_without_pre_filter_for_recurring_masters", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L1", + "weight": 1.0, + "source": "codebase_concerns", + "target": "codebase_concerns_codebase_concerns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L202", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_architectural_constraints_anti_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L133", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_dependencies_at_risk", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L95", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_fragile_areas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L221", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_infrastructure_deployment_concerns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L35", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_known_bugs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L238", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_known_limitations_documented_as_design_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L152", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_missing_critical_features", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L73", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_performance_bottlenecks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L114", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_scaling_limits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L51", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_security_considerations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L5", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_tech_debt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONCERNS.md", + "source_location": "L168", + "weight": 1.0, + "source": "codebase_concerns_codebase_concerns", + "target": "codebase_concerns_test_coverage_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L1", + "weight": 1.0, + "source": "codebase_conventions", + "target": "codebase_conventions_coding_conventions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L44", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_code_style", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L186", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_comments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L269", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_database_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L103", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_error_handling", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L215", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_function_design", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L73", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_import_organization", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L164", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_logging", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L253", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_module_design", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L5", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_naming_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/CONVENTIONS.md", + "source_location": "L304", + "weight": 1.0, + "source": "codebase_conventions_coding_conventions", + "target": "codebase_conventions_reactive_state_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L1", + "weight": 1.0, + "source": "codebase_integrations", + "target": "codebase_integrations_external_integrations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L5", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_apis_external_services", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L51", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_authentication_identity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L83", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_ci_cd_deployment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L27", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_data_storage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L100", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_environment_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L67", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_monitoring_observability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L135", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_network_transport", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/INTEGRATIONS.md", + "source_location": "L121", + "weight": 1.0, + "source": "codebase_integrations_external_integrations", + "target": "codebase_integrations_webhooks_callbacks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L1", + "weight": 1.0, + "source": "codebase_stack", + "target": "codebase_stack_technology_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L91", + "weight": 1.0, + "source": "codebase_stack_technology_stack", + "target": "codebase_stack_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L26", + "weight": 1.0, + "source": "codebase_stack_technology_stack", + "target": "codebase_stack_frameworks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L61", + "weight": 1.0, + "source": "codebase_stack_technology_stack", + "target": "codebase_stack_key_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L5", + "weight": 1.0, + "source": "codebase_stack_technology_stack", + "target": "codebase_stack_languages", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L110", + "weight": 1.0, + "source": "codebase_stack_technology_stack", + "target": "codebase_stack_platform_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STACK.md", + "source_location": "L15", + "weight": 1.0, + "source": "codebase_stack_technology_stack", + "target": "codebase_stack_runtime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L1", + "weight": 1.0, + "source": "codebase_structure", + "target": "codebase_structure_codebase_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L5", + "weight": 1.0, + "source": "codebase_structure_codebase_structure", + "target": "codebase_structure_directory_layout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L93", + "weight": 1.0, + "source": "codebase_structure_codebase_structure", + "target": "codebase_structure_directory_purposes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L119", + "weight": 1.0, + "source": "codebase_structure_codebase_structure", + "target": "codebase_structure_key_file_locations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L163", + "weight": 1.0, + "source": "codebase_structure_codebase_structure", + "target": "codebase_structure_naming_conventions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L241", + "weight": 1.0, + "source": "codebase_structure_codebase_structure", + "target": "codebase_structure_special_directories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/STRUCTURE.md", + "source_location": "L202", + "weight": 1.0, + "source": "codebase_structure_codebase_structure", + "target": "codebase_structure_where_to_add_new_code", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L1", + "weight": 1.0, + "source": "codebase_testing", + "target": "codebase_testing_testing_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L250", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_common_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L219", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_coverage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L177", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_fixtures_and_factories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L382", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_known_testing_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L118", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_mocking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L30", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_test_file_organization", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L5", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_test_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L343", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_test_setup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L76", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_test_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/codebase/TESTING.md", + "source_location": "L233", + "weight": 1.0, + "source": "codebase_testing_testing_patterns", + "target": "codebase_testing_test_types", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L11", + "weight": 1.0, + "source": "debug_write_path_event_bugs", + "target": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L53", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_current_focus", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L66", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_eliminated", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L48", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_environment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L58", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_evidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L42", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_out_of_scope_tracked_separately_do_not_fix_here", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L71", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_resolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L13", + "weight": 1.0, + "source": "debug_write_path_event_bugs_debug_session_write_path_event_bugs", + "target": "debug_write_path_event_bugs_symptoms", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L17", + "weight": 1.0, + "source": "debug_write_path_event_bugs_symptoms", + "target": "debug_write_path_event_bugs_bug_a_event_times_written_4_hours_off_local_serialized_as_utc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L29", + "weight": 1.0, + "source": "debug_write_path_event_bugs_symptoms", + "target": "debug_write_path_event_bugs_bug_b_created_events_attach_to_the_wrong_user_s_calendar_poller_creates_duplicate_calendar_rows", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L73", + "weight": 1.0, + "source": "debug_write_path_event_bugs_resolution", + "target": "debug_write_path_event_bugs_bug_a_write_path_timezone_serialization", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L78", + "weight": 1.0, + "source": "debug_write_path_event_bugs_resolution", + "target": "debug_write_path_event_bugs_bug_b_wrong_calendar_attach_duplicate_calendar_rows", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/debug/write-path-event-bugs.md", + "source_location": "L87", + "weight": 1.0, + "source": "debug_write_path_event_bugs_resolution", + "target": "debug_write_path_event_bugs_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L7", + "weight": 1.0, + "source": "notes_familysync_architecture", + "target": "notes_familysync_architecture_familysync_architecture_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L19", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_household", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L25", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_infrastructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L94", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_net_result", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L100", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_open_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L107", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_resolved_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L34", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_stack_decisions_verified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L84", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_what_we_decided_not_to_do", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L9", + "weight": 1.0, + "source": "notes_familysync_architecture_familysync_architecture_decisions", + "target": "notes_familysync_architecture_what_we_re_building", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L36", + "weight": 1.0, + "source": "notes_familysync_architecture_stack_decisions_verified", + "target": "notes_familysync_architecture_calendar_fastmail_not_self_hosted", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L69", + "weight": 1.0, + "source": "notes_familysync_architecture_stack_decisions_verified", + "target": "notes_familysync_architecture_display_aggregation_custom_app_the_actual_product", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L77", + "weight": 1.0, + "source": "notes_familysync_architecture_stack_decisions_verified", + "target": "notes_familysync_architecture_frontend_react_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/notes/familysync-architecture.md", + "source_location": "L57", + "weight": 1.0, + "source": "notes_familysync_architecture_stack_decisions_verified", + "target": "notes_familysync_architecture_lists_custom_app_backend_mariadb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L106", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_plan", + "target": "01_foundation_broker_spike_01_01_plan_artifacts_this_phase_produces_plan_01", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L221", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_plan", + "target": "01_foundation_broker_spike_01_01_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-PLAN.md", + "source_location": "L214", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_plan", + "target": "01_foundation_broker_spike_01_01_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary", + "target": "01_foundation_broker_spike_01_01_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L92", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary", + "target": "01_foundation_broker_spike_01_01_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L97", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary", + "target": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L23", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary", + "target": "01_foundation_broker_spike_01_01_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L109", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L138", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L144", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L126", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L182", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_issues_encountered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L196", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L207", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_next_phase_readiness", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L101", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L213", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L118", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L200", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L186", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_phase_01_plan_01_walking_skeleton_summary", + "target": "01_foundation_broker_spike_01_01_summary_user_setup_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-01-SUMMARY.md", + "source_location": "L148", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_01_summary_deviations_from_plan", + "target": "01_foundation_broker_spike_01_01_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L76", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_plan", + "target": "01_foundation_broker_spike_01_02_plan_artifacts_this_phase_produces_plan_02", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L166", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_plan", + "target": "01_foundation_broker_spike_01_02_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-PLAN.md", + "source_location": "L158", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_plan", + "target": "01_foundation_broker_spike_01_02_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary", + "target": "01_foundation_broker_spike_01_02_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L50", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary", + "target": "01_foundation_broker_spike_01_02_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L55", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary", + "target": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L22", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary", + "target": "01_foundation_broker_spike_01_02_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L93", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L141", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L83", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L145", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L99", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_operator_setup_required_authelia_client_registration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L162", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L77", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-02-SUMMARY.md", + "source_location": "L149", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_02_summary_phase_01_plan_02_oidc_auth_vertical_slice_summary", + "target": "01_foundation_broker_spike_01_02_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L83", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_plan", + "target": "01_foundation_broker_spike_01_03_plan_artifacts_this_phase_produces_plan_03", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L210", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_plan", + "target": "01_foundation_broker_spike_01_03_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-PLAN.md", + "source_location": "L202", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_plan", + "target": "01_foundation_broker_spike_01_03_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary", + "target": "01_foundation_broker_spike_01_03_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L62", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary", + "target": "01_foundation_broker_spike_01_03_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary", + "target": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L21", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary", + "target": "01_foundation_broker_spike_01_03_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L78", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L110", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L117", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L98", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L121", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_issues_encountered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L134", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L71", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L148", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_self_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L157", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L86", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L139", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-03-SUMMARY.md", + "source_location": "L125", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_03_summary_phase_01_plan_03_caldav_broker_slice_summary", + "target": "01_foundation_broker_spike_01_03_summary_user_setup_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L78", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_plan", + "target": "01_foundation_broker_spike_01_04_plan_artifacts_this_phase_produces_plan_04", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L160", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_plan", + "target": "01_foundation_broker_spike_01_04_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-PLAN.md", + "source_location": "L152", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_plan", + "target": "01_foundation_broker_spike_01_04_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary", + "target": "01_foundation_broker_spike_01_04_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L49", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary", + "target": "01_foundation_broker_spike_01_04_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L54", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary", + "target": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L21", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary", + "target": "01_foundation_broker_spike_01_04_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L66", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L193", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L82", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L202", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L93", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_live_verification_pending_tasks_2_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L58", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L216", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L186", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_sse_smoke_test_result", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L78", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L206", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_phase_01_plan_04_integration_gate_slice_summary", + "target": "01_foundation_broker_spike_01_04_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L97", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_live_verification_pending_tasks_2_3", + "target": "01_foundation_broker_spike_01_04_summary_task_2_cal_08_spike_confirm_app_password_reads_shared_personal_calendars", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-04-SUMMARY.md", + "source_location": "L143", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_04_summary_live_verification_pending_tasks_2_3", + "target": "01_foundation_broker_spike_01_04_summary_task_3_live_deployment_authelia_login_pangolin_sse_smoke_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L1", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context", + "target": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L47", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "target": "01_foundation_broker_spike_01_context_canonical_references", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L94", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "target": "01_foundation_broker_spike_01_context_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L70", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "target": "01_foundation_broker_spike_01_context_existing_code_insights", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L16", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "target": "01_foundation_broker_spike_01_context_implementation_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L7", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "target": "01_foundation_broker_spike_01_context_phase_boundary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L86", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_phase_1_foundation_broker_spike_context", + "target": "01_foundation_broker_spike_01_context_specific_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L39", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_implementation_decisions", + "target": "01_foundation_broker_spike_01_context_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L28", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_implementation_decisions", + "target": "01_foundation_broker_spike_01_context_infrastructure_deployment_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L32", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_implementation_decisions", + "target": "01_foundation_broker_spike_01_context_locked_upstream_carried_forward_do_not_re_litigate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L25", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_implementation_decisions", + "target": "01_foundation_broker_spike_01_context_member_color_assignment_auth_03", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L18", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_implementation_decisions", + "target": "01_foundation_broker_spike_01_context_personal_calendar_access_spike_cal_08_gate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L62", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_canonical_references", + "target": "01_foundation_broker_spike_01_context_external_docs_authoritative", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L51", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_canonical_references", + "target": "01_foundation_broker_spike_01_context_phase_definition_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L56", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_canonical_references", + "target": "01_foundation_broker_spike_01_context_research_read_before_planning_flagged_needs_research_phase_by_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L75", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_existing_code_insights", + "target": "01_foundation_broker_spike_01_context_established_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L78", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_existing_code_insights", + "target": "01_foundation_broker_spike_01_context_integration_points", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L72", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_existing_code_insights", + "target": "01_foundation_broker_spike_01_context_reusable_assets", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-CONTEXT.md", + "source_location": "L100", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_context_deferred_ideas", + "target": "01_foundation_broker_spike_01_context_reviewed_todos_not_folded", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L1", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L12", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_area_selection", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L101", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L108", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L79", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_infra_validation_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L66", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_member_color_assignment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L23", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_phase_1_foundation_broker_spike_discussion_log", + "target": "01_foundation_broker_spike_01_discussion_log_personal_cal_spike_fallback", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L36", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_personal_cal_spike_fallback", + "target": "01_foundation_broker_spike_01_discussion_log_broker_access_model", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L55", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_personal_cal_spike_fallback", + "target": "01_foundation_broker_spike_01_discussion_log_credential_storage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L46", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_personal_cal_spike_fallback", + "target": "01_foundation_broker_spike_01_discussion_log_spike_credential_sequencing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L25", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_personal_cal_spike_fallback", + "target": "01_foundation_broker_spike_01_discussion_log_where_the_wife_s_personal_calendar_lives", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L81", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_infra_validation_scope", + "target": "01_foundation_broker_spike_01_discussion_log_deployment_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-DISCUSSION-LOG.md", + "source_location": "L90", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_discussion_log_infra_validation_scope", + "target": "01_foundation_broker_spike_01_discussion_log_pangolin_sse_smoke_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L9", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat", + "target": "01_foundation_broker_spike_01_human_uat_current_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L41", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat", + "target": "01_foundation_broker_spike_01_human_uat_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L32", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat", + "target": "01_foundation_broker_spike_01_human_uat_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L13", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat", + "target": "01_foundation_broker_spike_01_human_uat_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L15", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat_tests", + "target": "01_foundation_broker_spike_01_human_uat_1_auth_01_live_authelia_oidc_login_over_the_public_pangolin_url", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L20", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat_tests", + "target": "01_foundation_broker_spike_01_human_uat_2_auth_02_session_persists_across_browser_restart", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L24", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat_tests", + "target": "01_foundation_broker_spike_01_human_uat_3_auth_03_second_member_gets_a_distinct_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-HUMAN-UAT.md", + "source_location": "L28", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_human_uat_tests", + "target": "01_foundation_broker_spike_01_human_uat_4_sse_over_pangolin_smoke_test_de_risks_phase_4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research", + "target": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L67", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_architectural_responsibility_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L156", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_architecture_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L903", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_assumptions_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L795", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_code_examples", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L747", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_common_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L732", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_don_t_hand_roll", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L942", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_environment_availability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1081", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L918", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_open_questions_deferred_to_spike_resolved_empirically_in_plan_01_04", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L128", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_package_legitimacy_audit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L42", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_phase_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1025", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_security_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1053", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L84", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_standard_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L885", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_state_of_the_art", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L55", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L10", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_user_constraints_from_context_md", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L964", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_phase_1_foundation_broker_spike_research", + "target": "01_foundation_broker_spike_01_research_validation_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L28", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_user_constraints_from_context_md", + "target": "01_foundation_broker_spike_01_research_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L34", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_user_constraints_from_context_md", + "target": "01_foundation_broker_spike_01_research_deferred_ideas_out_of_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L12", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_user_constraints_from_context_md", + "target": "01_foundation_broker_spike_01_research_locked_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L86", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_standard_stack", + "target": "01_foundation_broker_spike_01_research_core_phase_1_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L109", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_standard_stack", + "target": "01_foundation_broker_spike_01_research_phase_1_backend_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L119", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_standard_stack", + "target": "01_foundation_broker_spike_01_research_phase_1_frontend_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L718", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_anti_patterns_to_avoid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L247", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_pattern_1_hono_oidc_auth_middleware_wiring", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L308", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_pattern_2_drizzle_mariadb_schema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L428", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_pattern_3_caldav_broker_tsdav", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L564", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_pattern_4_aes_gcm_app_password_encryption", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L618", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_pattern_5_pangolin_sse_smoke_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L654", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_pattern_6_docker_compose_layout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L204", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_recommended_project_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L158", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_architecture_patterns", + "target": "01_foundation_broker_spike_01_research_system_architecture_diagram", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L749", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_1_oidc_auth_external_url_missing_behind_pangolin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L757", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_2_all_day_event_date_stored_as_datetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L763", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_3_tsdav_createdavclient_requires_account_discovery_round_trip", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L769", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_4_node_cron_v4_vs_v3_api_change", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L775", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_5_drizzle_onduplicatekeyupdate_requires_mariadb_10_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L781", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_6_fastmail_ctag_vs_synctoken_field_availability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L787", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_common_pitfalls", + "target": "01_foundation_broker_spike_01_research_pitfall_7_authelia_client_secret_plain_vs_hashed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L854", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_code_examples", + "target": "01_foundation_broker_spike_01_research_hono_app_bootstrap_with_all_middleware", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L797", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_code_examples", + "target": "01_foundation_broker_spike_01_research_serving_pwa_static_files_from_hono", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L815", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_code_examples", + "target": "01_foundation_broker_spike_01_research_user_upsert_with_color_assignment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L977", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_validation_architecture", + "target": "01_foundation_broker_spike_01_research_phase_requirements_test_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L996", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_validation_architecture", + "target": "01_foundation_broker_spike_01_research_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L968", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_validation_architecture", + "target": "01_foundation_broker_spike_01_research_test_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1002", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_validation_architecture", + "target": "01_foundation_broker_spike_01_research_wave_0_gaps_must_create_before_implementation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1029", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_security_domain", + "target": "01_foundation_broker_spike_01_research_applicable_asvs_categories_level_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1039", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_security_domain", + "target": "01_foundation_broker_spike_01_research_known_threat_patterns_for_this_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1055", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_sources", + "target": "01_foundation_broker_spike_01_research_primary_high_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1065", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_sources", + "target": "01_foundation_broker_spike_01_research_secondary_medium_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-RESEARCH.md", + "source_location": "L1074", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_research_sources", + "target": "01_foundation_broker_spike_01_research_tertiary_low_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L10", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation", + "target": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L67", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "target": "01_foundation_broker_spike_01_validation_manual_only_verifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L37", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "target": "01_foundation_broker_spike_01_validation_per_task_verification_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L28", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "target": "01_foundation_broker_spike_01_validation_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L16", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "target": "01_foundation_broker_spike_01_validation_test_infrastructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L80", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "target": "01_foundation_broker_spike_01_validation_validation_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VALIDATION.md", + "source_location": "L54", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_validation_phase_1_validation_strategy", + "target": "01_foundation_broker_spike_01_validation_wave_0_requirements_created_in_plan_01_task_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L22", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification", + "target": "01_foundation_broker_spike_01_verification_phase_01_foundation_broker_spike_verification_report", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L192", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_phase_01_foundation_broker_spike_verification_report", + "target": "01_foundation_broker_spike_01_verification_gaps_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L31", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_phase_01_foundation_broker_spike_verification_report", + "target": "01_foundation_broker_spike_01_verification_goal_achievement", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L146", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_anti_patterns_found", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L116", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_behavioral_spot_checks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L106", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_data_flow_trace_level_4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L158", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_human_verification_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L86", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_key_link_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L33", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_observable_truths", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L128", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_probe_execution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L55", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_required_artifacts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L134", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_goal_achievement", + "target": "01_foundation_broker_spike_01_verification_requirements_coverage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L160", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_human_verification_required", + "target": "01_foundation_broker_spike_01_verification_1_auth_01_authelia_oidc_login_member_1_lucas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L168", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_human_verification_required", + "target": "01_foundation_broker_spike_01_verification_2_auth_02_session_persistence_across_browser_restart", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L176", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_human_verification_required", + "target": "01_foundation_broker_spike_01_verification_3_auth_03_cross_member_distinct_color_member_2_wife", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/01-VERIFICATION.md", + "source_location": "L184", + "weight": 1.0, + "source": "01_foundation_broker_spike_01_verification_human_verification_required", + "target": "01_foundation_broker_spike_01_verification_4_sse_smoke_test_pangolin_pass_through_d_08", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L1", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision", + "target": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L49", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "target": "01_foundation_broker_spike_cal_08_decision_decision", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L14", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "target": "01_foundation_broker_spike_cal_08_decision_how_to_run_the_spike", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L70", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "target": "01_foundation_broker_spike_cal_08_decision_notes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L29", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "target": "01_foundation_broker_spike_cal_08_decision_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L8", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_cal_08_personal_calendar_acl_spike_decision_record", + "target": "01_foundation_broker_spike_cal_08_decision_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L31", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_results", + "target": "01_foundation_broker_spike_cal_08_decision_calendars_discovered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/CAL-08-DECISION.md", + "source_location": "L38", + "weight": 1.0, + "source": "01_foundation_broker_spike_cal_08_decision_results", + "target": "01_foundation_broker_spike_cal_08_decision_questions_resolved", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L1", + "weight": 1.0, + "source": "01_foundation_broker_spike_skeleton", + "target": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L10", + "weight": 1.0, + "source": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "target": "01_foundation_broker_spike_skeleton_architectural_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L6", + "weight": 1.0, + "source": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "target": "01_foundation_broker_spike_skeleton_capability_proven_end_to_end", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L38", + "weight": 1.0, + "source": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "target": "01_foundation_broker_spike_skeleton_out_of_scope_deferred_to_later_slices", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L30", + "weight": 1.0, + "source": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "target": "01_foundation_broker_spike_skeleton_stack_touched_in_phase_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/01-foundation-broker-spike/SKELETON.md", + "source_location": "L49", + "weight": 1.0, + "source": "01_foundation_broker_spike_skeleton_walking_skeleton_familysync", + "target": "01_foundation_broker_spike_skeleton_subsequent_slice_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L67", + "weight": 1.0, + "source": "02_calendar_display_continue_here", + "target": "02_calendar_display_continue_here_critical_anti_patterns_do_not_repeat_these", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L74", + "weight": 1.0, + "source": "02_calendar_display_continue_here", + "target": "02_calendar_display_continue_here_infrastructure_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/.continue-here.md", + "source_location": "L60", + "weight": 1.0, + "source": "02_calendar_display_continue_here", + "target": "02_calendar_display_continue_here_required_reading_in_order", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L231", + "weight": 1.0, + "source": "02_calendar_display_02_01_plan", + "target": "02_calendar_display_02_01_plan_artifacts_this_phase_produces_plan_01", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L207", + "weight": 1.0, + "source": "02_calendar_display_02_01_plan", + "target": "02_calendar_display_02_01_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-PLAN.md", + "source_location": "L200", + "weight": 1.0, + "source": "02_calendar_display_02_01_plan", + "target": "02_calendar_display_02_01_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L50", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary", + "target": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L113", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "target": "02_calendar_display_02_01_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L125", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "target": "02_calendar_display_02_01_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L139", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "target": "02_calendar_display_02_01_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L135", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "target": "02_calendar_display_02_01_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L54", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_phase_02_plan_01_foundation_schema_columns_test_harness_dev_auth_bypass_summary", + "target": "02_calendar_display_02_01_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L98", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_what_was_built", + "target": "02_calendar_display_02_01_summary_dev_auth_bypass_task_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L72", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_what_was_built", + "target": "02_calendar_display_02_01_summary_ics_fixtures_task_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L65", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_what_was_built", + "target": "02_calendar_display_02_01_summary_pwa_test_harness_task_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L81", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_what_was_built", + "target": "02_calendar_display_02_01_summary_red_test_stubs_task_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L56", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_what_was_built", + "target": "02_calendar_display_02_01_summary_schema_changes_task_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-01-SUMMARY.md", + "source_location": "L115", + "weight": 1.0, + "source": "02_calendar_display_02_01_summary_deviations_from_plan", + "target": "02_calendar_display_02_01_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L218", + "weight": 1.0, + "source": "02_calendar_display_02_02_plan", + "target": "02_calendar_display_02_02_plan_artifacts_this_phase_produces_plan_02", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L194", + "weight": 1.0, + "source": "02_calendar_display_02_02_plan", + "target": "02_calendar_display_02_02_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-PLAN.md", + "source_location": "L187", + "weight": 1.0, + "source": "02_calendar_display_02_02_plan", + "target": "02_calendar_display_02_02_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L37", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary", + "target": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L112", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "target": "02_calendar_display_02_02_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L128", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "target": "02_calendar_display_02_02_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L141", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "target": "02_calendar_display_02_02_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L132", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "target": "02_calendar_display_02_02_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L41", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_phase_02_plan_02_windowed_api_events_recurrence_expansion_color_join_summary", + "target": "02_calendar_display_02_02_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L43", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_what_was_built", + "target": "02_calendar_display_02_02_summary_task_1_expandoccurrences_apps_api_src_broker_expand_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L68", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_what_was_built", + "target": "02_calendar_display_02_02_summary_task_2_windowed_api_events_apps_api_src_routes_events_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L100", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_what_was_built", + "target": "02_calendar_display_02_02_summary_task_3_shared_family_calendar_marking_resolved_by_deferral", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-02-SUMMARY.md", + "source_location": "L114", + "weight": 1.0, + "source": "02_calendar_display_02_02_summary_deviations_from_plan", + "target": "02_calendar_display_02_02_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L241", + "weight": 1.0, + "source": "02_calendar_display_02_03_plan", + "target": "02_calendar_display_02_03_plan_artifacts_this_phase_produces_plan_03", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L217", + "weight": 1.0, + "source": "02_calendar_display_02_03_plan", + "target": "02_calendar_display_02_03_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-PLAN.md", + "source_location": "L210", + "weight": 1.0, + "source": "02_calendar_display_02_03_plan", + "target": "02_calendar_display_02_03_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L60", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary", + "target": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L138", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "target": "02_calendar_display_02_03_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L156", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "target": "02_calendar_display_02_03_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L164", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "target": "02_calendar_display_02_03_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L160", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "target": "02_calendar_display_02_03_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L124", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "target": "02_calendar_display_02_03_summary_verification_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L64", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_phase_02_plan_03_pwa_foundation_token_layer_color_utils_calendar_config_hydration_store_summary", + "target": "02_calendar_display_02_03_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L66", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_what_was_built", + "target": "02_calendar_display_02_03_summary_task_1_schedule_x_stack_token_layer_main_tsx_import_order", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L91", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_what_was_built", + "target": "02_calendar_display_02_03_summary_task_2_colorutils_calendarconfig_red_stubs_turned_green", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L105", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_what_was_built", + "target": "02_calendar_display_02_03_summary_task_3_hydrateevents_calendarstore_windowed_fetchevents_red_stubs_turned_green", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-03-SUMMARY.md", + "source_location": "L140", + "weight": 1.0, + "source": "02_calendar_display_02_03_summary_deviations_from_plan", + "target": "02_calendar_display_02_03_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L173", + "weight": 1.0, + "source": "02_calendar_display_02_04_plan", + "target": "02_calendar_display_02_04_plan_artifacts_this_phase_produces_plan_04", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L152", + "weight": 1.0, + "source": "02_calendar_display_02_04_plan", + "target": "02_calendar_display_02_04_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-PLAN.md", + "source_location": "L146", + "weight": 1.0, + "source": "02_calendar_display_02_04_plan", + "target": "02_calendar_display_02_04_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L39", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary", + "target": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L85", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "target": "02_calendar_display_02_04_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L103", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "target": "02_calendar_display_02_04_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L112", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "target": "02_calendar_display_02_04_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L107", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "target": "02_calendar_display_02_04_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L75", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "target": "02_calendar_display_02_04_summary_verification_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L43", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_phase_02_plan_04_calendarshell_schedule_x_mounted_wired_to_data_pipeline_summary", + "target": "02_calendar_display_02_04_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L45", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_what_was_built", + "target": "02_calendar_display_02_04_summary_task_1_calendarshell_app_tsx", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L61", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_what_was_built", + "target": "02_calendar_display_02_04_summary_task_2_calendarshell_render_smoke_test_cal_03", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-04-SUMMARY.md", + "source_location": "L87", + "weight": 1.0, + "source": "02_calendar_display_02_04_summary_deviations_from_plan", + "target": "02_calendar_display_02_04_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L206", + "weight": 1.0, + "source": "02_calendar_display_02_05_plan", + "target": "02_calendar_display_02_05_plan_artifacts_this_phase_produces_plan_05", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L183", + "weight": 1.0, + "source": "02_calendar_display_02_05_plan", + "target": "02_calendar_display_02_05_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-PLAN.md", + "source_location": "L177", + "weight": 1.0, + "source": "02_calendar_display_02_05_plan", + "target": "02_calendar_display_02_05_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L50", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary", + "target": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L123", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L165", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_human_verify_checkpoint_task_3_awaiting_operator", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L152", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L169", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L156", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L112", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_verification_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L54", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_phase_02_plan_05_calendar_ux_popover_chrome_states_summary", + "target": "02_calendar_display_02_05_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L56", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_what_was_built", + "target": "02_calendar_display_02_05_summary_task_1_eventdetailpopover_calendarshell_wiring_tdd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L77", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_what_was_built", + "target": "02_calendar_display_02_05_summary_task_2_chrome_components_state_branches_eventproof_retired", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L125", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_deviations_from_plan", + "target": "02_calendar_display_02_05_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-05-SUMMARY.md", + "source_location": "L148", + "weight": 1.0, + "source": "02_calendar_display_02_05_summary_deviations_from_plan", + "target": "02_calendar_display_02_05_summary_task_3_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L1", + "weight": 1.0, + "source": "02_calendar_display_02_context", + "target": "02_calendar_display_02_context_phase_2_calendar_display_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L81", + "weight": 1.0, + "source": "02_calendar_display_02_context_phase_2_calendar_display_context", + "target": "02_calendar_display_02_context_canonical_references", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L128", + "weight": 1.0, + "source": "02_calendar_display_02_context_phase_2_calendar_display_context", + "target": "02_calendar_display_02_context_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L101", + "weight": 1.0, + "source": "02_calendar_display_02_context_phase_2_calendar_display_context", + "target": "02_calendar_display_02_context_existing_code_insights", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L21", + "weight": 1.0, + "source": "02_calendar_display_02_context_phase_2_calendar_display_context", + "target": "02_calendar_display_02_context_implementation_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L7", + "weight": 1.0, + "source": "02_calendar_display_02_context_phase_2_calendar_display_context", + "target": "02_calendar_display_02_context_phase_boundary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L120", + "weight": 1.0, + "source": "02_calendar_display_02_context_phase_2_calendar_display_context", + "target": "02_calendar_display_02_context_specific_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L62", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L41", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_color_ownership_legibility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L73", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_dev_auth_bypass_from_d_14_project_level", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L49", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_event_detail_density", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L55", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_recurrence_time_carried_forward_not_re_discussed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L23", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_theming_architecture_the_load_bearing_decision", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L35", + "weight": 1.0, + "source": "02_calendar_display_02_context_implementation_decisions", + "target": "02_calendar_display_02_context_views_default", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L90", + "weight": 1.0, + "source": "02_calendar_display_02_context_canonical_references", + "target": "02_calendar_display_02_context_phase_1_foundation_this_builds_on", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L85", + "weight": 1.0, + "source": "02_calendar_display_02_context_canonical_references", + "target": "02_calendar_display_02_context_project_decisions_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L109", + "weight": 1.0, + "source": "02_calendar_display_02_context_existing_code_insights", + "target": "02_calendar_display_02_context_established_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L114", + "weight": 1.0, + "source": "02_calendar_display_02_context_existing_code_insights", + "target": "02_calendar_display_02_context_integration_points", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L103", + "weight": 1.0, + "source": "02_calendar_display_02_context_existing_code_insights", + "target": "02_calendar_display_02_context_reusable_assets", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-CONTEXT.md", + "source_location": "L135", + "weight": 1.0, + "source": "02_calendar_display_02_context_deferred_ideas", + "target": "02_calendar_display_02_context_reviewed_todos_not_folded", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L1", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log", + "target": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L61", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "target": "02_calendar_display_02_discussion_log_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L40", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "target": "02_calendar_display_02_discussion_log_color_shared_vs_personal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L30", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "target": "02_calendar_display_02_discussion_log_default_view_per_device", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L66", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "target": "02_calendar_display_02_discussion_log_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L51", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "target": "02_calendar_display_02_discussion_log_event_detail_density", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-DISCUSSION-LOG.md", + "source_location": "L12", + "weight": 1.0, + "source": "02_calendar_display_02_discussion_log_phase_2_calendar_display_discussion_log", + "target": "02_calendar_display_02_discussion_log_visual_model_theming_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L9", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat", + "target": "02_calendar_display_02_human_uat_current_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L40", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat", + "target": "02_calendar_display_02_human_uat_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L31", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat", + "target": "02_calendar_display_02_human_uat_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L13", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat", + "target": "02_calendar_display_02_human_uat_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L15", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat_tests", + "target": "02_calendar_display_02_human_uat_1_color_coded_rendering", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L19", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat_tests", + "target": "02_calendar_display_02_human_uat_2_all_four_views_render_grid_scrolls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L23", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat_tests", + "target": "02_calendar_display_02_human_uat_3_recurring_events_across_dst", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-HUMAN-UAT.md", + "source_location": "L27", + "weight": 1.0, + "source": "02_calendar_display_02_human_uat_tests", + "target": "02_calendar_display_02_human_uat_4_all_day_banners_no_date_shift", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L1", + "weight": 1.0, + "source": "02_calendar_display_02_patterns", + "target": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L9", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "target": "02_calendar_display_02_patterns_file_classification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L719", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "target": "02_calendar_display_02_patterns_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L708", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "target": "02_calendar_display_02_patterns_no_analog_found", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L39", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "target": "02_calendar_display_02_patterns_pattern_assignments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L628", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_phase_2_calendar_display_pattern_map", + "target": "02_calendar_display_02_patterns_shared_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L195", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_src_auth_devbypass_ts_middleware_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L75", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_src_broker_expand_ts_utility_transform_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L41", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_src_db_schema_ts_model_modify_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L226", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_src_index_ts_config_modify_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L135", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_src_routes_events_ts_route_request_response_modify_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L258", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_tests_broker_expand_test_ts_test_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L308", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_api_tests_routes_events_test_ts_test_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L355", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_api_client_ts_utility_request_response_modify_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L487", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_components_calendarshell_tsx_component_request_response_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L532", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_components_eventdetailpopover_tsx_component_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L559", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_components_skeletoncalendar_tsx_component_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L417", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_lib_calendarconfig_ts_utility_transform_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L434", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_lib_colorutils_ts_utility_transform_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L391", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_lib_hydrateevents_ts_utility_transform_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L590", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_main_tsx_config_modify_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L467", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_src_store_calendarstore_ts_store_event_driven_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L337", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_pattern_assignments", + "target": "02_calendar_display_02_patterns_apps_pwa_vitest_config_ts_config_new_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L630", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_authentication_guard_all_api_routes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L696", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_css_token_usage_in_components", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L662", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_d_13_allday_discrimination", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L652", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_drizzle_upsert_pattern", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L685", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_fetch_client_with_credentials", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L639", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_hono_route_error_handling", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-PATTERNS.md", + "source_location": "L673", + "weight": 1.0, + "source": "02_calendar_display_02_patterns_shared_patterns", + "target": "02_calendar_display_02_patterns_tanstack_query_usage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L1", + "weight": 1.0, + "source": "02_calendar_display_02_research", + "target": "02_calendar_display_02_research_phase_2_calendar_display_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L68", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_architectural_responsibility_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L139", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_architecture_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L849", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_assumptions_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L708", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_backend_api_events_evolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L599", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_code_examples", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L525", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_common_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L510", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_don_t_hand_roll", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L835", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_environment_availability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L907", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L865", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_open_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L118", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_package_legitimacy_audit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L45", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_phase_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L810", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_security_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L884", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L85", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_standard_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L741", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_state_of_the_art", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L56", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L10", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_user_constraints_from_context_md", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L756", + "weight": 1.0, + "source": "02_calendar_display_02_research_phase_2_calendar_display_research", + "target": "02_calendar_display_02_research_validation_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L29", + "weight": 1.0, + "source": "02_calendar_display_02_research_user_constraints_from_context_md", + "target": "02_calendar_display_02_research_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L34", + "weight": 1.0, + "source": "02_calendar_display_02_research_user_constraints_from_context_md", + "target": "02_calendar_display_02_research_deferred_ideas_out_of_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L12", + "weight": 1.0, + "source": "02_calendar_display_02_research_user_constraints_from_context_md", + "target": "02_calendar_display_02_research_locked_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L87", + "weight": 1.0, + "source": "02_calendar_display_02_research_standard_stack", + "target": "02_calendar_display_02_research_core_all_versions_verified_against_npm_registry_2026_06_04", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L105", + "weight": 1.0, + "source": "02_calendar_display_02_research_standard_stack", + "target": "02_calendar_display_02_research_installation_pwa_only", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L101", + "weight": 1.0, + "source": "02_calendar_display_02_research_standard_stack", + "target": "02_calendar_display_02_research_no_new_backend_dependencies_needed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L498", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_anti_patterns_to_avoid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L216", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_pattern_1_api_events_windowed_query_with_expansion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L297", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_pattern_2_schedule_x_event_format_temporal_not_iso_strings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L349", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_pattern_3_schedule_x_calendar_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L410", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_pattern_4_tanstack_query_onrangeupdate_wiring", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L464", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_pattern_5_dev_auth_bypass_middleware", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L186", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_recommended_project_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L141", + "weight": 1.0, + "source": "02_calendar_display_02_research_architecture_patterns", + "target": "02_calendar_display_02_research_system_architecture_diagram", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L527", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_1_firstdayofweek_temporal_numbering_mismatch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L537", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_2_all_day_events_shifting_by_one_day", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L547", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_3_missing_vtimezone_registration_causes_dst_shifted_occurrences", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L557", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_4_schedule_x_iso_string_events_silently_fail", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L567", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_5_unwindowed_api_events_endpoint", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L577", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_6_schedule_x_react_version_behind_schedule_x_calendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L587", + "weight": 1.0, + "source": "02_calendar_display_02_research_common_pitfalls", + "target": "02_calendar_display_02_research_pitfall_7_dev_auth_bypass_active_in_production", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L666", + "weight": 1.0, + "source": "02_calendar_display_02_research_code_examples", + "target": "02_calendar_display_02_research_all_day_event_server_format_to_schedule_x_plaindate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L680", + "weight": 1.0, + "source": "02_calendar_display_02_research_code_examples", + "target": "02_calendar_display_02_research_schedule_x_css_token_override_pattern", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L601", + "weight": 1.0, + "source": "02_calendar_display_02_research_code_examples", + "target": "02_calendar_display_02_research_vtimezone_registration_ical_recurexpansion_complete_pattern", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L710", + "weight": 1.0, + "source": "02_calendar_display_02_research_backend_api_events_evolution", + "target": "02_calendar_display_02_research_current_state_phase_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L720", + "weight": 1.0, + "source": "02_calendar_display_02_research_backend_api_events_evolution", + "target": "02_calendar_display_02_research_target_state_phase_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L780", + "weight": 1.0, + "source": "02_calendar_display_02_research_validation_architecture", + "target": "02_calendar_display_02_research_fixture_ics_files_test_corpus", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L767", + "weight": 1.0, + "source": "02_calendar_display_02_research_validation_architecture", + "target": "02_calendar_display_02_research_phase_requirements_test_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L793", + "weight": 1.0, + "source": "02_calendar_display_02_research_validation_architecture", + "target": "02_calendar_display_02_research_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L758", + "weight": 1.0, + "source": "02_calendar_display_02_research_validation_architecture", + "target": "02_calendar_display_02_research_test_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L799", + "weight": 1.0, + "source": "02_calendar_display_02_research_validation_architecture", + "target": "02_calendar_display_02_research_wave_0_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L814", + "weight": 1.0, + "source": "02_calendar_display_02_research_security_domain", + "target": "02_calendar_display_02_research_applicable_asvs_categories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L824", + "weight": 1.0, + "source": "02_calendar_display_02_research_security_domain", + "target": "02_calendar_display_02_research_known_threat_patterns_for_this_phase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L886", + "weight": 1.0, + "source": "02_calendar_display_02_research_sources", + "target": "02_calendar_display_02_research_primary_high_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L897", + "weight": 1.0, + "source": "02_calendar_display_02_research_sources", + "target": "02_calendar_display_02_research_secondary_medium_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-RESEARCH.md", + "source_location": "L902", + "weight": 1.0, + "source": "02_calendar_display_02_research_sources", + "target": "02_calendar_display_02_research_tertiary_low_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L10", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec", + "target": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L168", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_breakpoints", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L11", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_calendar_display", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L188", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_calendar_rendering_library", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L420", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_checker_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L61", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_color_tokens", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L220", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_component_inventory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L321", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_copywriting_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L18", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_design_system", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L342", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_interaction_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L431", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_post_verification_reviewer_notes_non_blocking_apply_during_implementation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L398", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_pre_population_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L386", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_registry_safety", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L129", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_spacing_scale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L371", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_state_management_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L34", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_token_layer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L151", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_typography", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L292", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_phase_2_ui_design_contract", + "target": "02_calendar_display_02_ui_spec_view_layout_specification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L50", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_token_layer", + "target": "02_calendar_display_02_ui_spec_calendar_config_constant", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L39", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_token_layer", + "target": "02_calendar_display_02_ui_spec_file_location", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L110", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_color_tokens", + "target": "02_calendar_display_02_ui_spec_60_30_10_split", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L63", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_color_tokens", + "target": "02_calendar_display_02_ui_spec_base_palette", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L98", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_color_tokens", + "target": "02_calendar_display_02_ui_spec_color_derivation_rule_for_event_chips", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L121", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_color_tokens", + "target": "02_calendar_display_02_ui_spec_destructive", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L78", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_color_tokens", + "target": "02_calendar_display_02_ui_spec_semantic_calendar_colors", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L259", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_agendarow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L229", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_appnav", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L222", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_calendarshell", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L240", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_colorlegend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L284", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_emptystate_no_events_in_range", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L253", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_eventblock_week_day_view", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L246", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_eventchip_month_grid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L265", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_eventdetailpopover_read_only_in_phase_2_reused_as_edit_surface_in_phase_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L277", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_skeletoncalendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L233", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_component_inventory", + "target": "02_calendar_display_02_ui_spec_viewtoolbar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L313", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_view_layout_specification", + "target": "02_calendar_display_02_ui_spec_agenda_view_default_phone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L309", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_view_layout_specification", + "target": "02_calendar_display_02_ui_spec_day_view", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L294", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_view_layout_specification", + "target": "02_calendar_display_02_ui_spec_month_view_default_tablet_desktop", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L302", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_view_layout_specification", + "target": "02_calendar_display_02_ui_spec_week_view", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L365", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_interaction_contract", + "target": "02_calendar_display_02_ui_spec_error_retry", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L357", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_interaction_contract", + "target": "02_calendar_display_02_ui_spec_keyboard_accessibility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L344", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_interaction_contract", + "target": "02_calendar_display_02_ui_spec_navigation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-UI-SPEC.md", + "source_location": "L350", + "weight": 1.0, + "source": "02_calendar_display_02_ui_spec_interaction_contract", + "target": "02_calendar_display_02_ui_spec_touch_ios_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L10", + "weight": 1.0, + "source": "02_calendar_display_02_validation", + "target": "02_calendar_display_02_validation_phase_02_validation_strategy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L82", + "weight": 1.0, + "source": "02_calendar_display_02_validation_phase_02_validation_strategy", + "target": "02_calendar_display_02_validation_manual_only_verifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L42", + "weight": 1.0, + "source": "02_calendar_display_02_validation_phase_02_validation_strategy", + "target": "02_calendar_display_02_validation_per_task_verification_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L33", + "weight": 1.0, + "source": "02_calendar_display_02_validation_phase_02_validation_strategy", + "target": "02_calendar_display_02_validation_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L16", + "weight": 1.0, + "source": "02_calendar_display_02_validation_phase_02_validation_strategy", + "target": "02_calendar_display_02_validation_test_infrastructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L94", + "weight": 1.0, + "source": "02_calendar_display_02_validation_phase_02_validation_strategy", + "target": "02_calendar_display_02_validation_validation_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VALIDATION.md", + "source_location": "L67", + "weight": 1.0, + "source": "02_calendar_display_02_validation_phase_02_validation_strategy", + "target": "02_calendar_display_02_validation_wave_0_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L23", + "weight": 1.0, + "source": "02_calendar_display_02_verification", + "target": "02_calendar_display_02_verification_phase_02_calendar_display_verification_report", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L34", + "weight": 1.0, + "source": "02_calendar_display_02_verification_phase_02_calendar_display_verification_report", + "target": "02_calendar_display_02_verification_goal_achievement", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L155", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_anti_patterns_found", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L110", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_behavioral_spot_checks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L99", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_data_flow_trace_level_4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L52", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_deferred_items", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L217", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_gaps_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L178", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_human_verification_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L81", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_key_link_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L36", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_observable_truths", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L132", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_probe_execution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L60", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_required_artifacts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L139", + "weight": 1.0, + "source": "02_calendar_display_02_verification_goal_achievement", + "target": "02_calendar_display_02_verification_requirements_coverage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L183", + "weight": 1.0, + "source": "02_calendar_display_02_verification_human_verification_required", + "target": "02_calendar_display_02_verification_1_color_coded_event_rendering", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L192", + "weight": 1.0, + "source": "02_calendar_display_02_verification_human_verification_required", + "target": "02_calendar_display_02_verification_2_all_four_views_render_events_correctly", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L200", + "weight": 1.0, + "source": "02_calendar_display_02_verification_human_verification_required", + "target": "02_calendar_display_02_verification_3_recurring_events_dst_boundary_cal_07", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/02-calendar-display/02-VERIFICATION.md", + "source_location": "L208", + "weight": 1.0, + "source": "02_calendar_display_02_verification_human_verification_required", + "target": "02_calendar_display_02_verification_4_all_day_events_no_date_shift_cal_07", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-PLAN.md", + "source_location": "L222", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_plan", + "target": "03_event_write_back_pwa_install_03_01_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-PLAN.md", + "source_location": "L215", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_plan", + "target": "03_event_write_back_pwa_install_03_01_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L50", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L20", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L93", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L97", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L82", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L115", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_issues_encountered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L123", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_next_phase_readiness", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L74", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L119", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_phase_03_plan_01_foundation_scaffold_summary", + "target": "03_event_write_back_pwa_install_03_01_summary_user_setup_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-01-SUMMARY.md", + "source_location": "L99", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_01_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_01_summary_task_5_drizzle_kit_push_replaced_by_hand_applied_additive_ddl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-PLAN.md", + "source_location": "L138", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_plan", + "target": "03_event_write_back_pwa_install_03_02_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-PLAN.md", + "source_location": "L132", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_plan", + "target": "03_event_write_back_pwa_install_03_02_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L39", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L20", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L56", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L75", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L81", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L70", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_files_created", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L99", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L48", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L107", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L65", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L103", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_phase_03_plan_02_broker_primitives_vevent_ts_write_ts_summary", + "target": "03_event_write_back_pwa_install_03_02_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-02-SUMMARY.md", + "source_location": "L83", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_02_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_02_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-PLAN.md", + "source_location": "L165", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_plan", + "target": "03_event_write_back_pwa_install_03_03_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-PLAN.md", + "source_location": "L158", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_plan", + "target": "03_event_write_back_pwa_install_03_03_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L71", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L89", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L96", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L84", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L113", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_issues_encountered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L117", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L136", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_next_phase_readiness", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L63", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L125", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_self_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L134", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L79", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L121", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_phase_03_plan_03_write_api_surface_summary", + "target": "03_event_write_back_pwa_install_03_03_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-03-SUMMARY.md", + "source_location": "L98", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_03_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_03_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-PLAN.md", + "source_location": "L142", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_plan", + "target": "03_event_write_back_pwa_install_03_04_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-PLAN.md", + "source_location": "L135", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_plan", + "target": "03_event_write_back_pwa_install_03_04_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L50", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L25", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L88", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L96", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L82", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L114", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L126", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_self_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L138", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L77", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L118", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_phase_03_plan_04_outbox_worker_summary", + "target": "03_event_write_back_pwa_install_03_04_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-04-SUMMARY.md", + "source_location": "L98", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_04_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_04_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-PLAN.md", + "source_location": "L167", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_plan", + "target": "03_event_write_back_pwa_install_03_05_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-PLAN.md", + "source_location": "L161", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_plan", + "target": "03_event_write_back_pwa_install_03_05_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L36", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L93", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L115", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L119", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L86", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_test_coverage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L106", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L40", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_phase_03_plan_05_event_write_ui_eventform_client_calls_summary", + "target": "03_event_write_back_pwa_install_03_05_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L42", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_05_summary_task_1_typed_write_client_calls_zustand_form_state_keys", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_05_summary_task_2_eventform_modal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L77", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_05_summary_task_3_mount_eventform_new_event_fab_toolbar_in_calendarshell", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-05-SUMMARY.md", + "source_location": "L95", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_05_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_05_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-PLAN.md", + "source_location": "L163", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_plan", + "target": "03_event_write_back_pwa_install_03_06_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-PLAN.md", + "source_location": "L157", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_plan", + "target": "03_event_write_back_pwa_install_03_06_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L121", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L156", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L167", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L48", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_tasks_completed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L160", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L105", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L56", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_phase_03_plan_06_edit_delete_syncstatetoast_summary", + "target": "03_event_write_back_pwa_install_03_06_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L58", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_06_summary_task_1_client_calls_zustand_keys_red_8357cf9_green_8aeacc8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L72", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_06_summary_task_2_syncstatetoast_red_6874e1a_green_aa7c4c3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L87", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_06_summary_task_3_eventdetailpopover_footer_deleteconfirmationdialog_red_2fbeffe_green_40322e1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-06-SUMMARY.md", + "source_location": "L123", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_06_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_06_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-PLAN.md", + "source_location": "L137", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_plan", + "target": "03_event_write_back_pwa_install_03_07_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-PLAN.md", + "source_location": "L131", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_plan", + "target": "03_event_write_back_pwa_install_03_07_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L46", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_metrics", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L51", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L21", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L63", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L103", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L108", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L93", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L119", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L131", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L88", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L112", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_tdd_gate_compliance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L124", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_phase_03_plan_07_pwa_install_vitepwa_manifest_installprompt_summary", + "target": "03_event_write_back_pwa_install_03_07_summary_threat_surface_scan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L65", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_accomplishments", + "target": "03_event_write_back_pwa_install_03_07_summary_task_1_vitepwa_manifest_service_worker_ios_head_icons", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-07-SUMMARY.md", + "source_location": "L76", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_07_summary_accomplishments", + "target": "03_event_write_back_pwa_install_03_07_summary_task_2_installprompt_tdd_green_red_scaffold_from_plan_01", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-PLAN.md", + "source_location": "L144", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_plan", + "target": "03_event_write_back_pwa_install_03_08_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-PLAN.md", + "source_location": "L138", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_plan", + "target": "03_event_write_back_pwa_install_03_08_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L7", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_dependency_graph", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L40", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L26", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_tech_tracking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L53", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_blocker_bugs_found_fixed_live_all_committed_deployed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L63", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_deferred_carried_forward", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_outcome", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L73", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_self_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-08-SUMMARY.md", + "source_location": "L69", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_08_summary_phase_03_plan_08_gate_2_live_verification_summary", + "target": "03_event_write_back_pwa_install_03_08_summary_verification_method", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L35", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L56", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L77", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L85", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L39", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_tasks_completed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L71", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_tdd_gate_compliance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L81", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L48", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_phase_03_plan_09_route_schema_oidc_resolution_fix_summary", + "target": "03_event_write_back_pwa_install_03_09_summary_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L63", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_09_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-09-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_09_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_09_summary_test_infrastructure_deviation_rule_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L83", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L95", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_issues_closed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L106", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L114", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L48", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_tasks_completed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L73", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_tdd_gate_compliance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L110", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L57", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_phase_03_plan_10_outbox_worker_ics_builder_wiring_summary", + "target": "03_event_write_back_pwa_install_03_10_summary_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L85", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_10_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-10-SUMMARY.md", + "source_location": "L89", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_10_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_10_summary_infrastructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L40", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L52", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_accomplishments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L72", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_decisions_made", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L79", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_files_created_modified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L107", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_issues_closed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L95", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_issues_encountered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L115", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_performance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L123", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L58", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_task_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L119", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L99", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_phase_03_plan_11_outbox_durability_and_etag_fix_summary", + "target": "03_event_write_back_pwa_install_03_11_summary_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-11-SUMMARY.md", + "source_location": "L81", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_11_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_11_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L36", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L99", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L127", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_issues_closed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L138", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L40", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_tasks_completed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L90", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_tdd_gate_compliance", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L115", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L49", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_phase_03_plan_12_eventform_gap_closure_edit_mode_focus_trap_pwa_assets_summary", + "target": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_12_summary_in_03_todayiso_exported_from_calendarstore", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L81", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_12_summary_pwa_01_pwa_02_install_assets_confirmed_present_in_04", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L51", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_12_summary_wr_03_edit_form_re_populates_when_occurrence_arrives_after_open", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_12_summary_wr_05_zone_consistent_parsedatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L71", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_what_was_built", + "target": "03_event_write_back_pwa_install_03_12_summary_wr_07_real_focus_trap_on_eventform_dialog", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-12-SUMMARY.md", + "source_location": "L101", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_12_summary_deviations_from_plan", + "target": "03_event_write_back_pwa_install_03_12_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L1", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context", + "target": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L100", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "target": "03_event_write_back_pwa_install_03_context_canonical_references", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L188", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "target": "03_event_write_back_pwa_install_03_context_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L142", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "target": "03_event_write_back_pwa_install_03_context_existing_code_insights", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L28", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "target": "03_event_write_back_pwa_install_03_context_implementation_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L7", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "target": "03_event_write_back_pwa_install_03_context_phase_boundary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L175", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_phase_3_event_write_back_pwa_install_context", + "target": "03_event_write_back_pwa_install_03_context_specific_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L69", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_implementation_decisions", + "target": "03_event_write_back_pwa_install_03_context_carried_forward_locked_not_re_discussed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L80", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_implementation_decisions", + "target": "03_event_write_back_pwa_install_03_context_claude_s_discretion_researcher_planner_decide", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L30", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_implementation_decisions", + "target": "03_event_write_back_pwa_install_03_context_target_calendar_selection_write_target", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L45", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_implementation_decisions", + "target": "03_event_write_back_pwa_install_03_context_write_feedback_sync_the_load_bearing_architecture_decision", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L122", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_canonical_references", + "target": "03_event_write_back_pwa_install_03_context_code_this_phase_extends", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L114", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_canonical_references", + "target": "03_event_write_back_pwa_install_03_context_phase_1_2_foundation_this_builds_on", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L104", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_canonical_references", + "target": "03_event_write_back_pwa_install_03_context_project_decisions_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L153", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_existing_code_insights", + "target": "03_event_write_back_pwa_install_03_context_established_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L161", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_existing_code_insights", + "target": "03_event_write_back_pwa_install_03_context_integration_points", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-CONTEXT.md", + "source_location": "L144", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_context_existing_code_insights", + "target": "03_event_write_back_pwa_install_03_context_reusable_assets", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L1", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log", + "target": "03_event_write_back_pwa_install_03_discussion_log_phase_3_event_write_back_pwa_install_discussion_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L99", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_phase_3_event_write_back_pwa_install_discussion_log", + "target": "03_event_write_back_pwa_install_03_discussion_log_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L107", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_phase_3_event_write_back_pwa_install_discussion_log", + "target": "03_event_write_back_pwa_install_03_discussion_log_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L14", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_phase_3_event_write_back_pwa_install_discussion_log", + "target": "03_event_write_back_pwa_install_03_discussion_log_target_calendar_pick", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L53", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_phase_3_event_write_back_pwa_install_discussion_log", + "target": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L26", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_target_calendar_pick", + "target": "03_event_write_back_pwa_install_03_discussion_log_calendar_selector_visibility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L16", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_target_calendar_pick", + "target": "03_event_write_back_pwa_install_03_discussion_log_default_target_calendar_for_a_new_event", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L34", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_target_calendar_pick", + "target": "03_event_write_back_pwa_install_03_discussion_log_move_event_between_calendars_on_edit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L43", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_target_calendar_pick", + "target": "03_event_write_back_pwa_install_03_discussion_log_writable_calendar_set", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L64", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "target": "03_event_write_back_pwa_install_03_discussion_log_behavior_when_the_caldav_write_fails", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L73", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "target": "03_event_write_back_pwa_install_03_discussion_log_edit_conflict_etag_mismatch_412_handling", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "target": "03_event_write_back_pwa_install_03_discussion_log_how_the_member_sees_their_own_change_after_save_poll_based_cache", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L81", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "target": "03_event_write_back_pwa_install_03_discussion_log_pending_write_queue_location", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-DISCUSSION-LOG.md", + "source_location": "L89", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_discussion_log_write_feedback_sync", + "target": "03_event_write_back_pwa_install_03_discussion_log_transient_vs_hard_failure_classification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L1", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results", + "target": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L121", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "target": "03_event_write_back_pwa_install_03_gate2_results_gate_2_checklist", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L3", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "target": "03_event_write_back_pwa_install_03_gate2_results_header", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L178", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "target": "03_event_write_back_pwa_install_03_gate2_results_health_tunnel_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L24", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "target": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L190", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_phase_3_gate_2_live_verification_results", + "target": "03_event_write_back_pwa_install_03_gate2_results_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L29", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "target": "03_event_write_back_pwa_install_03_gate2_results_1_register_familysync_as_an_authelia_oidc_confidential_client", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "target": "03_event_write_back_pwa_install_03_gate2_results_2_set_oidc_auth_external_url_in_the_app_s_env", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L82", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "target": "03_event_write_back_pwa_install_03_gate2_results_3_expose_via_pangolin_newt_mode_a_local_rig", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L98", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "target": "03_event_write_back_pwa_install_03_gate2_results_4_apply_database_schema_first_deploy_only", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L107", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_operator_setup_required_before_gate_2", + "target": "03_event_write_back_pwa_install_03_gate2_results_5_bring_up_the_app_and_confirm_health_over_the_tunnel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L126", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_gate_2_checklist", + "target": "03_event_write_back_pwa_install_03_gate2_results_part_a_auth_session_colors_task_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L134", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_gate_2_checklist", + "target": "03_event_write_back_pwa_install_03_gate2_results_part_b_ios_pwa_standalone_login_task_2_load_bearing_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L152", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_gate_2_checklist", + "target": "03_event_write_back_pwa_install_03_gate2_results_part_c_sse_smoke_test_gate_before_phase_4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md", + "source_location": "L165", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_gate2_results_gate_2_checklist", + "target": "03_event_write_back_pwa_install_03_gate2_results_part_d_create_edit_delete_fastmail_round_trips_task_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L1", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L9", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "target": "03_event_write_back_pwa_install_03_patterns_file_classification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L562", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "target": "03_event_write_back_pwa_install_03_patterns_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L554", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "target": "03_event_write_back_pwa_install_03_patterns_no_analog_found", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L28", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "target": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L474", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_phase_3_event_write_back_pwa_install_pattern_map", + "target": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L152", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_api_src_broker_outboxworker_ts_new_file_outbox_drain_loop", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L115", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_api_src_broker_vevent_ts_new_file_ical_js_vevent_builder", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L85", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_api_src_broker_write_ts_new_file_tsdav_put_delete_wrapper", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L30", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_api_src_db_schema_ts_add_calendaroutbox_table_objecturl_column_on_calendarevents", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L228", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_api_src_routes_events_ts_extend_with_write_endpoints_sync_status", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L416", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_api_client_ts_add_write_calls_sync_status_poll", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L289", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_components_eventdetailpopover_tsx_add_edit_delete_to_reserved_footer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L352", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_components_eventform_tsx_new_file_create_edit_form", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L402", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_pwa_src_components_installprompt_tsx_new_file_ios_android_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L450", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_pattern_assignments", + "target": "03_event_write_back_pwa_install_03_patterns_apps_pwa_vite_config_ts_add_vitepwa_plugin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L476", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_auth_guard_in_write_route_handlers", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L508", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_drizzle_db_mock_in_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L491", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_error_handling_in_route_handlers", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L502", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_esm_import_extension", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L522", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_oidc_mock_in_tests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L533", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_tanstack_query_integration_in_react_components", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-PATTERNS.md", + "source_location": "L544", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_patterns_shared_patterns", + "target": "03_event_write_back_pwa_install_03_patterns_zustand_ui_state_not_server_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L1", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research", + "target": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L70", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_architectural_responsibility_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L140", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_architecture_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L801", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_assumptions_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L739", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_code_examples", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L655", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L639", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_don_t_hand_roll", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L837", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_environment_availability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L966", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L814", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_open_questions_resolved", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L122", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_package_legitimacy_audit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L215", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_1_building_a_vevent_with_ical_js_new_file_broker_vevent_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L290", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_2_tsdav_write_methods_new_file_broker_write_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L369", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_3_outbox_table_schema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L414", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_4_outbox_worker_new_file_broker_outboxworker_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L481", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_5_vite_plugin_pwa_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L555", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_6_ios_a2hs_detection_and_walkthrough", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L584", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_7_android_beforeinstallprompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L624", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_pattern_8_polled_sync_state_endpoint_d_09", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L42", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_phase_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L908", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_security_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L935", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L87", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_standard_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L785", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_state_of_the_art", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L56", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L10", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_user_constraints_from_context_md", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L855", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_phase_3_event_write_back_pwa_install_research", + "target": "03_event_write_back_pwa_install_03_research_validation_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L27", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_user_constraints_from_context_md", + "target": "03_event_write_back_pwa_install_03_research_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L35", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_user_constraints_from_context_md", + "target": "03_event_write_back_pwa_install_03_research_deferred_ideas_out_of_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L12", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_user_constraints_from_context_md", + "target": "03_event_write_back_pwa_install_03_research_locked_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L89", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_standard_stack", + "target": "03_event_write_back_pwa_install_03_research_core_already_installed_no_new_installs_for_write_back", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L112", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_standard_stack", + "target": "03_event_write_back_pwa_install_03_research_installation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L100", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_standard_stack", + "target": "03_event_write_back_pwa_install_03_research_new_installs_pwa_layer_only", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L108", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_standard_stack", + "target": "03_event_write_back_pwa_install_03_research_rrule_not_needed_for_phase_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L182", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_architecture_patterns", + "target": "03_event_write_back_pwa_install_03_research_recommended_project_structure_additions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L142", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_architecture_patterns", + "target": "03_event_write_back_pwa_install_03_research_system_architecture_diagram", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L657", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_1_service_worker_intercepts_callback_and_breaks_oidc_login", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L671", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_2_ios_standalone_mode_breaks_on_oidc_redirect_to_auth_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L687", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_3_d_13_date_vs_datetime_coercion_in_vevent_building", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L697", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_4_etag_not_returned_after_put_on_fastmail", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L709", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_5_edit_as_move_d_04_partial_failure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L721", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_6_navigatefallbackdenylist_not_respected_in_dev_mode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L731", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_common_pitfalls", + "target": "03_event_write_back_pwa_install_03_research_pitfall_7_outbox_worker_runs_without_a_valid_davcalendar_object_for_re_sync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L741", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_code_examples", + "target": "03_event_write_back_pwa_install_03_research_create_a_recurring_event_whole_series_rrule_presets", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L775", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_code_examples", + "target": "03_event_write_back_pwa_install_03_research_detect_installed_state_for_hiding_install_prompts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L758", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_code_examples", + "target": "03_event_write_back_pwa_install_03_research_sync_state_poll_with_tanstack_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L871", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_validation_architecture", + "target": "03_event_write_back_pwa_install_03_research_phase_requirements_test_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L892", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_validation_architecture", + "target": "03_event_write_back_pwa_install_03_research_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L859", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_validation_architecture", + "target": "03_event_write_back_pwa_install_03_research_test_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L897", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_validation_architecture", + "target": "03_event_write_back_pwa_install_03_research_wave_0_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L912", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_security_domain", + "target": "03_event_write_back_pwa_install_03_research_applicable_asvs_categories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L922", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_security_domain", + "target": "03_event_write_back_pwa_install_03_research_known_threat_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L937", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_sources", + "target": "03_event_write_back_pwa_install_03_research_primary_high_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L955", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_sources", + "target": "03_event_write_back_pwa_install_03_research_secondary_medium_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-RESEARCH.md", + "source_location": "L960", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_research_sources", + "target": "03_event_write_back_pwa_install_03_research_tertiary_low_confidence_assumed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L12", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_phase_3_code_review_fix_report", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L37", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_phase_3_code_review_fix_report", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L172", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_phase_3_code_review_fix_report", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_skipped_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L39", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_cr_01_event_edit_delete_ownership_check_resolves_an_arbitrary_member_s_row_uid_only_lookup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L51", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_cr_02_outbox_wr_02_freshest_etag_re_read_also_queries_uid_only", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_cr_03_all_day_end_date_exclusive_on_write_but_inclusive_on_edit_pre_fill", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L131", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_in_01_triggertargetedresync_re_loads_and_re_decrypts_the_credential_per_row", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L141", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_in_02_unknown_status_responses_retried_for_the_full_backoff_window_before_giving_up", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L151", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_in_03_installprompt_reads_localstorage_synchronously_without_try_catch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L160", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_in_04_resolveuserid_typed_as_any", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L74", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_01_recurrence_silently_reset_to_none_on_every_edit_data_loss", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L90", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_02_default_calendar_selection_on_create_is_non_deterministic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L97", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_03_parsedatetime_all_day_check_uses_the_raw_iso_not_the_cleaned_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L104", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_04_worker_cron_schedules_start_on_bare_module_import_pollutes_the_test_process", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L112", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_05_index_ts_direct_run_guard_is_fragile_and_can_mis_fire", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L120", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_wr_06_edit_as_move_create_412_dead_ends_the_move_with_no_retry_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter2.md", + "source_location": "L174", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter2_skipped_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter2_in_05_deletecalendarevent_relies_on_tsdav_ignoring_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L12", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_phase_3_code_review_fix_report_iteration_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L28", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_phase_3_code_review_fix_report_iteration_2", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L30", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_cr_01_edit_as_move_silently_strips_a_recurring_series_rrule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_in_01_rrule_presets_round_trip_is_lossy_for_parameterized_rrules", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_in_02_parsedatetime_silently_rewrites_a_malformed_edit_value_to_today_09_00", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L74", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_in_03_unchecked_as_casts_on_json_parsed_outbox_payload_fields", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L37", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_01_edit_form_provides_no_indication_recurrence_is_locked", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L43", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_02_handlealldaytoggle_can_leave_end_date_inconsistent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L49", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_03_missing_cached_etag_becomes_an_unconditional_put_delete", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.iter3.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_iter3_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_iter3_wr_04_sync_status_masks_an_earlier_failure_behind_the_newest_row", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L12", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix", + "target": "03_event_write_back_pwa_install_03_review_fix_phase_3_code_review_fix_report_iteration_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L28", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_phase_3_code_review_fix_report_iteration_2", + "target": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L30", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_cr_01_edit_as_move_silently_strips_a_recurring_series_rrule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_in_01_rrule_presets_round_trip_is_lossy_for_parameterized_rrules", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L67", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_in_02_parsedatetime_silently_rewrites_a_malformed_edit_value_to_today_09_00", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L74", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_in_03_unchecked_as_casts_on_json_parsed_outbox_payload_fields", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L37", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_wr_01_edit_form_provides_no_indication_recurrence_is_locked", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L43", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_wr_02_handlealldaytoggle_can_leave_end_date_inconsistent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L49", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_wr_03_missing_cached_etag_becomes_an_unconditional_put_delete", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW-FIX.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_fix_fixed_issues", + "target": "03_event_write_back_pwa_install_03_review_fix_wr_04_sync_status_masks_an_earlier_failure_behind_the_newest_row", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2", + "target": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L59", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "target": "03_event_write_back_pwa_install_03_review_iter2_critical_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L145", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "target": "03_event_write_back_pwa_install_03_review_iter2_info", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L57", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "target": "03_event_write_back_pwa_install_03_review_iter2_narrative_findings_ai_reviewer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L51", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "target": "03_event_write_back_pwa_install_03_review_iter2_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L107", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_phase_3_code_review_report", + "target": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_critical_issues", + "target": "03_event_write_back_pwa_install_03_review_iter2_cr_01_event_edit_delete_ownership_check_resolves_an_arbitrary_member_s_row_uid_only_lookup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L83", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_critical_issues", + "target": "03_event_write_back_pwa_install_03_review_iter2_cr_02_outbox_wr_02_freshest_etag_re_read_also_queries_uid_only_can_pick_the_wrong_member_s_etag", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L101", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_critical_issues", + "target": "03_event_write_back_pwa_install_03_review_iter2_cr_03_all_day_end_date_is_exclusive_on_write_but_inclusive_on_edit_pre_fill_span_grows_one_day_per_re_edit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L109", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter2_wr_01_recurrence_is_silently_reset_to_none_on_every_edit_data_loss_on_recurring_events", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L115", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter2_wr_02_default_calendar_selection_on_create_is_non_deterministic_no_order_by", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L121", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter2_wr_03_parsedatetime_all_day_check_uses_the_raw_iso_not_the_cleaned_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L127", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter2_wr_04_worker_cron_schedules_start_on_bare_module_import_pollutes_the_test_process", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L133", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter2_wr_05_index_ts_direct_run_guard_is_fragile_and_can_mis_fire", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L139", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter2_wr_06_edit_as_move_create_412_dead_ends_the_move_with_no_retry_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L147", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_info", + "target": "03_event_write_back_pwa_install_03_review_iter2_in_01_triggertargetedresync_re_loads_and_re_decrypts_the_credential_per_row", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L153", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_info", + "target": "03_event_write_back_pwa_install_03_review_iter2_in_02_unknown_status_responses_retried_for_the_full_backoff_window_before_giving_up", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L159", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_info", + "target": "03_event_write_back_pwa_install_03_review_iter2_in_03_installprompt_reads_localstorage_synchronously_in_usestate_initializer_without_try_catch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L165", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_info", + "target": "03_event_write_back_pwa_install_03_review_iter2_in_04_resolveuserid_typed_as_any", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter2.md", + "source_location": "L171", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter2_info", + "target": "03_event_write_back_pwa_install_03_review_iter2_in_05_deletecalendarevent_relies_on_tsdav_ignoring_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3", + "target": "03_event_write_back_pwa_install_03_review_iter3_phase_3_code_review_report_re_review_iteration_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L61", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_phase_3_code_review_report_re_review_iteration_2", + "target": "03_event_write_back_pwa_install_03_review_iter3_critical_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L130", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_phase_3_code_review_report_re_review_iteration_2", + "target": "03_event_write_back_pwa_install_03_review_iter3_info", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L51", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_phase_3_code_review_report_re_review_iteration_2", + "target": "03_event_write_back_pwa_install_03_review_iter3_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L96", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_phase_3_code_review_report_re_review_iteration_2", + "target": "03_event_write_back_pwa_install_03_review_iter3_warnings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L63", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_critical_issues", + "target": "03_event_write_back_pwa_install_03_review_iter3_cr_01_edit_as_move_silently_strips_a_recurring_series_rrule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L98", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter3_wr_01_edit_form_cannot_edit_recurrence_and_provides_no_way_to_remove_an_rrule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L106", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter3_wr_02_handlealldaytoggle_can_leave_end_date_inconsistent_with_the_discarded_time_inputs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L114", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter3_wr_03_missing_cached_etag_becomes_an_unconditional_put_delete_defeating_d_08_conflict_detection", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L122", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_warnings", + "target": "03_event_write_back_pwa_install_03_review_iter3_wr_04_sync_status_reports_only_the_newest_outbox_row_per_uid_masking_an_earlier_failure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L132", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_info", + "target": "03_event_write_back_pwa_install_03_review_iter3_in_01_rrule_presets_round_trip_is_lossy_for_any_parameterized_rrule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L140", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_info", + "target": "03_event_write_back_pwa_install_03_review_iter3_in_02_parsedatetime_silently_rewrites_a_malformed_edit_value_to_today_09_00", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.iter3.md", + "source_location": "L148", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_iter3_info", + "target": "03_event_write_back_pwa_install_03_review_iter3_in_03_unchecked_as_casts_on_json_parsed_outbox_payload_fields", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L44", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review", + "target": "03_event_write_back_pwa_install_03_review_phase_3_code_review_report_re_review_iteration_3_final_auto_pass", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L87", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_phase_3_code_review_report_re_review_iteration_3_final_auto_pass", + "target": "03_event_write_back_pwa_install_03_review_info", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L51", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_phase_3_code_review_report_re_review_iteration_3_final_auto_pass", + "target": "03_event_write_back_pwa_install_03_review_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L69", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_phase_3_code_review_report_re_review_iteration_3_final_auto_pass", + "target": "03_event_write_back_pwa_install_03_review_warnings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L55", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_summary", + "target": "03_event_write_back_pwa_install_03_review_iteration_2_fixes_verified", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L71", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_warnings", + "target": "03_event_write_back_pwa_install_03_review_wr_01_missing_cached_etag_still_produces_an_unconditional_put_delete_d_08_gap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L79", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_warnings", + "target": "03_event_write_back_pwa_install_03_review_wr_02_edit_cannot_change_or_remove_an_rrule_no_recurrence_field_is_overloaded_as_keep_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L89", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_info", + "target": "03_event_write_back_pwa_install_03_review_in_01_rrule_presets_round_trip_is_lossy_for_any_parameterized_rrule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-REVIEW.md", + "source_location": "L97", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_review_info", + "target": "03_event_write_back_pwa_install_03_review_in_02_move_path_rrule_preservation_depends_silently_on_rawvevent_being_non_empty", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L10", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec", + "target": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L469", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_checker_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L54", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L112", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L248", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_copywriting_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L25", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_design_system", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L11", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_event_write_back_pwa_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L300", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L442", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_pre_population_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L399", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_pwa_manifest_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L430", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_registry_safety", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L72", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_spacing_scale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L379", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_state_management_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L40", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_token_layer_inherited_no_new_tokens_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L93", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_phase_3_ui_design_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_typography", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L166", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "target": "03_event_write_back_pwa_install_03_ui_spec_calendarpicker_within_eventform_conditional_d_02", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L196", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "target": "03_event_write_back_pwa_install_03_ui_spec_deleteconfirmationdialog_new_component", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L114", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "target": "03_event_write_back_pwa_install_03_ui_spec_eventdetailpopover_extended_phase_2_component", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L124", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "target": "03_event_write_back_pwa_install_03_ui_spec_eventform_new_component", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L211", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "target": "03_event_write_back_pwa_install_03_ui_spec_installprompt_new_component", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L170", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_component_inventory", + "target": "03_event_write_back_pwa_install_03_ui_spec_syncstatetoast_new_component", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L355", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_android_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L337", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_delete_interaction", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L309", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_eventform_all_day_toggle_behavior", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L315", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_eventform_calendar_picker_conditional_d_02", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L302", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_eventform_open_close", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L322", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_eventform_recurrence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L346", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_ios_install_walkthrough", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L365", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_keyboard_accessibility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L329", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_sync_state_feedback", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-UI-SPEC.md", + "source_location": "L361", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_ui_spec_interaction_contract", + "target": "03_event_write_back_pwa_install_03_ui_spec_touch_targets", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L10", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation", + "target": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L81", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "target": "03_event_write_back_pwa_install_03_validation_manual_only_verifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L42", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "target": "03_event_write_back_pwa_install_03_validation_per_task_verification_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L32", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "target": "03_event_write_back_pwa_install_03_validation_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L17", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "target": "03_event_write_back_pwa_install_03_validation_test_infrastructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L90", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "target": "03_event_write_back_pwa_install_03_validation_validation_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/03-event-write-back-pwa-install/03-VALIDATION.md", + "source_location": "L66", + "weight": 1.0, + "source": "03_event_write_back_pwa_install_03_validation_phase_3_validation_strategy", + "target": "03_event_write_back_pwa_install_03_validation_wave_0_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L74", + "weight": 1.0, + "source": "04_shared_lists_live_sync_continue_here", + "target": "04_shared_lists_live_sync_continue_here_infrastructure_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L68", + "weight": 1.0, + "source": "04_shared_lists_live_sync_continue_here", + "target": "04_shared_lists_live_sync_continue_here_open_decisions_for_the_planner_intentionally_not_pre_decided", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/.continue-here.md", + "source_location": "L62", + "weight": 1.0, + "source": "04_shared_lists_live_sync_continue_here", + "target": "04_shared_lists_live_sync_continue_here_required_reading_in_order", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L67", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_01_plan", + "target": "04_shared_lists_live_sync_04_01_plan_phase_goal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L223", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_01_plan", + "target": "04_shared_lists_live_sync_04_01_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-01-PLAN.md", + "source_location": "L215", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_01_plan", + "target": "04_shared_lists_live_sync_04_01_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-02-PLAN.md", + "source_location": "L109", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_02_plan", + "target": "04_shared_lists_live_sync_04_02_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-02-PLAN.md", + "source_location": "L102", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_02_plan", + "target": "04_shared_lists_live_sync_04_02_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-03-PLAN.md", + "source_location": "L167", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_03_plan", + "target": "04_shared_lists_live_sync_04_03_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-03-PLAN.md", + "source_location": "L160", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_03_plan", + "target": "04_shared_lists_live_sync_04_03_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-04-PLAN.md", + "source_location": "L164", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_04_plan", + "target": "04_shared_lists_live_sync_04_04_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-04-PLAN.md", + "source_location": "L157", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_04_plan", + "target": "04_shared_lists_live_sync_04_04_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-05-PLAN.md", + "source_location": "L129", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_05_plan", + "target": "04_shared_lists_live_sync_04_05_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-05-PLAN.md", + "source_location": "L123", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_05_plan", + "target": "04_shared_lists_live_sync_04_05_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-06-PLAN.md", + "source_location": "L161", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_06_plan", + "target": "04_shared_lists_live_sync_04_06_plan_stride_threat_register", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-06-PLAN.md", + "source_location": "L154", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_06_plan", + "target": "04_shared_lists_live_sync_04_06_plan_trust_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L1", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context", + "target": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L67", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "target": "04_shared_lists_live_sync_04_context_canonical_references", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L120", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "target": "04_shared_lists_live_sync_04_context_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L89", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "target": "04_shared_lists_live_sync_04_context_existing_code_insights", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L23", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "target": "04_shared_lists_live_sync_04_context_implementation_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L7", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "target": "04_shared_lists_live_sync_04_context_phase_boundary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L111", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_phase_4_shared_lists_live_sync_context", + "target": "04_shared_lists_live_sync_04_context_specific_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L57", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_claude_s_discretion_deferred_to_research_planner", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L31", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_item_behavior", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L35", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_live_feel_conflict_resolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L50", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_navigation_app_shell", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L54", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_project_level_principle_applies_beyond_this_phase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L40", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_reconnect_transport_success_criterion_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L45", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_reordering_list_03", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L61", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_reviewed_todos", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L25", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_implementation_decisions", + "target": "04_shared_lists_live_sync_04_context_sharing_model_list_item_behavior", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L71", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_canonical_references", + "target": "04_shared_lists_live_sync_04_context_entry_gate_transport", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L75", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_canonical_references", + "target": "04_shared_lists_live_sync_04_context_prior_decisions_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L81", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_canonical_references", + "target": "04_shared_lists_live_sync_04_context_schema_code_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L97", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_existing_code_insights", + "target": "04_shared_lists_live_sync_04_context_established_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L102", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_existing_code_insights", + "target": "04_shared_lists_live_sync_04_context_integration_points", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-CONTEXT.md", + "source_location": "L91", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_context_existing_code_insights", + "target": "04_shared_lists_live_sync_04_context_reusable_assets", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L1", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L113", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L118", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_deferred_ideas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L33", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_list_item_behavior_checked_items_delete_guard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L22", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_list_item_behavior_privacy_refined", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L12", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_list_item_behavior_sharing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L98", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_lists_navigation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L49", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_live_feel_conflicts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L65", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_reconnect_catch_up", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-DISCUSSION-LOG.md", + "source_location": "L82", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_discussion_log_phase_4_shared_lists_live_sync_discussion_log", + "target": "04_shared_lists_live_sync_04_discussion_log_reordering_behavior", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L1", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns", + "target": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L9", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "target": "04_shared_lists_live_sync_04_patterns_file_classification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L745", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "target": "04_shared_lists_live_sync_04_patterns_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L735", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "target": "04_shared_lists_live_sync_04_patterns_no_analog_found", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L35", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "target": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L635", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_phase_4_shared_lists_live_sync_pattern_map", + "target": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L37", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_api_src_db_schema_ts_model_crud_append_new_tables", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L295", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_api_src_index_ts_config_modify", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L263", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_api_src_lib_listemitter_ts_utility_event_driven", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L87", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_api_src_routes_lists_ts_route_crud", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L196", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_api_src_routes_sse_ts_route_streaming_extend_existing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L406", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_api_listsclient_ts_utility_request_response", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L322", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_app_tsx_component_modify", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L359", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_components_bottomtabbar_tsx_component_request_response", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L568", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_components_deleteconfirmationdialog_tsx_reuse_no_modification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L580", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_components_itemrow_tsx_component_event_driven", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L624", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_hooks_uselistsse_ts_hook_event_driven", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L543", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_routes_listdetail_tsx_component_crud_event_driven", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L498", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_routes_listsindex_tsx_component_crud", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L468", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_pattern_assignments", + "target": "04_shared_lists_live_sync_04_patterns_apps_pwa_src_store_listsstore_ts_store_request_response", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L671", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_401_guard_pattern", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L637", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_auth_user_resolution", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L679", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_css_token_usage_pwa_components", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L657", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_error_handling_api_routes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L690", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_fetch_with_credentials_pwa_api_client", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L712", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_lucide_icons_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L728", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_plain_text_xss_guard_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L701", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_tanstack_query_keys", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-PATTERNS.md", + "source_location": "L721", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_patterns_shared_patterns", + "target": "04_shared_lists_live_sync_04_patterns_zustand_store_shape", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research", + "target": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L89", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_architectural_responsibility_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L160", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_architecture_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1089", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_assumptions_log", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L929", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_code_examples", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L863", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_common_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L764", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_database_schema_design", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L846", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_don_t_hand_roll", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L75", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_entry_gate_status_cleared", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1054", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_environment_availability", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1158", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_metadata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1102", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_open_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L145", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_package_legitimacy_audit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L50", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_phase_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L246", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_1_sse_fan_out_mechanism", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L348", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_2_fractional_indexing_for_reorder_d_13", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L400", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_3_scoped_sse_fan_out_d_04", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L432", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_4_eventsource_backoff_wrapper_d_11", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L525", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_5_react_router_v7_integration_d_16_d_17", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L597", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_6_optimistic_ui_per_field_patch_d_07_d_08", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L649", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_7_drag_and_drop_list_03", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L725", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_research_finding_8_drizzle_generate_migrate_workflow_mariadb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1030", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_security_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1121", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L106", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_standard_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1073", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_state_of_the_art", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L63", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L10", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_user_constraints_from_context_md", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L995", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_phase_4_shared_lists_live_sync_research", + "target": "04_shared_lists_live_sync_04_research_validation_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L34", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_user_constraints_from_context_md", + "target": "04_shared_lists_live_sync_04_research_claude_s_discretion", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L41", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_user_constraints_from_context_md", + "target": "04_shared_lists_live_sync_04_research_deferred_ideas_out_of_scope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L12", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_user_constraints_from_context_md", + "target": "04_shared_lists_live_sync_04_research_locked_decisions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L108", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_standard_stack", + "target": "04_shared_lists_live_sync_04_research_core_already_installed_no_new_installs_needed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L120", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_standard_stack", + "target": "04_shared_lists_live_sync_04_research_new_dependencies_must_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L209", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_architecture_patterns", + "target": "04_shared_lists_live_sync_04_research_recommended_project_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L162", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_architecture_patterns", + "target": "04_shared_lists_live_sync_04_research_system_architecture_diagram", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L248", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_research_finding_1_sse_fan_out_mechanism", + "target": "04_shared_lists_live_sync_04_research_recommendation_in_memory_eventemitter_yagni_single_process_today", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L350", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_research_finding_2_fractional_indexing_for_reorder_d_13", + "target": "04_shared_lists_live_sync_04_research_library_fractional_indexing_v3_2_0_by_rocicorp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L527", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_research_finding_5_react_router_v7_integration_d_16_d_17", + "target": "04_shared_lists_live_sync_04_research_pattern_declarative_mode_no_data_router", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L651", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_research_finding_7_drag_and_drop_list_03", + "target": "04_shared_lists_live_sync_04_research_library_dnd_kit_core_6_3_1_dnd_kit_sortable_10_0_0", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L766", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_database_schema_design", + "target": "04_shared_lists_live_sync_04_research_new_tables", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L865", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_1_sse_fan_out_leaking_private_list_events_to_all_clients", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L875", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_2_float_based_positions_exhausting_precision", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L885", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_3_raw_eventsource_reconnect_storm", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L895", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_4_drizzle_kit_push_on_populated_mariadb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L905", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_5_dnd_kit_drag_handle_with_touch_accidental_drags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L913", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_6_react_router_vite_plugin_pwa_navigation_fallback", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L921", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_common_pitfalls", + "target": "04_shared_lists_live_sync_04_research_pitfall_7_sse_auth_with_withcredentials", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L950", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_code_examples", + "target": "04_shared_lists_live_sync_04_research_verified_pattern_drizzle_schema_conventions_existing_schema_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L931", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_code_examples", + "target": "04_shared_lists_live_sync_04_research_verified_pattern_hono_streamsse_existing_sse_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L981", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_code_examples", + "target": "04_shared_lists_live_sync_04_research_verified_pattern_navlink_with_active_styling", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L961", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_code_examples", + "target": "04_shared_lists_live_sync_04_research_verified_pattern_react_query_optimistic_update", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1006", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_validation_architecture", + "target": "04_shared_lists_live_sync_04_research_phase_requirements_test_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L997", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_validation_architecture", + "target": "04_shared_lists_live_sync_04_research_test_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1021", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_validation_architecture", + "target": "04_shared_lists_live_sync_04_research_wave_0_gaps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1032", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_security_domain", + "target": "04_shared_lists_live_sync_04_research_applicable_asvs_categories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1042", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_security_domain", + "target": "04_shared_lists_live_sync_04_research_known_threat_patterns_for_this_phase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1123", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_sources", + "target": "04_shared_lists_live_sync_04_research_primary_high_confidence_verified_from_codebase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1135", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_sources", + "target": "04_shared_lists_live_sync_04_research_primary_high_confidence_verified_via_npm_registry_context7", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1144", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_sources", + "target": "04_shared_lists_live_sync_04_research_secondary_medium_confidence_cited_from_official_docs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-RESEARCH.md", + "source_location": "L1150", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_research_sources", + "target": "04_shared_lists_live_sync_04_research_tertiary_low_confidence_assumed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L10", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec", + "target": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L437", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_accessibility_baseline", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L467", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_checker_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L80", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_color", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L152", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_component_inventory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L387", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_copywriting_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L21", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_design_system", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L303", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L109", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_layout_app_shell_changes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L425", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_registry_safety", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L454", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_security_notes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L38", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_spacing_scale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L62", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_phase_4_ui_design_contract", + "target": "04_shared_lists_live_sync_04_ui_spec_typography", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L113", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_layout_app_shell_changes", + "target": "04_shared_lists_live_sync_04_ui_spec_bottom_tab_bar_phone_767px", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L135", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_layout_app_shell_changes", + "target": "04_shared_lists_live_sync_04_ui_spec_desktop_tablet_768px_left_sidebar_navigation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L140", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_layout_app_shell_changes", + "target": "04_shared_lists_live_sync_04_ui_spec_routing_d_17", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L154", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_component_inventory", + "target": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L237", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_additeminput", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L159", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_bottomtabbar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L272", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_createlistsheet_new_list_creation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L219", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_itemrow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L186", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_listcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L204", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_listdetail", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L263", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_listemptystate_used_inside_listdetail_when_list_has_no_items", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L253", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_listsemptystate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L174", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_listsindex", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L289", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_new_components_for_phase_4", + "target": "04_shared_lists_live_sync_04_ui_spec_livesyncindicator", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L331", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_checked_off_sink_behavior_d_05", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L305", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_drag_to_reorder_list_03_d_13", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L368", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_item_delete_d_06_no_confirmation_for_individual_items", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L357", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_list_delete_d_06", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L342", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_live_sync_reconnect_d_10_d_11_d_12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L321", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_optimistic_updates_d_07", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-UI-SPEC.md", + "source_location": "L377", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_ui_spec_interaction_contracts", + "target": "04_shared_lists_live_sync_04_ui_spec_sharing_toggle_d_01_d_02", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L10", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation", + "target": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L66", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "target": "04_shared_lists_live_sync_04_validation_manual_only_verifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L38", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "target": "04_shared_lists_live_sync_04_validation_per_task_verification_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L29", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "target": "04_shared_lists_live_sync_04_validation_sampling_rate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L17", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "target": "04_shared_lists_live_sync_04_validation_test_infrastructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L76", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "target": "04_shared_lists_live_sync_04_validation_validation_sign_off", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/phases/04-shared-lists-live-sync/04-VALIDATION.md", + "source_location": "L57", + "weight": 1.0, + "source": "04_shared_lists_live_sync_04_validation_phase_4_validation_strategy", + "target": "04_shared_lists_live_sync_04_validation_wave_0_requirements", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L35", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L70", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L80", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L88", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L84", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L74", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_verification_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L39", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_quick_task_260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_summary", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_what_was_built", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L41", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_what_was_built", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_task_1_get_api_login_backend_route_tests_commit_237ec49", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L52", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_what_was_built", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_task_2_one_shot_login_redirect_helper_tests_commit_6dc9ccd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260606-tv8-fix-missing-sign-in-redirect-in-the-pwa-/260606-tv8-SUMMARY.md", + "source_location": "L62", + "weight": 1.0, + "source": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_what_was_built", + "target": "260606_tv8_fix_missing_sign_in_redirect_in_the_pwa_260606_tv8_summary_task_3_calendarshell_mequery_wiring_commit_c2e0ab1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L63", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_from_calendarevents_innerjoin_calendars_eq_calendarevents_calendarid_calendars_id", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L61", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_reference_idioms_already_in_events_ts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L65", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_where_or_eq_calendars_userid_currentuserid_eq_calendars_isshared_true", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L62", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_working_join_get_at_line_142_183_uses", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-PLAN.md", + "source_location": "L64", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_plan_working_ownership_predicate_writable_calendars_at_line_501_509_uses", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L41", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L53", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_details", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L99", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L126", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_known_stubs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L116", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_operator_actions_required", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L148", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_orchestrator_review_follow_ups_post_executor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L134", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_self_check", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L146", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L45", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_tasks_completed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L130", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_phase_quick_260607_l6l_plan_01_fix_phase_03_write_path_correctness_bugs_summary", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_threat_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L55", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_details", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_1_missing_join_on_patch_uid_edit_and_delete_uid_blocking", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L65", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_details", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_2_blank_displayname_from_weak_oidc_claim_reading", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L85", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_details", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_bug_3_get_api_events_returning_all_users_events", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-l6l-fix-phase-03-write-path-correctness-bugs/260607-l6l-SUMMARY.md", + "source_location": "L101", + "weight": 1.0, + "source": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_deviations_from_plan", + "target": "260607_l6l_fix_phase_03_write_path_correctness_bugs_260607_l6l_summary_auto_fixed_issues", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L29", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L59", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_commits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L49", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_deviations_from_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L40", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_evidence_recorded_verbatim", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L64", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_self_check_passed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L53", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/quick/260607-u8o-record-sse-over-pangolin-smoke-test-pass/260607-u8o-SUMMARY.md", + "source_location": "L33", + "weight": 1.0, + "source": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_quick_task_260607_u8o_record_sse_over_pangolin_smoke_test_pass_summary", + "target": "260607_u8o_record_sse_over_pangolin_smoke_test_pass_260607_u8o_summary_what_was_done", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L1", + "weight": 1.0, + "source": "research_architecture", + "target": "research_architecture_architecture_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L344", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_anti_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L149", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_architectural_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L284", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_component_build_order_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L206", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_data_flow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L323", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_integration_points", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L398", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_open_research_flags_for_phase_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L106", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_recommended_project_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L386", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_scaling_considerations", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L408", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L7", + "weight": 1.0, + "source": "research_architecture_architecture_research", + "target": "research_architecture_standard_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L90", + "weight": 1.0, + "source": "research_architecture_standard_architecture", + "target": "research_architecture_component_responsibilities", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L9", + "weight": 1.0, + "source": "research_architecture_standard_architecture", + "target": "research_architecture_system_overview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L143", + "weight": 1.0, + "source": "research_architecture_recommended_project_structure", + "target": "research_architecture_structure_rationale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L151", + "weight": 1.0, + "source": "research_architecture_architectural_patterns", + "target": "research_architecture_pattern_1_broker_cache_with_ctag_based_invalidation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L169", + "weight": 1.0, + "source": "research_architecture_architectural_patterns", + "target": "research_architecture_pattern_2_single_broker_token_with_per_calendar_app_passwords", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L182", + "weight": 1.0, + "source": "research_architecture_architectural_patterns", + "target": "research_architecture_pattern_3_redis_pub_sub_for_list_co_edit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L198", + "weight": 1.0, + "source": "research_architecture_architectural_patterns", + "target": "research_architecture_pattern_4_rrule_expansion_client_side_from_stored_raw_vevent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L208", + "weight": 1.0, + "source": "research_architecture_data_flow", + "target": "research_architecture_calendar_read_pwa_api_cache", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L219", + "weight": 1.0, + "source": "research_architecture_data_flow", + "target": "research_architecture_calendar_write_pwa_api_fastmail", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L231", + "weight": 1.0, + "source": "research_architecture_data_flow", + "target": "research_architecture_fastmail_sync_loop_background", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L268", + "weight": 1.0, + "source": "research_architecture_data_flow", + "target": "research_architecture_identity_mapping_oidc_app_user", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L244", + "weight": 1.0, + "source": "research_architecture_data_flow", + "target": "research_architecture_list_co_edit_real_time", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L256", + "weight": 1.0, + "source": "research_architecture_data_flow", + "target": "research_architecture_web_push_delivery", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L325", + "weight": 1.0, + "source": "research_architecture_integration_points", + "target": "research_architecture_external_services", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L334", + "weight": 1.0, + "source": "research_architecture_integration_points", + "target": "research_architecture_internal_boundaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L346", + "weight": 1.0, + "source": "research_architecture_anti_patterns", + "target": "research_architecture_anti_pattern_1_fetching_from_fastmail_on_every_calendar_request", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L354", + "weight": 1.0, + "source": "research_architecture_anti_patterns", + "target": "research_architecture_anti_pattern_2_using_email_as_the_app_user_key", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L362", + "weight": 1.0, + "source": "research_architecture_anti_patterns", + "target": "research_architecture_anti_pattern_3_storing_recurring_events_only_as_expanded_instances", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L370", + "weight": 1.0, + "source": "research_architecture_anti_patterns", + "target": "research_architecture_anti_pattern_4_separate_microservices_for_broker_lists_push", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/ARCHITECTURE.md", + "source_location": "L378", + "weight": 1.0, + "source": "research_architecture_anti_patterns", + "target": "research_architecture_anti_pattern_5_per_user_caldav_credentials_in_the_pwa", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L1", + "weight": 1.0, + "source": "research_features", + "target": "research_features_feature_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L172", + "weight": 1.0, + "source": "research_features_feature_research", + "target": "research_features_competitor_feature_analysis", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L70", + "weight": 1.0, + "source": "research_features_feature_research", + "target": "research_features_feature_dependencies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L9", + "weight": 1.0, + "source": "research_features_feature_research", + "target": "research_features_feature_landscape", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L147", + "weight": 1.0, + "source": "research_features_feature_research", + "target": "research_features_feature_prioritization_matrix", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L118", + "weight": 1.0, + "source": "research_features_feature_research", + "target": "research_features_mvp_definition", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L194", + "weight": 1.0, + "source": "research_features_feature_research", + "target": "research_features_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L48", + "weight": 1.0, + "source": "research_features_feature_landscape", + "target": "research_features_anti_features_deliberately_exclude", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L33", + "weight": 1.0, + "source": "research_features_feature_landscape", + "target": "research_features_differentiators_competitive_advantage_for_this_product", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L11", + "weight": 1.0, + "source": "research_features_feature_landscape", + "target": "research_features_table_stakes_users_expect_these", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L108", + "weight": 1.0, + "source": "research_features_feature_dependencies", + "target": "research_features_dependency_notes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L132", + "weight": 1.0, + "source": "research_features_mvp_definition", + "target": "research_features_add_after_validation_v1_x", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L139", + "weight": 1.0, + "source": "research_features_mvp_definition", + "target": "research_features_future_consideration_v2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/FEATURES.md", + "source_location": "L120", + "weight": 1.0, + "source": "research_features_mvp_definition", + "target": "research_features_launch_with_v1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L1", + "weight": 1.0, + "source": "research_pitfalls", + "target": "research_pitfalls_pitfalls_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L9", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_critical_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L421", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_integration_gotchas", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L476", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_looks_done_but_isn_t_checklist", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L440", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_performance_traps", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L507", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_pitfall_to_phase_mapping", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L491", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_recovery_strategies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L451", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_security_mistakes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L532", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L406", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_technical_debt_patterns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L463", + "weight": 1.0, + "source": "research_pitfalls_pitfalls_research", + "target": "research_pitfalls_ux_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L213", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_10_declarative_web_push_vs_standard_web_push_choose_the_right_target", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L232", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_11_eu_digital_markets_act_breaks_ios_pwa_entirely_for_eu_users", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L248", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_12_service_worker_caching_serves_stale_calendar_data", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L271", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_13_service_worker_update_staleness_app_never_updates_for_the_wife", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L294", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_14_calendar_cache_stale_vs_fastmail_source_of_truth_double_write_window", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L317", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_15_real_time_list_sync_missed_updates_during_reconnect_gap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L340", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_16_authelia_oidc_v4_39_breaking_change_drops_groups_from_id_token", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L359", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_17_authelia_oidc_spa_token_silent_renewal_breaks_when_authelia_is_on_a_separate_domain", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L383", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_18_pangolin_newt_tunnel_websocket_and_sse_may_require_explicit_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L11", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_1_fastmail_calendars_are_caldav_only_jmap_calendar_is_not_production_ready", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L31", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_2_recurring_event_rrule_expansion_done_in_the_app_instead_of_leveraged_from_server", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L52", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_3_all_day_events_interpreted_as_timed_utc_events", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L72", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_4_etag_sync_token_incremental_sync_done_wrong", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L95", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_5_write_back_modifying_a_single_recurring_instance_corrupts_the_series", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L117", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_6_dst_transition_shifts_recurring_events_by_one_hour", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L139", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_7_personal_calendar_sharing_to_the_broker_token_is_not_automatic", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L164", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_8_ios_web_push_requires_add_to_home_screen_and_apple_provides_no_install_prompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/PITFALLS.md", + "source_location": "L186", + "weight": 1.0, + "source": "research_pitfalls_critical_pitfalls", + "target": "research_pitfalls_pitfall_9_ios_kills_push_subscriptions_silently_after_3_silent_pushes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L1", + "weight": 1.0, + "source": "research_stack", + "target": "research_stack_stack_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L195", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_alternatives_considered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L155", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_authelia_oidc_integration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L100", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_backend_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L70", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_calendar_integration_caldav_not_jmap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L51", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_installation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L179", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_live_list_sync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L237", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_open_questions_flagged_for_phase_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L120", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_react_pwa_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L9", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_recommended_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L247", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L225", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_version_compatibility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L210", + "weight": 1.0, + "source": "research_stack_stack_research", + "target": "research_stack_what_not_to_use", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L11", + "weight": 1.0, + "source": "research_stack_recommended_stack", + "target": "research_stack_core_technologies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L40", + "weight": 1.0, + "source": "research_stack_recommended_stack", + "target": "research_stack_development_tools", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/STACK.md", + "source_location": "L23", + "weight": 1.0, + "source": "research_stack_recommended_stack", + "target": "research_stack_supporting_libraries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L1", + "weight": 1.0, + "source": "research_summary", + "target": "research_summary_project_research_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L233", + "weight": 1.0, + "source": "research_summary_project_research_summary", + "target": "research_summary_confidence_assessment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L8", + "weight": 1.0, + "source": "research_summary_project_research_summary", + "target": "research_summary_executive_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L101", + "weight": 1.0, + "source": "research_summary_project_research_summary", + "target": "research_summary_implications_for_roadmap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L16", + "weight": 1.0, + "source": "research_summary_project_research_summary", + "target": "research_summary_key_findings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L254", + "weight": 1.0, + "source": "research_summary_project_research_summary", + "target": "research_summary_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L66", + "weight": 1.0, + "source": "research_summary_key_findings", + "target": "research_summary_architecture_approach", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L85", + "weight": 1.0, + "source": "research_summary_key_findings", + "target": "research_summary_critical_pitfalls", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L41", + "weight": 1.0, + "source": "research_summary_key_findings", + "target": "research_summary_expected_features", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L18", + "weight": 1.0, + "source": "research_summary_key_findings", + "target": "research_summary_recommended_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L105", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_phase_1_foundation_caldav_broker_spike", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L127", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_phase_2_calendar_display", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L149", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_phase_3_event_write_back_pwa_install", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L171", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_phase_4_shared_lists_live_sync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L191", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_phase_5_web_push_notifications", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L213", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_phase_ordering_rationale", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L221", + "weight": 1.0, + "source": "research_summary_implications_for_roadmap", + "target": "research_summary_research_flags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L244", + "weight": 1.0, + "source": "research_summary_confidence_assessment", + "target": "research_summary_gaps_to_address", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L256", + "weight": 1.0, + "source": "research_summary_sources", + "target": "research_summary_primary_high_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L264", + "weight": 1.0, + "source": "research_summary_sources", + "target": "research_summary_secondary_medium_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/SUMMARY.md", + "source_location": "L271", + "weight": 1.0, + "source": "research_summary_sources", + "target": "research_summary_tertiary_low_confidence", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L1", + "weight": 1.0, + "source": "research_questions", + "target": "research_questions_research_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L3", + "weight": 1.0, + "source": "research_questions_research_questions", + "target": "research_questions_open", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L19", + "weight": 1.0, + "source": "research_questions_research_questions", + "target": "research_questions_resolved", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L5", + "weight": 1.0, + "source": "research_questions_open", + "target": "research_questions_rq_003_fastmail_calendar_api_jmap_vs_caldav", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L40", + "weight": 1.0, + "source": "research_questions_resolved", + "target": "research_questions_calendar_host_decision_resolved", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L45", + "weight": 1.0, + "source": "research_questions_resolved", + "target": "research_questions_email_scope_resolved", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L21", + "weight": 1.0, + "source": "research_questions_resolved", + "target": "research_questions_rq_001_vikunja_mariadb_compatibility_superseded", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/research/questions.md", + "source_location": "L28", + "weight": 1.0, + "source": "research_questions_resolved", + "target": "research_questions_rq_002_caldav_server_radicale_vs_baikal_superseded", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L7", + "weight": 1.0, + "source": "pending_adopt_drizzle_migrations_workflow", + "target": "pending_adopt_drizzle_migrations_workflow_adopt_drizzle_generate_migrate_workflow_retire_db_push_on_mariadb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L21", + "weight": 1.0, + "source": "pending_adopt_drizzle_migrations_workflow_adopt_drizzle_generate_migrate_workflow_retire_db_push_on_mariadb", + "target": "pending_adopt_drizzle_migrations_workflow_goal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/todos/pending/adopt-drizzle-migrations-workflow.md", + "source_location": "L28", + "weight": 1.0, + "source": "pending_adopt_drizzle_migrations_workflow_adopt_drizzle_generate_migrate_workflow_retire_db_push_on_mariadb", + "target": "pending_adopt_drizzle_migrations_workflow_tasks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L7", + "weight": 1.0, + "source": "pending_kickoff_new_project", + "target": "pending_kickoff_new_project_kick_off_familysync_with_gsd_new_project", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L19", + "weight": 1.0, + "source": "pending_kickoff_new_project_kick_off_familysync_with_gsd_new_project", + "target": "pending_kickoff_new_project_context_to_bring_into_the_session", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": ".planning/todos/pending/kickoff-new-project.md", + "source_location": "L14", + "weight": 1.0, + "source": "pending_kickoff_new_project_kick_off_familysync_with_gsd_new_project", + "target": "pending_kickoff_new_project_pre_work_before_running", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L71", + "weight": 1.0, + "source": "claude", + "target": "claude_backend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L75", + "weight": 1.0, + "source": "claude", + "target": "claude_dev", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L73", + "weight": 1.0, + "source": "claude", + "target": "claude_frontend", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L69", + "weight": 1.0, + "source": "claude", + "target": "claude_installation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L3", + "weight": 1.0, + "source": "claude", + "target": "claude_project", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L29", + "weight": 1.0, + "source": "claude", + "target": "claude_recommended_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L27", + "weight": 1.0, + "source": "claude", + "target": "claude_technology_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L11", + "weight": 1.0, + "source": "claude_project", + "target": "claude_constraints", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L31", + "weight": 1.0, + "source": "claude_recommended_stack", + "target": "claude_core_technologies", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L60", + "weight": 1.0, + "source": "claude_recommended_stack", + "target": "claude_development_tools", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L43", + "weight": 1.0, + "source": "claude_recommended_stack", + "target": "claude_supporting_libraries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L122", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_alternatives_considered", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L193", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_architecture", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L113", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_authelia_oidc_integration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L88", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_backend_framework", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L77", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_calendar_integration_caldav_not_jmap", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L182", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_conventions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L222", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_developer_profile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L207", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_gsd_workflow_enforcement", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L120", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_live_list_sync", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L158", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_open_questions_flagged_for_phase_research", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L200", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_project_skills", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L99", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_react_pwa_stack", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L160", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_sources", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L148", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_version_compatibility", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L135", + "weight": 1.0, + "source": "claude_dev", + "target": "claude_what_not_to_use", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L184", + "weight": 1.0, + "source": "claude_conventions", + "target": "claude_browser_based_verification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L1", + "weight": 1.0, + "source": "docs_deployment", + "target": "docs_deployment_familysync_deployment_live_verification_runbook", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L241", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_dev_auth_bypass_phase_2_local_development", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L215", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_gate_2_live_verification_checklist_01_human_uat_md", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L50", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_prerequisites_both_modes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L66", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_step_1_register_the_oidc_client_in_authelia", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L105", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_step_2_app_environment_env", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L141", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_step_3_apply_the_database_schema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L156", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_step_4_pangolin_route_newt_connector", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L188", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_step_5_bring_up_the_app", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L199", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_step_6_unraid_production_mode_b_only", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L20", + "weight": 1.0, + "source": "docs_deployment_familysync_deployment_live_verification_runbook", + "target": "docs_deployment_topology", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L58", + "weight": 1.0, + "source": "docs_deployment_prerequisites_both_modes", + "target": "docs_deployment_same_parent_domain_requirement_pitfall_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L172", + "weight": 1.0, + "source": "docs_deployment_step_4_pangolin_route_newt_connector", + "target": "docs_deployment_newt_connector", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/deployment.md", + "source_location": "L165", + "weight": 1.0, + "source": "docs_deployment_step_4_pangolin_route_newt_connector", + "target": "docs_deployment_sse_idle_timeout_phase_4_dependency_issue_1034", + "confidence_score": 1.0 + } + ], + "hyperedges": [], + "built_at_commit": "00cbbb41a6a7c49bf6859504a1f5b4e53d09b2d0" +} \ No newline at end of file