From a03154030b5ad531e8a1fe78d665ff0197a393c9 Mon Sep 17 00:00:00 2001 From: vjrj Date: Fri, 10 Jul 2026 02:26:16 +0200 Subject: [PATCH] =?UTF-8?q?docs(block2):=20lift=20the=20gate=20=E2=80=94?= =?UTF-8?q?=20open=20the=20social=20round?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The de-risking spike validated the whole social happy path, so Block 2 moves from "do NOT start" to STARTED. Records the build order (transport foundation in commons_core first, on the vetted pure-Dart nostr lib) and marks open-decisions D.3/D.7 as resolved by the spike. --- CLAUDE.md | 6 +++--- docs/design/open-decisions.md | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index dee3ed0..6618825 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -53,10 +53,10 @@ Decided schema details: `Quantity` is a shared value type (Lot + Movement); `off ## Phasing — build order -**Block 1 (NOW): Inventory.** Shippable alone, useful with zero network. This is the current target. -**Block 2 (later): the social leap** — offers + messaging + relays + web of trust — big and indivisible; needs its own round (and ideally funding). Do NOT start Block 2 now. +**Block 1: Inventory.** Shippable alone, useful with zero network. Delivered (beta). +**Block 2 (STARTED — the social leap):** offers + messaging + relays + web of trust — big and indivisible. The de-risking spike ([`docs/design/spike-block2-findings.md`](docs/design/spike-block2-findings.md)) validated the whole happy path, so the **social round is now open**. Build order within Block 2: **(1) the transport foundation in `commons_core`** — one `NostrConnection` + three interfaces (`OfferTransport`/`MessageTransport`/`TrustTransport`) + the pure `WebOfTrust` rule, on vetted libraries — then (2) offers UI, (3) messaging hardening, (4) WoT parameters + cold-start. It is still large: scope honestly, keep it behind the transport interfaces, and don't let it regress Block 1. -Social layer (for later) uses: Nostr (offers NIP-99, DMs NIP-17), Duniter-style **web of trust** (Duniter/Ğ1 compatible, ~5 certifications), optional **Ğ1** currency (levels: price → wallet deep-link → optional WoT import). Cold-start via real Ğ1 seed groups + fairs. See [`docs/design/network-trust.md`](docs/design/network-trust.md) and [`docs/design/g1-integration.md`](docs/design/g1-integration.md). +Social layer uses: Nostr (offers NIP-99, DMs NIP-17, via the pure-Dart `nostr` package), Duniter-style **web of trust** (Duniter/Ğ1 compatible, ~5 certifications), optional **Ğ1** currency (levels: price → wallet deep-link → optional WoT import). Identity: a **secp256k1 Nostr key derived (HKDF, domain-separated, one-way) from the Ğ1 root seed** — user backs up ONE seed. Cold-start via real Ğ1 seed groups + fairs. See [`docs/design/network-trust.md`](docs/design/network-trust.md), [`docs/design/g1-integration.md`](docs/design/g1-integration.md), and the spike findings above. ## Where things live diff --git a/docs/design/open-decisions.md b/docs/design/open-decisions.md index 9b7f532..1f96a9b 100644 --- a/docs/design/open-decisions.md +++ b/docs/design/open-decisions.md @@ -2,6 +2,8 @@ *Revisión de conjunto antes de seguir construyendo. Reúne los cabos sueltos repartidos por los docs de diseño, ordenados por cuándo hay que decidirlos, y nombra las tensiones del plan que conviene mirar de frente.* +> **Actualización (2026-07-10) — se abre la ronda social (Block 2).** El spike de de-risking ([spike-block2-findings.md](spike-block2-findings.md)) validó el happy-path completo de la capa social: derivación de la clave Nostr desde la semilla Ğ1, `OfferTransport`/NIP-99, mensajería NIP-17 (privada y con metadatos ocultos) y red de confianza estilo Duniter, todo sobre **una `NostrConnection` compartida con tres interfaces**. Con eso, la puerta de "no empezar Block 2" queda **levantada**. Orden de construcción dentro de Block 2: **(1) base de transporte en `commons_core`** (sobre librerías contrastadas — `nostr`, Dart puro, LGPL) → (2) UI de ofertas → (3) endurecer mensajería (entrega offline, vectores NIP-44, multidispositivo) → (4) parámetros WoT + arranque en frío. Los ítems de §B siguen siendo las decisiones a cerrar; §D.3 y §D.7 quedan **resueltos** por el spike. + ## A) Decidir antes de escribir código de la Fase 1 (inventario) Estas fijan `schemaVersion = 1` y el arranque técnico: