{"nodes": [{"id": "plan_fase_2b", "label": "Fase 2b \u2014 Sincronizaci\u00f3n Realtime + Modo Compra", "file_type": "document", "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "concept_realtime_postgres_changes", "label": "Supabase Realtime postgres_changes subscription on shopping_items", "file_type": "document", "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.1", "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "concept_offline_queue_idb", "label": "Offline-first IndexedDB queue (pending_ops, flush on window.online)", "file_type": "document", "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.2", "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "concept_modo_compra", "label": "Modo Compra \u2014 full-screen shopping session UI (56px toggles, flip animation, presence)", "file_type": "document", "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.3", "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "rationale_last_write_wins", "label": "Why last-write-wins conflict resolution: no CRDT in MVP; conflicts logged to sync_conflicts for debugging", "file_type": "document", "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.2", "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "plan_fase_2b", "target": "plan_fase_2a", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": null, "weight": 1.0}, {"source": "plan_fase_2b", "target": "concept_realtime_postgres_changes", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.1", "weight": 1.0}, {"source": "plan_fase_2b", "target": "concept_offline_queue_idb", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.2", "weight": 1.0}, {"source": "plan_fase_2b", "target": "concept_modo_compra", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.3", "weight": 1.0}, {"source": "rationale_last_write_wins", "target": "concept_offline_queue_idb", "relation": "rationale_for", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "plan/fase-2b-realtime-modo-compra.md", "source_location": "\u00a72b.2", "weight": 1.0}], "hyperedges": []}