# Layout della documentazione — STS Lab Srl Due forme ricorrenti nei progetti STS Lab Srl. La skill deve funzionare con entrambe e con varianti intermedie. Per un progetto nuovo l'utente sceglie quale creare: i modelli sono in `templates/strutturato/` e `templates/piatto/` (vedi [scrittura.md](scrittura.md)). --- ## A. Layout strutturato (es. `KadeonCad_v2/docs`) ``` docs/ ├── 00-INDEX.md mappa, stato degli step, novità recenti in riquadri datati ├── 01-product/ COSA e PER CHI │ ├── VISION.md perché esiste, perimetro, non-obiettivi │ ├── GLOSSARY.md lessico condiviso (usare gli stessi termini nel codice) │ ├── PERSONAS_CASI_USO.md attori e casi d'uso end-to-end │ └── REQUIREMENTS.md REQ-- + DIF- (difetti noti) ├── 02-architecture/ COME È FATTO │ ├── ARCHITECTURE.md · C4_MODEL.md · DOMAIN_WORKFLOW.md (macchina a stati, invarianti) │ ├── DATA_MODEL.md (entità, relazioni, invarianti) · SECURITY.md · STORAGE.md │ └── .md (AI_GATEWAY, MESH_ENGINE, …) ├── 03-specs/ CONTRATTO PER L'IMPLEMENTAZIONE │ └── SPEC--.md ├── 04-api/ CONTRATTO ESTERNO │ ├── openapi.yaml FONTE DI VERITÀ dell'API │ └── API.md · WEBHOOKS.md · INTEGRATION_*.md ├── 05-data/ DATABASE.md (schema fisico) · MIGRATION_*.md · SEED_BOOTSTRAP.md ├── 06-devops/ INFRASTRUCTURE · KUBERNETES · CI_CD · ENVIRONMENTS · OBSERVABILITY · RUNBOOK · BACKUP_DR ├── 07-quality/ TEST_STRATEGY · ACCEPTANCE_CRITERIA · TRACEABILITY · liste di parità └── 08-project/ DECISIONS · ROADMAP · TODO · CHANGELOG · DEVELOPMENT_LOG · PROJECT_MEMORY ``` **Dove cercare cosa** | Domanda | Documento | |---|---| | Cosa deve fare il prodotto? | `01-product/REQUIREMENTS.md` | | Come deve farlo questa funzione? | `03-specs/SPEC-xxx` | | Che forma ha la rotta? | `04-api/openapi.yaml` (poi API.md per le convenzioni) | | Che colonne/vincoli ha la tabella? | `05-data/DATABASE.md`; entità logiche in `02-architecture/DATA_MODEL.md` | | Transizioni di stato ammesse? | `02-architecture/DOMAIN_WORKFLOW.md` | | Perché è così? | `08-project/DECISIONS.md` (`## D-xxx`), poi `DEVELOPMENT_LOG.md` | | È fatto? È verificato? | `08-project/TODO.md`, `07-quality/TRACEABILITY.md` | | Come si rilascia / variabili d'ambiente? | `06-devops/ENVIRONMENTS.md`, `KUBERNETES.md` | **Legenda stati usata:** ⬜ da scrivere/fare · 🟡 in corso/parziale · ✅ completo/verificato · 🔒 congelato (modifica solo con nuova D-xxx) · ⏸ sospeso. --- ## B. Layout piatto (es. `Kadeon/kadeon/src/docs`) ``` docs/ ├── PROJECT_MEMORY.md «leggere sempre prima di scrivere codice»; sintesi architettura, │ decisioni, componenti già creati, sessioni ├── ARCHITECTURE.md · API.md · DATABASE.md · AI_GATEWAY.md · OUTPUT_SCHEMA.md ├── .md proposta/specifica di un modulo (es. CAD_MODULE.md) ├── /DESIGN.md proposte con opzioni e «domande ancora aperte» (es. whatsapp/) ├── /openapi.yaml contratto del modulo ├── DECISIONS.md D-xxx con Stato · Contesto · Opzioni · Scelta · Motivazione ├── TODO.md T- raggruppati per tema, con Prio (P0–P3) e Stato ├── CHANGELOG.md · DEVELOPMENT_LOG.md ``` Differenze da tenere presenti: - Non ci sono `REQ-`/`SPEC-`: il ruolo della spec lo svolge il **documento di modulo** o la sezione di PROJECT_MEMORY/ARCHITECTURE; il cancello §3 si applica a quello. - Gli ID dei task hanno un prefisso tematico (`T-S01` sicurezza, `T-Q5`, `T-H01`…). - Stati in inglese: `pending` · `in_progress` · `done` · `blocked`; decisioni `accepted` · `proposed` · `superseded`. - Un `DESIGN.md` con «Domande ancora aperte» **non è approvato**: chiarire con l'utente. - PROJECT_MEMORY può essere lungo e datato: confronta la sua data con quelle di TODO e DECISIONS. --- ## C. Formati degli ID | ID | Forma | Dove nasce | Note | |---|---|---|---| | Requisito | `REQ--` (AREA 2–5 lettere) | REQUIREMENTS | Tipo **P/C/N**; mai rinumerato | | Difetto | `DIF-` | REQUIREMENTS (sezione difetti) | ogni DIF ha un REQ di tipo C e un test | | Specifica | `SPEC-` | file `03-specs/SPEC-nnn-slug.md` | riga `Stato:` in testa | | Task | `T-` o `T-`, suffissi `b`, `c` | sezione *Task* della spec e TODO | barrato se chiuso senza lavoro | | Decisione | `D-` | DECISIONS | *superata*, mai cancellata | | Criterio | lettera + numero (`D1`, `P12`, `M18`) | sezione *Criteri* della spec | ⚠ `D1` criterio ≠ `D-001` decisione | STS Lab Srl · Spec-Driven Reader