Pilote Orléans · configuration, pas un fork · aucun lieu inventé

Livrable 00

Synthèse

Phase architecture. Aucun établissement. Aucun partenariat. Aucun prix. Aucune performance mesurée. Rien n'est implémenté.

Le canon est ce dossier (00 à 30). Les notes docs/agents/ sont des contributions croisées, pas une seconde vérité. En cas d'écart, le canon gagne. Les arbitrages clos sont recopiés dans docs/decisions/ ; le registre des risques reste le document 26. Les ADR sont dans docs/adr/.

Carte des 30

#LivrableFichier
1Vision01-product-vision.md
2Positionnement02-competitive-positioning.md
3IA client03-ia-client.md
4IA pro04-ia-pro.md
5IA admin / City OS05-ia-admin.md
6City DNA06-city-dna.md
7Config Orléans (brouillon)07-orleans-config.md
8Parcours client08-journeys-client.md
9Parcours pro09-journeys-pro.md
10ERD10-erd.md
11API11-api.md
12Live engine12-live-freshness-trust.md
13Freshness12-live-freshness-trust.md
14Recherche15-search.md
15Recommandation16-reco-ai.md
16Planificateur IA16-reco-ai.md
17Carte17-map.md
18Sécurité18-security-rbac.md
19RBAC18-security-rbac.md
20Privacy20-privacy.md
21SEO21-seo.md
22Analytics22-analytics.md
23Monétisation23-monetization.md
24MVP24-mvp-roadmap.md
25P1 / P2 / P324-mvp-roadmap.md
26Risques26-risks.md
27Architecture technique27-technical-architecture.md
28Dépôt28-repository.md
29Déploiement29-deployment.md
30Backlog30-backlog.md

Décisions qui ne bougent pas

  • Une app, trois espaces, un graphe, city_id partout. Orléans = ligne de configuration.
  • LIVE est un prédicat de validité, pas un websocket et pas une foule.
  • L'organique n'achète pas. Sponsorisé = slot ajouté, label, sans retirer l'id de la liste organique.
  • L'IA ne crée pas d'entités.
  • Compte non obligatoire pour découvrir.
  • PostGIS, Redis, tuiles, Stripe, e-mail, routing : prévus derrière des interfaces, non contractés.
  • Stack de livraison : TanStack Start, pas un second frontend Next.js.
  • Ville publiable seulement après checklist humaine. Pas de seed d'enseignes.

Arbitrages clos (revue croisée)

Ces huit points contredisaient le canon. Ils sont tranchés ici. Le détail est dans le livrable cité. Un agent qui dit l'inverse est périmé.

#SujetDécision
A1Source ≠ statutTrois axes : source_type, verification_status, temporal_status. Phrase UI composée. BUSINESS_VERIFIED n'est pas VERIFIED. Doc 12.
A2TempsFenêtres dans la DNA (time_windows). Semaine DNA = ISO 1–7. Horaires = 0–6, 0 = lundi. closed_until = CLOSED_OVERRIDE, pas EXPIRED. Pas de minutes de marche inventées. Doc 06, 10, 12.
A3Alcoolmodules.nightlife peut être on. legal_gates.alcohol_ads reste off. Doc 06, 07.
A4TerritoirePas de table districts. Une zone, une URL /{city}/zones/{slug}. centre-ville est une zone. concerts n'est pas une route en dur. Un événement publié a un lieu ou une zone. Doc 03, 07, 10, 21.
A5MesureTrois classes : sécurité, agrégat opérationnel, mesure consentie. Le pro ne voit pas un zéro muet. booking_click ≠ réservation. Doc 22.
A6Gratuit et sponsoriséUn quota de publications n'expulse pas un lieu de Now. L'organique est identique avec ou sans campagne. plans = abonnements. night_plans = soirées. Doc 08, 10, 23.
A7IngestionÉtats de pipeline explicites. human_review hors héros. Mise en avant = rail « Sélection locale », hors score. soft_launch invisible au public. Rollback DNA a un endpoint. Doc 05, 07, 11.
A8RBACUn compte peut revendiquer un autre lieu. L'éditeur ne touche pas aux horaires. Pas de badge public sur un signalement OPEN. Doc 18.

Orchestration

Le mandat demandait 100 agents en même temps. Ce runtime en lance 16 au plus. Les missions sont parties en vagues, chacune avec un fichier dans docs/agents/ (55 notes, classées par thème, pas 100). La synthèse ne moyenne pas : le canon gagne, les contradictions sont les arbitrages A1–A8. Une note d'agent qui contredit ce dossier est périmée. Rien de tout cela n'est du code produit.