Add VISION and design docs (backup/recovery, G1 integration, network trust, security/privacy, open decisions); update domain boundary and data notes

This commit is contained in:
vjrj 2026-07-07 10:49:44 +02:00
parent 59beadc03c
commit 8286d1fec8
8 changed files with 496 additions and 5 deletions

View file

@ -93,9 +93,25 @@ Drift: tablas del core en `commons_core`, tablas de extensión en `app_seeds`, m
---
## 8. A decidir
## 8. Decidido
- **Nombre del paquete núcleo:** `commons_core` / `comunes_core` / otro. (Tu org es Comunes; `commons_core` en inglés encaja con la convención de código.)
- ¿Hacemos ya `commons_ui` como tercer paquete, o el kit accesible empieza dentro de `app_seeds` y se extrae cuando llegue la segunda app? (Coherente con §7: probablemente empezar en `app_seeds` y extraer luego — salvo que quieras forzar la disciplina desde el día 1.)
- ¿`Item` y `Holding` como tablas base en el core desde el inicio, o el core arranca sin ellas (solo Offer/Pledge/Party/trust/sync) y `Variety/Lot` viven enteras en el dominio hasta que la app de cosas revele la forma común? (Esto último es aún más conservador y quizá lo más sensato.)
- ¿Herramienta de monorepo: `pub workspaces` (nativo, Dart 3.5+) o `melos`?
- **Nombre del paquete núcleo:** **`commons_core`** (inglés, encaja con la convención de código y con la org Comunes).
- **`commons_ui`:** nombre e idea fijados, pero **arranca dentro de `app_seeds`**; se extrae a paquete cuando llegue la segunda app (evita andamiaje prematuro, §7).
- **`Item` / `Holding`:** arranque **conservador** — el core NO lleva tablas base `Item/Holding` todavía. `Variety/Lot` viven **enteras en el dominio de semillas**. El core arranca solo con lo seguro-compartido (`Offer`, `Pledge`, `Party`, `Group`, `TrustEdge`, `Identity`, transporte+CRDT+sync, discovery). Cuando exista la app de cosas y revele la forma común, se extrae `Item/Holding` al core (refactor barato dentro del monorepo).
- **Monorepo:** **`pub workspaces`** (nativo de Dart, sin dependencias extra). Descartado `melos`.
### Estructura de arranque resultante
```
tane/
pubspec.yaml ← workspace raíz (pub workspaces)
packages/
commons_core/ ← Offer, Pledge, Party, Group, TrustEdge, Identity,
transport (OfferTransport/Nostr), CRDT+sync, geohash.
(Item/Holding se añadirán aquí al llegar la 2ª app.)
apps/
app_seeds/ ← Tanemaki: Variety, Lot, Movement, Species, germinación,
cosecha, unidades por familia, UI e i18n, commons_ui embebido.
```
Dependencia: `app_seeds → commons_core`, nunca al revés. Migraciones Drift versionadas por paquete.