lovarch-cli 0.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. lovarch_cli/__init__.py +16 -0
  2. lovarch_cli/__main__.py +10 -0
  3. lovarch_cli/ai/__init__.py +21 -0
  4. lovarch_cli/ai/gateway.py +240 -0
  5. lovarch_cli/api.py +111 -0
  6. lovarch_cli/auth/__init__.py +32 -0
  7. lovarch_cli/auth/keyring_store.py +214 -0
  8. lovarch_cli/auth/local_server.py +165 -0
  9. lovarch_cli/auth/pkce.py +57 -0
  10. lovarch_cli/auth/session.py +189 -0
  11. lovarch_cli/cli.py +262 -0
  12. lovarch_cli/clients/__init__.py +33 -0
  13. lovarch_cli/clients/factory.py +54 -0
  14. lovarch_cli/clients/local_client.py +432 -0
  15. lovarch_cli/clients/lovarch_storage.py +174 -0
  16. lovarch_cli/clients/lovarch_supabase.py +295 -0
  17. lovarch_cli/clients/persistence.py +166 -0
  18. lovarch_cli/clients/storage.py +66 -0
  19. lovarch_cli/commands/__init__.py +10 -0
  20. lovarch_cli/commands/account.py +172 -0
  21. lovarch_cli/commands/audit.py +394 -0
  22. lovarch_cli/commands/config_cmd.py +80 -0
  23. lovarch_cli/commands/consolidate.py +217 -0
  24. lovarch_cli/commands/context_cmd.py +73 -0
  25. lovarch_cli/commands/dev.py +287 -0
  26. lovarch_cli/commands/do_cmd.py +120 -0
  27. lovarch_cli/commands/init.py +218 -0
  28. lovarch_cli/commands/jobs_cmd.py +95 -0
  29. lovarch_cli/commands/login.py +202 -0
  30. lovarch_cli/commands/mcp_cmd.py +26 -0
  31. lovarch_cli/commands/run.py +375 -0
  32. lovarch_cli/commands/signup.py +185 -0
  33. lovarch_cli/commands/status.py +243 -0
  34. lovarch_cli/commands/upgrade.py +108 -0
  35. lovarch_cli/commands/verifica_cmd.py +174 -0
  36. lovarch_cli/config.py +101 -0
  37. lovarch_cli/config_store.py +111 -0
  38. lovarch_cli/credits/__init__.py +35 -0
  39. lovarch_cli/credits/base.py +84 -0
  40. lovarch_cli/credits/factory.py +36 -0
  41. lovarch_cli/credits/local.py +34 -0
  42. lovarch_cli/credits/lovarch.py +56 -0
  43. lovarch_cli/i18n/__init__.py +27 -0
  44. lovarch_cli/i18n/loader.py +121 -0
  45. lovarch_cli/i18n/translations/en.json +168 -0
  46. lovarch_cli/i18n/translations/es.json +168 -0
  47. lovarch_cli/i18n/translations/it.json +168 -0
  48. lovarch_cli/i18n/translations/pt.json +168 -0
  49. lovarch_cli/mcp/__init__.py +9 -0
  50. lovarch_cli/mcp/server.py +199 -0
  51. lovarch_cli/mcp/tools.py +372 -0
  52. lovarch_cli/sample_downloader.py +255 -0
  53. lovarch_cli/squad/README.md +206 -0
  54. lovarch_cli/squad/agents/auditor-input.md +353 -0
  55. lovarch_cli/squad/agents/bim-engineer.md +404 -0
  56. lovarch_cli/squad/agents/briefing-architect.md +249 -0
  57. lovarch_cli/squad/agents/cad-engineer.md +278 -0
  58. lovarch_cli/squad/agents/capitolato-writer.md +256 -0
  59. lovarch_cli/squad/agents/computo-engineer.md +258 -0
  60. lovarch_cli/squad/agents/concept-designer.md +399 -0
  61. lovarch_cli/squad/agents/contratto-architect.md +243 -0
  62. lovarch_cli/squad/agents/deliverable-builder.md +253 -0
  63. lovarch_cli/squad/agents/energy-prelim.md +388 -0
  64. lovarch_cli/squad/agents/pratiche-it.md +251 -0
  65. lovarch_cli/squad/agents/progetto-chief.md +768 -0
  66. lovarch_cli/squad/agents/quality-dati.md +409 -0
  67. lovarch_cli/squad/agents/quality-misure.md +418 -0
  68. lovarch_cli/squad/agents/quality-normativa.md +417 -0
  69. lovarch_cli/squad/agents/quality-output.md +436 -0
  70. lovarch_cli/squad/agents/regolatorio-it.md +278 -0
  71. lovarch_cli/squad/checklists/handoff-quality-gate.md +232 -0
  72. lovarch_cli/squad/checklists/quality-dati-checklist.md +134 -0
  73. lovarch_cli/squad/checklists/quality-misure-checklist.md +139 -0
  74. lovarch_cli/squad/checklists/quality-normativa-checklist.md +121 -0
  75. lovarch_cli/squad/checklists/quality-output-checklist.md +116 -0
  76. lovarch_cli/squad/config.yaml +408 -0
  77. lovarch_cli/squad/data/CHANGELOG.md +272 -0
  78. lovarch_cli/squad/data/agents-prd.md +428 -0
  79. lovarch_cli/squad/data/architettura-progetto-rules.md +328 -0
  80. lovarch_cli/squad/data/handoff-card-template.md +231 -0
  81. lovarch_cli/squad/data/mocks/catasto-visura.json +72 -0
  82. lovarch_cli/squad/data/mocks/firma-envelope.json +43 -0
  83. lovarch_cli/squad/data/prezzario-lombardia-sample.json +312 -0
  84. lovarch_cli/squad/scripts/api_clients.py +206 -0
  85. lovarch_cli/squad/scripts/architect_profile.py +276 -0
  86. lovarch_cli/squad/scripts/deliverable_generators.py +844 -0
  87. lovarch_cli/squad/scripts/generate_attico_brera_dwg.py +369 -0
  88. lovarch_cli/squad/scripts/generate_chianti_dxf.py +368 -0
  89. lovarch_cli/squad/scripts/generate_chianti_images.py +223 -0
  90. lovarch_cli/squad/scripts/generate_real_sample_images.py +189 -0
  91. lovarch_cli/squad/scripts/generate_sample_assets.py +382 -0
  92. lovarch_cli/squad/scripts/lovarch_client.py +1046 -0
  93. lovarch_cli/squad/scripts/pipeline_runner.py +2095 -0
  94. lovarch_cli/squad/scripts/render_dxf_to_png.py +57 -0
  95. lovarch_cli/squad/scripts/run_palestra_demo.sh +277 -0
  96. lovarch_cli/squad/scripts/simulate_squad_execution.py +515 -0
  97. lovarch_cli/squad/scripts/validate-squad.py +383 -0
  98. lovarch_cli/squad/tasks/audit-input.md +146 -0
  99. lovarch_cli/squad/tasks/compute-metric.md +105 -0
  100. lovarch_cli/squad/tasks/consolidate-dossier.md +187 -0
  101. lovarch_cli/squad/tasks/generate-cad-plan.md +120 -0
  102. lovarch_cli/squad/tasks/generate-ifc-model.md +108 -0
  103. lovarch_cli/squad/tasks/write-capitolato.md +100 -0
  104. lovarch_cli/squad/templates/asseverazione-tecnica.md +126 -0
  105. lovarch_cli/squad/templates/capitolato-uni-11337.md +235 -0
  106. lovarch_cli/squad/templates/cila-comune-milano.md +177 -0
  107. lovarch_cli/squad/templates/contratto-cnappc.md +220 -0
  108. lovarch_cli/squad/workflows/dal-brief-al-cantiere.yaml +218 -0
  109. lovarch_cli/squad_loader.py +114 -0
  110. lovarch_cli/verify/__init__.py +15 -0
  111. lovarch_cli/verify/contratto.py +110 -0
  112. lovarch_cli/verify/dossier.py +97 -0
  113. lovarch_cli/verify/misure.py +83 -0
  114. lovarch_cli/verify/normativa.py +178 -0
  115. lovarch_cli/version.py +13 -0
  116. lovarch_cli/workflows/__init__.py +9 -0
  117. lovarch_cli/workflows/platform.py +212 -0
  118. lovarch_cli-0.2.1.dist-info/METADATA +232 -0
  119. lovarch_cli-0.2.1.dist-info/RECORD +122 -0
  120. lovarch_cli-0.2.1.dist-info/WHEEL +4 -0
  121. lovarch_cli-0.2.1.dist-info/entry_points.txt +3 -0
  122. lovarch_cli-0.2.1.dist-info/licenses/LICENSE +38 -0
@@ -0,0 +1,328 @@
1
+ # Architettura Progetto · Central Rules Document
2
+
3
+ > **Mandatory consultation:** ALL agents MUST read this document before any action.
4
+ > Source of truth for normative references, conventions, and inviolable principles.
5
+ > Version: 2.0.0 · Last updated: 2026-04-25
6
+
7
+ ---
8
+
9
+ ## 1. INVIOLABLE PRINCIPLES
10
+
11
+ ### 1.1 Hub-and-Spoke handoff
12
+ - Specialists **NEVER** route directly to other specialists.
13
+ - Every handoff returns to `@progetto-chief`, who validates and routes next step.
14
+ - Required announcement: `Ritorno al @progetto-chief. {lavoro} concluso.`
15
+ - Specialist-to-specialist routing = **VETO** (constitutional violation).
16
+
17
+ ### 1.2 Tier 2 QA mandatory
18
+ - Tier 1 output **NEVER** skips Tier 2 QA.
19
+ - Min 2 of 4 QA agents (misure, normativa, dati, output) must validate before consolidation.
20
+ - QA REJECT after 3 retries → escalate to human (Pablo).
21
+
22
+ ### 1.3 Italian-first
23
+ - All deliverables in Italian (IT) primary.
24
+ - Multilingue secondary: EN, ES, PT for client presentation only.
25
+ - Terminology source: UNI 11337, CNAPPC, ISO 5457.
26
+
27
+ ### 1.4 Zero tolerance on critical metrics
28
+ - Measures: ±1mm tolerance (quality-misure verifies).
29
+ - Data coherence: 100% cross-document match (quality-dati verifies).
30
+ - Normative references: 100% verifiable on Normattiva (quality-normativa verifies).
31
+
32
+ ### 1.5 Self-contained
33
+ - All squad files inside `squads/architettura-progetto/`.
34
+ - No external file references except: Lovarch edge functions + global APIs (Mapbox, FLUX, Gemini).
35
+ - No mind clone DNA in `outputs/minds/` (DNA inline in agent files via Voice DNA + Thinking DNA).
36
+
37
+ ---
38
+
39
+ ## 2. ITALIAN REGULATORY STACK (mandatory references)
40
+
41
+ ### 2.1 DPR 380/2001 · Testo Unico Edilizia
42
+
43
+ | Articolo | Tema | Quando applicare |
44
+ |----------|------|------------------|
45
+ | **art. 6** | Edilizia libera | Manutenzione ordinaria, opere temporanee |
46
+ | **art. 6-bis** | CILA | Manutenzione straordinaria interna senza struttura |
47
+ | **art. 22** | SCIA | Modifiche prospetti / opere strutturali leggere |
48
+ | **art. 23** | SCIA alternativa al PdC | Ristrutturazione "pesante" |
49
+ | **art. 10** | Permesso di Costruire | Nuova costruzione, sopraelevazione |
50
+ | **art. 3** | Definizioni interventi | Riferimento per classificazione |
51
+
52
+ **Decisione tipo pratica per Attico Brera 120 m²:**
53
+ - Ristrutturazione interna senza prospetti né strutturali → **CILA**
54
+ - Modifiche prospetti (zona vincolata) → **SCIA + paesaggistica**
55
+ - Demolizione muri portanti → **SCIA alternativa o PdC + relazione strutturale**
56
+
57
+ ### 2.2 D.Lgs 42/2004 · Codice Beni Culturali
58
+
59
+ - **art. 10** · Vincolo monumentale diretto → autorizzazione art. 21 Soprintendenza
60
+ - **art. 142** · Vincolo paesaggistico → autorizzazione art. 146
61
+ - **DPR 31/2017** · Procedura semplificata (allegato A esonero, B 60gg)
62
+
63
+ ### 2.3 NTC 2018 (DM 17/01/2018) + Circolare 7/2019
64
+
65
+ | Cap. | Tipo intervento | Quando |
66
+ |------|----------------|--------|
67
+ | **8.4.1** | Riparazione/locale | No struttura · solo verifica locale |
68
+ | **8.4.2** | Miglioramento | Aumento sicurezza · valutazione sismica |
69
+ | **8.4.3** | Adeguamento | Cambio destinazione, sopraelevazione, ampliamento >10% |
70
+
71
+ Per Attico Brera ristrutturazione interna senza struttura → **8.4.1** (verifica locale, no calcolo).
72
+
73
+ ### 2.4 D.Lgs 81/2008 · Sicurezza nei Cantieri
74
+
75
+ CSP/CSE obbligatori se:
76
+ - ≥2 imprese (anche non contemporanee) — art. 90 c.3
77
+ - Durata >200 uomini-giorno
78
+ - Cantiere >30gg con ≥20 lavoratori-giorno
79
+
80
+ Per Attico Brera (edile + impianti + serramenti) → **CSP/CSE quasi sempre obbligatori**.
81
+
82
+ ### 2.5 UNI 11337 · BIM Italia
83
+
84
+ | Parte | Oggetto |
85
+ |-------|---------|
86
+ | 1:2017 | Modelli, elaborati, oggetti |
87
+ | 4:2017 | LOD scala A-G (sostituita progressivamente da LOIN) |
88
+ | 5:2017 | Flussi informativi, CDE |
89
+ | **7:2018** | Qualificazione figure BIM |
90
+ | 9:2024 | Fascicolo digitale del costruito |
91
+
92
+ **LOIN UNI EN 17412-1:2020** → riferimento per appalti pubblici BIM dal 2025.
93
+
94
+ ### 2.6 CAM Edilizia 2025 (DM 23/06/2022)
95
+
96
+ - Calcestruzzo: ≥15% riciclato
97
+ - Laterizio: ≥30% riciclato
98
+ - Demolizione selettiva: ≥70% recupero
99
+ - Legno: FSC/PEFC certificato
100
+ - Isolanti: con DAP/EPD
101
+
102
+ **Obbligatorio:** opere pubbliche.
103
+ **Privato:** non obbligatorio, ma replicabile per Ecobonus/detrazioni.
104
+
105
+ ### 2.7 Bonus edilizi 2026
106
+
107
+ | Bonus | Aliquota 2026 |
108
+ |-------|---------------|
109
+ | Bonus Ristrutturazione | 36% prima casa, 30% seconda |
110
+ | Ecobonus | 50% prima, 36% seconda |
111
+ | Sismabonus | 50% / 36% |
112
+ | Bonus Mobili | 50% fino €5.000 |
113
+ | Superbonus | **CESSATO** per privati |
114
+
115
+ **Cessione credito/sconto fattura:** bloccati (DL 11/2023), salvo eccezioni vincolati.
116
+
117
+ ### 2.8 PGT Milano 2030 · Zona A1 (NAF Brera)
118
+
119
+ - Conservazione tipologica obbligatoria
120
+ - Facciate: divieto modifiche, restauro materiali originali
121
+ - Interni: ammessa ristrutturazione se non altera schema distributivo storico
122
+ - Doppio binario: Comune (PGT) + Soprintendenza (vincolo MiC)
123
+
124
+ ### 2.9 L. 49/2023 · Equo Compenso
125
+
126
+ - **Ambito della L.49/2023:** tutela il professionista verso il **contraente forte** (PA, banche, assicurazioni, grandi imprese ≥50 dipendenti o fatturato ≥€10M). **NON si applica al cliente privato consumatore** (es. ristrutturazione di abitazione).
127
+ - DM 17/06/2016 = **metodo di calcolo** del compenso equo (CP = V × G × Q × P), riferimento ORIENTATIVO per il cliente privato. **Non esiste un limite legale del 20% di sconto.**
128
+ - Categoria E.20 residenziale, grado complessità G = 0.95
129
+ - Per ristrutturazione 120 m² @ €1.500/m² = €180.000 valore opera → onorario indicativo €18-22K
130
+ - Uno scostamento marcato dai parametri per cliente privato è una scelta commerciale legittima: segnalarlo come rischio di sostenibilità/qualità (non come illecito) e ridefinire il perimetro coerente.
131
+
132
+ ### 2.10 L. 105/2024 · Salva-Casa
133
+
134
+ - Tolleranze ≤5%
135
+ - Sanatorie difformità formali
136
+ - Stato legittimo (DL 69/2024)
137
+
138
+ ### 2.11 Reg. UE 2016/679 · GDPR
139
+
140
+ - Informativa privacy obbligatoria nel contratto
141
+ - Titolare: architetto · Finalità: esecuzione incarico
142
+ - Conservazione: 10 anni (compliance antiriciclaggio)
143
+
144
+ **Subprocessori del pipeline (Art. 28 GDPR — responsabili del trattamento):** il briefing del cliente (incl. CF, indirizzo ed eventuali dati particolari, es. esigenze di salute) viene elaborato da fornitori AI/servizi terzi — tipicamente OpenAI, Google (Gemini), DeepL e Mapbox. L'architetto (titolare) deve: (a) indicare questi subprocessori nell'informativa privacy resa al cliente; (b) avere una base giuridica adeguata; (c) minimizzare i dati inviati (evitare dati particolari non necessari). Il dossier generato NON deve esporre dati personali oltre il necessario.
145
+
146
+ ---
147
+
148
+ ## 3. STANDARD UNI ISO PER ELABORATI GRAFICI
149
+
150
+ ### 3.1 UNI ISO 5457 · Formato fogli
151
+
152
+ | Formato | Dim. (mm) | Uso tipico |
153
+ |---------|-----------|------------|
154
+ | A0 | 841 × 1189 | Tavole sintesi PRG |
155
+ | A1 | 594 × 841 | **Tavole esecutive** (default) |
156
+ | A2 | 420 × 594 | Dettagli costruttivi |
157
+ | A3 | 297 × 420 | Allegati pratiche |
158
+
159
+ ### 3.2 UNI ISO 128-1 · Linee e simboli grafici
160
+
161
+ - Spessore linee: 0.13 / 0.18 / 0.25 / 0.35 / 0.50 / 0.70 mm
162
+ - Stili: continuo, tratteggiato (linee nascoste), tratto-punto (assi)
163
+
164
+ ### 3.3 Layer ISO standard (DXF)
165
+
166
+ | Layer | Contenuto |
167
+ |-------|-----------|
168
+ | `CAD-A-WALL` | Muri interni |
169
+ | `CAD-A-WALL-EXT` | Muri perimetrali |
170
+ | `CAD-A-DOOR` | Porte |
171
+ | `CAD-A-WIND` | Finestre |
172
+ | `CAD-A-DIM` | Quote |
173
+ | `CAD-A-TEXT` | Testo |
174
+ | `CAD-A-SYMB` | Simboli |
175
+ | `CAD-A-FURN` | Mobili |
176
+ | `CAD-A-CART` | Cartiglio |
177
+
178
+ ### 3.4 Cartiglio CNAPPC
179
+
180
+ Campi obbligatori:
181
+ - Progetto · Cliente · Architetto · n. Ordine
182
+ - Tavola · Scala · Data · Fase · Rev.
183
+ - Formato (A1, A0)
184
+ - File path/nome
185
+
186
+ ### 3.5 Tolleranze geometriche
187
+
188
+ - Verticalità pareti: ±3 mm su 2 m
189
+ - Planarità pavimenti: ±2 mm sotto regolo da 2 m
190
+ - Squadratura ambienti: ±5 mm su 4 m
191
+ - Quote individuali: **±1 mm** (verifica @quality-misure)
192
+
193
+ ---
194
+
195
+ ## 4. FRAMEWORK DI ANALISI E DIAGNOSI
196
+
197
+ ### 4.1 Phases standard del progetto IT (DM 49/2018)
198
+
199
+ | Fase | Output principali |
200
+ |------|-------------------|
201
+ | **PFTE** | Relazione, planimetrie 1:500/1:200, prefattibilità, QE |
202
+ | **Definitivo** | Tavole 1:100, relazioni specialistiche, computo estimativo, capitolato prestazionale |
203
+ | **Esecutivo** | Tavole 1:50/1:20, particolari costruttivi, computo definitivo, capitolato speciale, PSC |
204
+ | **DL** | SAL, contabilità, certificato regolare esecuzione, varianti |
205
+
206
+ **Privato:** spesso PFTE+Definitivo fusi; Esecutivo+DL sempre separati.
207
+
208
+ ### 4.2 Mapping RIBA POW → IT
209
+
210
+ - RIBA 0-1 (Strategic) → Studio di fattibilità
211
+ - RIBA 2-3 (Concept/Developed) → PFTE + Definitivo
212
+ - RIBA 4 (Technical) → Esecutivo
213
+ - RIBA 5-6 (Construction/Handover) → DL + Collaudo
214
+ - RIBA 7 (In Use) → Fascicolo del costruito (UNI 11337-9)
215
+
216
+ ---
217
+
218
+ ## 5. CONVENTIONS SQUAD ARCHITETTURA-PROGETTO
219
+
220
+ ### 5.1 File naming
221
+ - DXF: `{ambito}-{stato}.dxf` (es. `pianta-progetto.dxf`)
222
+ - PDF: `{NN}-{categoria}-{nome}.pdf` (es. `01-briefing-strutturato.pdf`)
223
+ - IFC: `modello.ifc` (singular per progetto)
224
+ - Excel: `{ambito}.xlsx` (es. `computo-metrico.xlsx`)
225
+ - ZIP: `DOSSIER-IMPRESA.zip` (uppercase final pacchetto)
226
+
227
+ ### 5.2 Cartelle output
228
+ ```
229
+ ~/projects/{slug}/
230
+ ├── 01-briefing/
231
+ ├── 02-concept/
232
+ ├── 03-progetto-definitivo/
233
+ ├── 04-pratiche-comune/
234
+ ├── 05-impresa/
235
+ ├── 06-ingegneri/
236
+ ├── 07-cliente/
237
+ └── 08-studio-interno/
238
+ ```
239
+
240
+ ### 5.3 Versioning
241
+ - Documenti: `v1.0`, `v1.1`, `v2.0` (semver)
242
+ - Git tag dopo ogni esecuzione completa: `squad-v1.0-{timestamp}`
243
+ - Manifest.json con SHA256 di ogni deliverable
244
+
245
+ ### 5.4 Lingua documenti
246
+ - Tecnici (CILA, capitolato, computo): **solo italiano**
247
+ - Cliente (presentazione, portale): primaria IT, alternative EN/ES/PT
248
+ - Code/JSON/file naming: inglese
249
+
250
+ ### 5.5 Banner obbligatori
251
+
252
+ Documenti che richiedono firma umana devono avere banner esplicito:
253
+
254
+ > **BOZZA · Firma del professionista abilitato obbligatoria**
255
+ > Documento generato automaticamente da Squad architettura-progetto.
256
+ > Verificare e firmare digitalmente con certificato qualificato (eIDAS QES)
257
+ > prima della protocollazione.
258
+
259
+ I documenti con implicazione legale o economica (contratto, preventivo onorari, pratiche edilizie, asseverazione) devono inoltre riportare il disclaimer:
260
+
261
+ > **⚠️ Documento generato con AI — verifica professionale obbligatoria**
262
+ > I riferimenti normativi, gli importi e i calcoli possono contenere errori.
263
+ > Verificare con il proprio Ordine professionale e/o commercialista prima dell'uso.
264
+ > Il professionista firmatario è l'unico responsabile dei contenuti.
265
+
266
+ ---
267
+
268
+ ## 6. WHAT THE SQUAD DOES NOT DO
269
+
270
+ Limiti dichiarati per credibilità:
271
+
272
+ - ❌ Firma digitale del tecnico abilitato (CILA, asseverazione) — solo umano
273
+ - ❌ Calcolo strutturale certificato (NTC 2018) — solo ingegnere strutturale iscritto
274
+ - ❌ Rilievo metrico topografico certificato — solo geometra/topografo
275
+ - ❌ Coordinatore Sicurezza (CSP/CSE) — solo tecnico abilitato D.Lgs 81
276
+ - ❌ Progettista antincendio per VV.FF. — solo certificato
277
+ - ❌ Visita in loco e responsabilità personale dell'architetto
278
+ - ❌ APE ufficiale (la stima preliminare richiede certificatore abilitato)
279
+
280
+ Ogni deliverable che tocca queste aree è **bozza** con banner.
281
+
282
+ ---
283
+
284
+ ## 7. AGENT RESPONSIBILITY MATRIX
285
+
286
+ | Agent | Tier | Responsibility | Critical | Mind clone source |
287
+ |-------|------|---------------|----------|-------------------|
288
+ | @progetto-chief | 0 | Orchestration | hub-and-spoke enforcement | (functional) |
289
+ | @auditor-input | 0 | Input gate | 18 mandatory checks | (functional) |
290
+ | @briefing-architect | 1 | Brief structuring | UNI 11337 compliance | (functional) |
291
+ | @regolatorio-it | 1 | Regulatory determination | DPR 380 + paesaggistica | (functional) |
292
+ | @concept-designer | 1 | Visual concept | DS V8 alignment | Patrik Schumacher (ZHA) |
293
+ | @cad-engineer | 1 | 2D plans | ±1mm tolerance | (functional) |
294
+ | @bim-engineer | 1 | IFC4 LOD 300 | ISO 12006-3 psets | Mark Baldwin |
295
+ | @computo-engineer | 1 | Quantity take-off | Prezzario + IVA 10% | (functional) |
296
+ | @capitolato-writer | 1 | Capitolato | UNI 11337-7 + CAM 2025 | (functional) |
297
+ | @pratiche-it | 1 | CILA/SCIA | Templates Comune Milano | (functional) |
298
+ | @contratto-architect | 1 | Contratto CNAPPC | L.49/2023 equo compenso | (functional) |
299
+ | @energy-prelim | 1 | APE preliminare | UNI/TS 11300 | Edward Mazria |
300
+ | @deliverable-builder | 1 | Final deliverables | DS V8 padrão | (functional) |
301
+ | @quality-misure | 2 | Misure verification | ±1mm zero tolerance | W. Edwards Deming |
302
+ | @quality-normativa | 2 | Normative compliance | 11 frameworks | Joseph Juran |
303
+ | @quality-dati | 2 | Cross-doc coherence | 100% match | Larry English |
304
+ | @quality-output | 2 | Deliverable QA | All open + uploaded | Kent C. Dodds |
305
+
306
+ ---
307
+
308
+ ## 8. EMERGENCY PROCEDURES
309
+
310
+ ### 8.1 QA REJECT loop (max 3 retries)
311
+ 1. QA agent emite REJECT con diff specifico
312
+ 2. @progetto-chief identifica agente origine
313
+ 3. Re-invocazione mirata con diff
314
+ 4. QA re-verifica solo items falliti
315
+ 5. Se 3 retries falliscono → escalate al humano (Pablo)
316
+
317
+ ### 8.2 API failure
318
+ - Edge function 5xx persistente → halt + log + ask Pablo
319
+ - Mapbox 429 (rate limit) → backoff exponential (1s, 2s, 4s)
320
+ - FLUX timeout >90s → retry su altro modello image (FLUX 2 Pro)
321
+
322
+ ### 8.3 Storage quota
323
+ - Lovarch storage piena → halt immediato + log + notify Pablo
324
+ - Local disk pieno → halt + log
325
+
326
+ ---
327
+
328
+ **Reference:** This document is the source of truth. In case of conflict with agent files, this document prevails. Update this document FIRST, then propagate to agents.
@@ -0,0 +1,231 @@
1
+ # Handoff Card Template · Squad Architettura-Progetto
2
+
3
+ > Cartão padrão usado em **todos** os handoffs do squad. Gerado por `@progetto-chief`
4
+ > ao despachar trabalho para um especialista; preenchido pelo especialista no retorno.
5
+ > **Pattern:** AP-PP-001 (Hub-and-Spoke Handoff)
6
+
7
+ ---
8
+
9
+ ## OUTBOUND CARD (chief → specialist)
10
+
11
+ ```yaml
12
+ handoff_card:
13
+ cycle_id: "{uuid}" # generated by chief
14
+ type: outbound
15
+ timestamp: "{iso8601}"
16
+
17
+ from: "@progetto-chief"
18
+ to: "@{specialist-name}"
19
+
20
+ context:
21
+ execution_id: "{pm_squad_execution.id}"
22
+ project_id: "{pm_project.id}"
23
+ project_slug: "{kebab-case slug}"
24
+ cliente: "{cliente nome}"
25
+ indirizzo: "{indirizzo immobile}"
26
+ valore_opera_eur: {numero}
27
+
28
+ task:
29
+ objective: "{1-line clear objective}"
30
+ description: "{detailed description}"
31
+ deadline: "{seconds from start}"
32
+
33
+ inputs:
34
+ files:
35
+ - path: "{absolute path}"
36
+ type: "{briefing | dwg | image | json | pdf | xlsx}"
37
+ size_kb: {n}
38
+ data:
39
+ {key}: {value}
40
+
41
+ expected_outputs:
42
+ files:
43
+ - path: "{relative path inside project_slug/}"
44
+ type: "{type}"
45
+ critical: {true | false}
46
+ json_data:
47
+ - schema: "{json schema or shape description}"
48
+
49
+ conventions_to_enforce:
50
+ # Pulled from data/architettura-progetto-rules.md
51
+ - "{convention 1}"
52
+ - "{convention 2}"
53
+
54
+ quality_requirements:
55
+ will_be_verified_by:
56
+ - "@quality-misure"
57
+ - "@quality-normativa"
58
+ - "@quality-dati"
59
+ - "@quality-output"
60
+ severity_threshold: "CRITICO 100% pass + SECONDARIO ≥80% + MINORE ≥50%"
61
+
62
+ return_to: "@progetto-chief"
63
+ return_format: "Inbound Card (see template below)"
64
+ required_announcement: "Ritorno al @progetto-chief. {lavoro} concluso."
65
+ ```
66
+
67
+ ---
68
+
69
+ ## INBOUND CARD (specialist → chief)
70
+
71
+ ```yaml
72
+ handoff_card:
73
+ cycle_id: "{same uuid as outbound}" # MUST match
74
+ type: inbound
75
+ timestamp: "{iso8601}"
76
+
77
+ from: "@{specialist-name}"
78
+ to: "@progetto-chief"
79
+
80
+ status: "completed | partial | failed"
81
+ duration_seconds: {n}
82
+ retry_count: {0-3}
83
+
84
+ outputs:
85
+ files_created:
86
+ - path: "{relative path}"
87
+ size_kb: {n}
88
+ sha256: "{hash}"
89
+ mime: "{mime type}"
90
+ files_modified: []
91
+ files_deleted: []
92
+
93
+ pm_documents_uploaded:
94
+ - id: "{uuid}"
95
+ public_url: "{url}"
96
+
97
+ change_log: |
98
+ {2-4 sentences describing what changed and why}
99
+
100
+ convention_verification_report:
101
+ - convention: "{from outbound card}"
102
+ status: "✓ | ✗ | N/A"
103
+ reason: "{if N/A, why}"
104
+
105
+ deploy_required: {true | false} # If supabase/functions/ files modified
106
+
107
+ qa_pre_check:
108
+ misure_self_check: "{n/m items pass}"
109
+ normativa_self_check: "{n/m items pass}"
110
+ dati_self_check: "{n/m items pass}"
111
+ output_self_check: "{n/m items pass}"
112
+
113
+ suggested_next_step:
114
+ option: "Done | Multi-domain → @{next-specialist} | Re-review"
115
+ rationale: "{1-line why}"
116
+
117
+ errors_encountered: []
118
+ warnings: []
119
+
120
+ required_announcement: "Ritorno al @progetto-chief. {lavoro} concluso."
121
+ ```
122
+
123
+ ---
124
+
125
+ ## CHIEF VALIDATION (after receiving inbound)
126
+
127
+ After receiving an Inbound Card, `@progetto-chief` runs `checklists/handoff-quality-gate.md`:
128
+
129
+ ```yaml
130
+ chief_validation:
131
+ cycle_id: "{uuid}"
132
+ validated_at: "{iso8601}"
133
+
134
+ protocol_integrity: # Section 1 of handoff-quality-gate
135
+ p1_announcement_received: "PASS | FAIL"
136
+ p2_no_direct_chaining: "PASS | ESCALATE"
137
+ p3_cycle_id_matches: "PASS | FAIL"
138
+ p4_specialist_identity_correct: "PASS | ESCALATE"
139
+
140
+ output_completeness: # Section 2
141
+ o1_files_listed: "PASS | FAIL"
142
+ o2_change_log_present: "PASS | FAIL"
143
+ o3_convention_report: "PASS | FAIL"
144
+ o4_deploy_flagged: "PASS | FAIL | N/A"
145
+ o5_next_step_present: "PASS | FAIL"
146
+
147
+ qa_routing_decision:
148
+ route_to_qa_agents:
149
+ - "@quality-misure" # if files include DXF/IFC
150
+ - "@quality-normativa" # if files include normative refs
151
+ - "@quality-dati" # if files include numbers
152
+ - "@quality-output" # always (final phase)
153
+
154
+ verdict: "PASS → QA_Pending | REJECT → InProgress (specialist retry) | ESCALATE"
155
+
156
+ feedback_to_specialist: |
157
+ {specific feedback if REJECT}
158
+ ```
159
+
160
+ ---
161
+
162
+ ## EXAMPLE · Real outbound card
163
+
164
+ ```yaml
165
+ handoff_card:
166
+ cycle_id: "a7f4b2e1-3c8d-4f1a-9b6e-8d2c5a3f7b9e"
167
+ type: outbound
168
+ timestamp: "2026-04-25T10:32:08+02:00"
169
+
170
+ from: "@progetto-chief"
171
+ to: "@cad-engineer"
172
+
173
+ context:
174
+ execution_id: "5d585486-0991-4598-b880-171682ea9424"
175
+ project_id: "abc12345-6789-..."
176
+ project_slug: "attico-brera"
177
+ cliente: "Marco Rossini & Giulia Bianchi"
178
+ indirizzo: "Via Fiori Chiari 17, Milano"
179
+ valore_opera_eur: 180000
180
+
181
+ task:
182
+ objective: "Generate pianta-progetto.dxf with quote UNI 5457"
183
+ description: "Trasformare il programma spaziale di @briefing-architect in pianta tecnica quotata. Ambienti: ingresso, living open-space, studio Marco, camera padronale + bagno en-suite + cabina, camera Sofia, bagno secondario, lavanderia. Mantenere terrazzo 20m². Sup utile target 102m²."
184
+ deadline: 180
185
+
186
+ inputs:
187
+ files:
188
+ - path: "/Users/pablo/projects/attico-brera/01-input/stato-attuale.dxf"
189
+ type: "dwg"
190
+ size_kb: 78
191
+ - path: "/Users/pablo/projects/attico-brera/01-briefing/requisiti.json"
192
+ type: "json"
193
+ size_kb: 4
194
+ data:
195
+ sup_utile_target: 102.0
196
+ altezza_ambienti_cm: 290
197
+ vincolo_seminato: "preservare in living"
198
+
199
+ expected_outputs:
200
+ files:
201
+ - path: "03-progetto-definitivo/pianta-progetto.dxf"
202
+ type: "dxf"
203
+ critical: true
204
+ - path: "03-progetto-definitivo/pianta-progetto.pdf"
205
+ type: "pdf"
206
+ critical: true
207
+ - path: "03-progetto-definitivo/sezione-AA.pdf"
208
+ type: "pdf"
209
+ critical: false
210
+ - path: "03-progetto-definitivo/schema-quotato.json"
211
+ type: "json"
212
+ critical: true
213
+
214
+ conventions_to_enforce:
215
+ - "UNI ISO 5457 formato A1 + cartiglio CNAPPC"
216
+ - "UNI ISO 128-1 spessori linee"
217
+ - "Layer ISO standard (CAD-A-WALL, CAD-A-DIM, etc.)"
218
+ - "Tolleranza quote ±1mm"
219
+ - "Text height ≥2.5mm in scala 1:50"
220
+ - "Cartiglio con tutti i campi compilati"
221
+
222
+ quality_requirements:
223
+ will_be_verified_by:
224
+ - "@quality-misure"
225
+ - "@quality-dati"
226
+ severity_threshold: "CRITICO 100% + SECONDARIO ≥80% + MINORE ≥50%"
227
+
228
+ return_to: "@progetto-chief"
229
+ return_format: "Inbound Card"
230
+ required_announcement: "Ritorno al @progetto-chief. Pianta-progetto DXF + sezioni completate."
231
+ ```
@@ -0,0 +1,72 @@
1
+ {
2
+ "meta": {
3
+ "source": "MOCK · OpenAPI.com Catasto · da sostituire in produzione",
4
+ "version": "1.0",
5
+ "issued_at": "2026-04-25T10:00:00+02:00",
6
+ "mock": true
7
+ },
8
+ "request": {
9
+ "indirizzo": "Via Fiori Chiari 17",
10
+ "comune": "Milano",
11
+ "provincia": "MI",
12
+ "regione": "Lombardia"
13
+ },
14
+ "dati_catastali": {
15
+ "foglio": "356",
16
+ "particella": "127",
17
+ "subalterno": "12",
18
+ "mappale": "127/12",
19
+ "categoria": "A/2",
20
+ "classe": "5",
21
+ "consistenza": "5,5 vani",
22
+ "rendita_eur": 1456.32,
23
+ "zona_censuaria": "01"
24
+ },
25
+ "intestatari": [
26
+ {
27
+ "nome": "Marco",
28
+ "cognome": "Rossini",
29
+ "codice_fiscale": "RSSMRC83A15F205X",
30
+ "quota": "1/2",
31
+ "diritto": "proprietà"
32
+ },
33
+ {
34
+ "nome": "Giulia",
35
+ "cognome": "Bianchi",
36
+ "codice_fiscale": "BNCGLI88D52F205Y",
37
+ "quota": "1/2",
38
+ "diritto": "proprietà"
39
+ }
40
+ ],
41
+ "ubicazione": {
42
+ "indirizzo_completo": "Via Fiori Chiari 17, 20121 Milano (MI)",
43
+ "piano": "3",
44
+ "scala": "A",
45
+ "interno": "5",
46
+ "civico": "17"
47
+ },
48
+ "vincoli_dichiarati": [
49
+ {
50
+ "tipo": "vincolo_paesaggistico",
51
+ "fonte": "D.Lgs 42/2004",
52
+ "descrizione": "Zona A1 PGT Milano · NAF · Brera",
53
+ "applicabile": true
54
+ },
55
+ {
56
+ "tipo": "vincolo_monumentale_indiretto",
57
+ "fonte": "art. 45 D.Lgs 42/2004",
58
+ "descrizione": "Edificio in zona di rispetto monumenti circostanti",
59
+ "applicabile": true
60
+ }
61
+ ],
62
+ "superfici": {
63
+ "superficie_lorda_m2": 120.0,
64
+ "superficie_utile_m2": 102.3,
65
+ "superficie_balconi_m2": 0,
66
+ "superficie_terrazzi_m2": 20.0,
67
+ "vani_catastali": 5.5
68
+ },
69
+ "anno_costruzione_dichiarato": 1910,
70
+ "ultima_variazione_catastale": "2018-06-15",
71
+ "note": "Visura ipotecaria non richiesta. Per atti notarili richiedere visura per soggetto."
72
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "meta": {
3
+ "source": "MOCK · OpenAPI.com Firma Digitale / Yousign QES · da sostituire in produzione",
4
+ "version": "1.0",
5
+ "provider_simulated": "Aruba Sign QES",
6
+ "compliance": ["eIDAS QES", "PAdES B-LT"],
7
+ "mock": true
8
+ },
9
+ "envelope": {
10
+ "id": "env_mock_8f3a2b1e7c4d",
11
+ "status": "pending_signature",
12
+ "created_at": "2026-04-25T10:30:00+02:00",
13
+ "expires_at": "2026-05-09T23:59:59+02:00",
14
+ "document_path": "07-cliente/contratto-servizi.pdf",
15
+ "document_title": "Contratto prestazione professionale · Attico Brera",
16
+ "document_pages": 6,
17
+ "document_hash_sha256": "a1b2c3d4e5f6...",
18
+ "signer": {
19
+ "name": "Marco Rossini",
20
+ "email": "marco.rossini@example.it",
21
+ "codice_fiscale": "RSSMRC83A15F205X",
22
+ "phone": "+39 333 123 4567",
23
+ "auth_method": "SPID",
24
+ "qualified_certificate_provider": "Aruba PEC SpA"
25
+ },
26
+ "signature_url": "https://mock.firma.example/sign/env_mock_8f3a2b1e7c4d?token=mock_token",
27
+ "audit_trail_url": "https://mock.firma.example/audit/env_mock_8f3a2b1e7c4d",
28
+ "signature_levels": {
29
+ "available": ["FES", "AdES", "QES"],
30
+ "required": "QES"
31
+ }
32
+ },
33
+ "estimated_cost_eur": 12.50,
34
+ "callback_url": "https://lovarch.com/api/firma/webhook",
35
+ "next_steps": [
36
+ "Cliente riceve email con link di firma",
37
+ "Cliente verifica identità via SPID o CIE",
38
+ "Cliente firma con certificato qualificato Aruba",
39
+ "Webhook notifica Lovarch · documento firmato disponibile per download",
40
+ "Documento PAdES-LT viene salvato in pm_documents"
41
+ ],
42
+ "note": "In produzione, sostituire con chiamata reale a OpenAPI.com firma o Yousign API."
43
+ }