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