repository: aggiunta di documentazione base
Continuous Integration / Quality Assurance (push) Canceled after 0s
Continuous Integration / Quality Assurance (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,514 @@
|
|||||||
|
# SMAVS Coding Standards
|
||||||
|
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Status:** Approved
|
||||||
|
**Project:** Spiral – SMAVS Composition Engine
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Scopo
|
||||||
|
|
||||||
|
Questo documento definisce gli standard ufficiali di sviluppo del framework **SMAVS (Su Misura Al Vostro Sistema)**.
|
||||||
|
|
||||||
|
Ogni file del progetto deve rispettare le regole qui descritte.
|
||||||
|
|
||||||
|
L'obiettivo è garantire:
|
||||||
|
|
||||||
|
- uniformità del codice;
|
||||||
|
- elevata leggibilità;
|
||||||
|
- semplicità di manutenzione;
|
||||||
|
- coerenza architetturale;
|
||||||
|
- qualità costante durante l'intero ciclo di vita del framework.
|
||||||
|
|
||||||
|
Le presenti regole costituiscono lo standard ufficiale di sviluppo del progetto.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Principi Fondamentali
|
||||||
|
|
||||||
|
Il codice deve sempre rispettare i seguenti principi.
|
||||||
|
|
||||||
|
## Leggibilità
|
||||||
|
|
||||||
|
Il codice viene letto molte più volte di quante venga scritto.
|
||||||
|
|
||||||
|
La leggibilità ha sempre priorità rispetto alla brevità.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Esplicitezza
|
||||||
|
|
||||||
|
L'esplicito è sempre preferibile all'implicito.
|
||||||
|
|
||||||
|
Il comportamento del codice deve risultare evidente senza richiedere interpretazioni.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Determinismo
|
||||||
|
|
||||||
|
Ogni componente deve produrre sempre lo stesso risultato a parità di input.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Immutabilità
|
||||||
|
|
||||||
|
I modelli del dominio sono immutabili.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Single Responsibility
|
||||||
|
|
||||||
|
Ogni classe possiede una singola responsabilità.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Composition over Inheritance
|
||||||
|
|
||||||
|
La composizione è sempre preferibile all'ereditarietà.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependency Inversion
|
||||||
|
|
||||||
|
Le dipendenze devono sempre puntare verso le astrazioni.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testabilità
|
||||||
|
|
||||||
|
Ogni componente deve poter essere testato in isolamento.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Convenzioni Generali
|
||||||
|
|
||||||
|
## Versione Python
|
||||||
|
|
||||||
|
Python 3.11+
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Formatter
|
||||||
|
|
||||||
|
Ruff Format
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Linter
|
||||||
|
|
||||||
|
Ruff
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Type Checker
|
||||||
|
|
||||||
|
MyPy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Pytest
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Coverage
|
||||||
|
|
||||||
|
Coverage minimo:
|
||||||
|
|
||||||
|
95%
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Convenzioni di Naming
|
||||||
|
|
||||||
|
## Package
|
||||||
|
|
||||||
|
snake_case
|
||||||
|
|
||||||
|
```
|
||||||
|
shared
|
||||||
|
value_objects
|
||||||
|
analysis
|
||||||
|
composition
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Moduli
|
||||||
|
|
||||||
|
snake_case
|
||||||
|
|
||||||
|
```
|
||||||
|
identifier.py
|
||||||
|
module_registry.py
|
||||||
|
composition_context.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Classi
|
||||||
|
|
||||||
|
PascalCase
|
||||||
|
|
||||||
|
```
|
||||||
|
Identifier
|
||||||
|
CompositionContext
|
||||||
|
ModuleRegistry
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Funzioni
|
||||||
|
|
||||||
|
snake_case
|
||||||
|
|
||||||
|
```
|
||||||
|
build_context()
|
||||||
|
resolve_modules()
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Variabili
|
||||||
|
|
||||||
|
snake_case
|
||||||
|
|
||||||
|
```
|
||||||
|
execution_plan
|
||||||
|
module_registry
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Costanti
|
||||||
|
|
||||||
|
UPPER_CASE
|
||||||
|
|
||||||
|
```
|
||||||
|
DEFAULT_PRIORITY
|
||||||
|
MAX_DEPTH
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Membri privati
|
||||||
|
|
||||||
|
Singolo underscore
|
||||||
|
|
||||||
|
```
|
||||||
|
_identifier
|
||||||
|
_registry
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. Organizzazione della Repository
|
||||||
|
|
||||||
|
Ogni package deve contenere esclusivamente componenti appartenenti alla propria responsabilità.
|
||||||
|
|
||||||
|
Non sono consentite dipendenze circolari.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Organizzazione dei File
|
||||||
|
|
||||||
|
Ogni file Python deve seguire rigorosamente il seguente ordine.
|
||||||
|
|
||||||
|
```
|
||||||
|
Module Docstring
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Future Imports
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Standard Library
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Third Party Imports
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Project Imports
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
__all__
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Constants
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Classi
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Funzioni
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Organizzazione degli Import
|
||||||
|
|
||||||
|
Gli import devono essere ordinati nel seguente modo.
|
||||||
|
|
||||||
|
```python
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from typing import Final
|
||||||
|
|
||||||
|
from smavs.shared...
|
||||||
|
```
|
||||||
|
|
||||||
|
Non sono consentiti import inutilizzati.
|
||||||
|
|
||||||
|
Non sono consentiti wildcard import.
|
||||||
|
|
||||||
|
```
|
||||||
|
from package import *
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Docstring
|
||||||
|
|
||||||
|
Ogni modulo pubblico deve possedere una docstring.
|
||||||
|
|
||||||
|
Ogni classe pubblica deve possedere una docstring.
|
||||||
|
|
||||||
|
Ogni metodo pubblico deve possedere una docstring quando il comportamento non è immediatamente evidente.
|
||||||
|
|
||||||
|
Lo stile adottato è **Google Style**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 9. Type Hinting
|
||||||
|
|
||||||
|
Tutte le funzioni devono utilizzare typing completo.
|
||||||
|
|
||||||
|
Consentito
|
||||||
|
|
||||||
|
```python
|
||||||
|
def build(name: str) -> Identifier:
|
||||||
|
```
|
||||||
|
|
||||||
|
Non consentito
|
||||||
|
|
||||||
|
```python
|
||||||
|
def build(name):
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Mai utilizzare
|
||||||
|
|
||||||
|
```
|
||||||
|
list
|
||||||
|
dict
|
||||||
|
tuple
|
||||||
|
set
|
||||||
|
```
|
||||||
|
|
||||||
|
Utilizzare sempre
|
||||||
|
|
||||||
|
```
|
||||||
|
list[str]
|
||||||
|
dict[str, str]
|
||||||
|
tuple[int, ...]
|
||||||
|
set[str]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 10. Dataclass
|
||||||
|
|
||||||
|
Tutti i Value Object devono essere dichiarati nel seguente modo.
|
||||||
|
|
||||||
|
```python
|
||||||
|
@dataclass(
|
||||||
|
frozen=True,
|
||||||
|
slots=True,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Le dataclass mutabili non sono consentite nel dominio.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 11. Protocol
|
||||||
|
|
||||||
|
Le interfacce del Core devono essere implementate tramite Protocol.
|
||||||
|
|
||||||
|
Non utilizzare classi astratte salvo casi eccezionali.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 12. Value Object
|
||||||
|
|
||||||
|
I Value Object devono:
|
||||||
|
|
||||||
|
- essere immutabili;
|
||||||
|
- essere hashable;
|
||||||
|
- essere confrontabili;
|
||||||
|
- non possedere identità.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 13. Entity
|
||||||
|
|
||||||
|
Le Entity devono:
|
||||||
|
|
||||||
|
- possedere un Identifier;
|
||||||
|
- mantenere la propria identità;
|
||||||
|
- incapsulare il proprio stato.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 14. Aggregate Root
|
||||||
|
|
||||||
|
Ogni Aggregate Root è responsabile della consistenza del proprio Aggregate.
|
||||||
|
|
||||||
|
Le modifiche interne devono essere sempre controllate dall'Aggregate Root.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 15. Domain Events
|
||||||
|
|
||||||
|
I Domain Event rappresentano fatti già accaduti.
|
||||||
|
|
||||||
|
Sono immutabili.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 16. Exceptions
|
||||||
|
|
||||||
|
È vietato utilizzare
|
||||||
|
|
||||||
|
```python
|
||||||
|
raise Exception(...)
|
||||||
|
```
|
||||||
|
|
||||||
|
Ogni errore deve derivare da:
|
||||||
|
|
||||||
|
```
|
||||||
|
SMAVSError
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 17. Logging
|
||||||
|
|
||||||
|
Utilizzare esclusivamente logging strutturato.
|
||||||
|
|
||||||
|
Non utilizzare print().
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 18. Testing
|
||||||
|
|
||||||
|
Ogni componente deve possedere test unitari.
|
||||||
|
|
||||||
|
La struttura deve seguire il pattern:
|
||||||
|
|
||||||
|
```
|
||||||
|
Arrange
|
||||||
|
|
||||||
|
Act
|
||||||
|
|
||||||
|
Assert
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Ogni test deve verificare un solo comportamento.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 19. Commenti
|
||||||
|
|
||||||
|
I commenti devono spiegare il perché.
|
||||||
|
|
||||||
|
Mai spiegare il cosa.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 20. Refactoring
|
||||||
|
|
||||||
|
Prima di effettuare un refactoring verificare:
|
||||||
|
|
||||||
|
- retrocompatibilità;
|
||||||
|
- copertura dei test;
|
||||||
|
- conformità alla SAS.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 21. Checklist prima del Commit
|
||||||
|
|
||||||
|
Verificare sempre:
|
||||||
|
|
||||||
|
- Ruff
|
||||||
|
- MyPy
|
||||||
|
- Pytest
|
||||||
|
- Coverage
|
||||||
|
- Pre-Commit
|
||||||
|
|
||||||
|
Tutti i controlli devono risultare verdi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 22. Checklist prima della Pull Request
|
||||||
|
|
||||||
|
La Pull Request deve:
|
||||||
|
|
||||||
|
- compilare correttamente;
|
||||||
|
- superare la CI;
|
||||||
|
- mantenere il coverage;
|
||||||
|
- rispettare la SAS;
|
||||||
|
- rispettare la Roadmap.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 23. Regole Fondamentali
|
||||||
|
|
||||||
|
Le seguenti regole sono considerate invarianti del progetto.
|
||||||
|
|
||||||
|
1. Il codice deve essere leggibile prima di essere intelligente.
|
||||||
|
|
||||||
|
2. L'esplicito è preferibile all'implicito.
|
||||||
|
|
||||||
|
3. Ogni classe possiede una sola responsabilità.
|
||||||
|
|
||||||
|
4. Il dominio non conosce l'infrastruttura.
|
||||||
|
|
||||||
|
5. Nessuna dipendenza circolare.
|
||||||
|
|
||||||
|
6. Nessun TODO nel codice.
|
||||||
|
|
||||||
|
7. Nessun codice morto.
|
||||||
|
|
||||||
|
8. Nessun wildcard import.
|
||||||
|
|
||||||
|
9. Nessuna eccezione generica.
|
||||||
|
|
||||||
|
10. Ogni nuova funzionalità deve essere testabile.
|
||||||
|
|
||||||
|
11. Ogni modifica deve rispettare la Software Architecture Specification.
|
||||||
|
|
||||||
|
12. Ogni implementazione deve seguire rigorosamente l'Implementation Roadmap.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 24. Stato della Specifica
|
||||||
|
|
||||||
|
Questo documento costituisce lo standard ufficiale di sviluppo del framework SMAVS.
|
||||||
|
|
||||||
|
Ogni nuovo contributo al progetto deve rispettare integralmente le regole qui definite.
|
||||||
@@ -0,0 +1,225 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Status:** Approved
|
||||||
|
**Project:** Spiral – SMAVS Composition Engine
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Scopo
|
||||||
|
|
||||||
|
Questo documento definisce le regole ufficiali per contribuire allo sviluppo del framework **SMAVS (Su Misura Al Vostro Sistema)**.
|
||||||
|
|
||||||
|
L'obiettivo è garantire che ogni modifica:
|
||||||
|
|
||||||
|
- sia coerente con l'architettura;
|
||||||
|
- rispetti gli standard di qualità;
|
||||||
|
- mantenga la stabilità del framework;
|
||||||
|
- sia facilmente revisionabile.
|
||||||
|
|
||||||
|
Ogni contributo deve rispettare integralmente quanto definito nella documentazione ufficiale del progetto.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Documentazione di Riferimento
|
||||||
|
|
||||||
|
Prima di contribuire è obbligatorio conoscere la seguente documentazione.
|
||||||
|
|
||||||
|
Ordine di priorità:
|
||||||
|
|
||||||
|
1. Software Architecture Specification (SAS)
|
||||||
|
2. Implementation Roadmap
|
||||||
|
3. Coding Standards
|
||||||
|
4. Git Workflow
|
||||||
|
5. Development Environment
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Principi
|
||||||
|
|
||||||
|
Ogni contributo deve rispettare i principi fondamentali del framework.
|
||||||
|
|
||||||
|
- Domain-Driven Design
|
||||||
|
- Clean Architecture
|
||||||
|
- SOLID
|
||||||
|
- Composition over Inheritance
|
||||||
|
- Dependency Inversion
|
||||||
|
- Determinismo
|
||||||
|
- Immutabilità
|
||||||
|
- Testabilità
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Processo di Sviluppo
|
||||||
|
|
||||||
|
Ogni attività deve seguire il seguente flusso.
|
||||||
|
|
||||||
|
```
|
||||||
|
Roadmap
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Implementazione
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Test
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Pre-Commit
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Commit
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Push
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Continuous Integration
|
||||||
|
```
|
||||||
|
|
||||||
|
Non è consentito modificare componenti appartenenti a Sprint futuri.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. Prima di Scrivere Codice
|
||||||
|
|
||||||
|
Prima di iniziare qualsiasi implementazione verificare:
|
||||||
|
|
||||||
|
- la fase della Roadmap;
|
||||||
|
- le dipendenze dello Sprint;
|
||||||
|
- la Software Architecture Specification.
|
||||||
|
|
||||||
|
Se una modifica richiede una variazione architetturale:
|
||||||
|
|
||||||
|
- interrompere l'implementazione;
|
||||||
|
- documentare la motivazione;
|
||||||
|
- attendere approvazione.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Qualità del Codice
|
||||||
|
|
||||||
|
Ogni nuovo file deve rispettare i Coding Standards.
|
||||||
|
|
||||||
|
In particolare:
|
||||||
|
|
||||||
|
- typing completo;
|
||||||
|
- docstring;
|
||||||
|
- responsabilità singola;
|
||||||
|
- assenza di duplicazione;
|
||||||
|
- nessun codice morto;
|
||||||
|
- nessun TODO.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Test
|
||||||
|
|
||||||
|
Ogni nuova funzionalità deve essere accompagnata da test unitari.
|
||||||
|
|
||||||
|
Ogni test deve verificare un solo comportamento.
|
||||||
|
|
||||||
|
La copertura del progetto non deve diminuire.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Commit
|
||||||
|
|
||||||
|
Ogni commit deve essere:
|
||||||
|
|
||||||
|
- atomico;
|
||||||
|
- descrittivo;
|
||||||
|
- coerente con una singola modifica logica.
|
||||||
|
|
||||||
|
Formato ufficiale:
|
||||||
|
|
||||||
|
```
|
||||||
|
<ambito>: <azione>
|
||||||
|
```
|
||||||
|
|
||||||
|
Esempi.
|
||||||
|
|
||||||
|
```
|
||||||
|
shared: implementa identifier
|
||||||
|
analysis: implementa validator
|
||||||
|
repository: aggiorna readme
|
||||||
|
tests: aggiunge test identifier
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 9. Continuous Integration
|
||||||
|
|
||||||
|
Ogni modifica deve superare:
|
||||||
|
|
||||||
|
- Ruff
|
||||||
|
- MyPy
|
||||||
|
- Pytest
|
||||||
|
- Coverage
|
||||||
|
|
||||||
|
Non sono consentiti merge con pipeline fallita.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 10. Pull Request
|
||||||
|
|
||||||
|
Ogni Pull Request deve:
|
||||||
|
|
||||||
|
- avere uno scopo chiaro;
|
||||||
|
- modificare una sola funzionalità;
|
||||||
|
- rispettare la Roadmap;
|
||||||
|
- rispettare la SAS.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 11. Documentazione
|
||||||
|
|
||||||
|
Ogni modifica significativa deve aggiornare la documentazione corrispondente.
|
||||||
|
|
||||||
|
La documentazione è parte integrante del framework.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 12. Modifiche Architetturali
|
||||||
|
|
||||||
|
Non è consentito:
|
||||||
|
|
||||||
|
- modificare la SAS;
|
||||||
|
- modificare la struttura della repository;
|
||||||
|
- introdurre nuovi package;
|
||||||
|
- introdurre nuove dipendenze;
|
||||||
|
- modificare responsabilità dei layer.
|
||||||
|
|
||||||
|
Qualunque modifica architetturale richiede una nuova RFC.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 13. Regole Fondamentali
|
||||||
|
|
||||||
|
Le seguenti regole sono considerate invarianti del progetto.
|
||||||
|
|
||||||
|
1. La Software Architecture Specification è la fonte autorevole dell'architettura.
|
||||||
|
|
||||||
|
2. La Roadmap è la fonte autorevole dello sviluppo.
|
||||||
|
|
||||||
|
3. I Coding Standards sono la fonte autorevole dello stile del codice.
|
||||||
|
|
||||||
|
4. Nessun contributo può violare uno dei documenti ufficiali.
|
||||||
|
|
||||||
|
5. Ogni modifica deve mantenere il framework deterministico.
|
||||||
|
|
||||||
|
6. Ogni nuova funzionalità deve essere testabile.
|
||||||
|
|
||||||
|
7. Ogni contributo deve migliorare la qualità complessiva del progetto.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 14. Stato della Specifica
|
||||||
|
|
||||||
|
Questo documento definisce il processo ufficiale di contribuzione al framework SMAVS.
|
||||||
|
|
||||||
|
Ogni contributo futuro dovrà rispettare integralmente le regole qui descritte.
|
||||||
@@ -0,0 +1,398 @@
|
|||||||
|
# SMAVS Development Environment
|
||||||
|
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Status:** Approved
|
||||||
|
**Project:** Spiral – SMAVS Composition Engine
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Scopo
|
||||||
|
|
||||||
|
Questo documento definisce l'ambiente di sviluppo ufficiale del framework **SMAVS (Su Misura Al Vostro Sistema)**.
|
||||||
|
|
||||||
|
L'obiettivo è garantire che tutti gli sviluppatori utilizzino un ambiente coerente, riproducibile e conforme agli standard del progetto.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Requisiti di Sistema
|
||||||
|
|
||||||
|
## Sistema Operativo
|
||||||
|
|
||||||
|
Sistemi supportati:
|
||||||
|
|
||||||
|
- Windows 11
|
||||||
|
- Linux
|
||||||
|
- macOS
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
Versione minima supportata
|
||||||
|
|
||||||
|
```
|
||||||
|
Python 3.11
|
||||||
|
```
|
||||||
|
|
||||||
|
Versioni consigliate
|
||||||
|
|
||||||
|
```
|
||||||
|
Python 3.11.x
|
||||||
|
Python 3.12.x
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Git
|
||||||
|
|
||||||
|
Versione minima
|
||||||
|
|
||||||
|
```
|
||||||
|
Git 2.40+
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Repository
|
||||||
|
|
||||||
|
Clonare il repository ufficiale.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://gitea.netbird.smavs.duckdns.org/SMAVS/smavs.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Entrare nella directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd smavs
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Ambiente Virtuale
|
||||||
|
|
||||||
|
Ogni sviluppo deve essere effettuato all'interno di un ambiente virtuale dedicato.
|
||||||
|
|
||||||
|
Creazione
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m venv .venv
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.\.venv\Scripts\Activate.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Linux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## macOS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. Installazione Dipendenze
|
||||||
|
|
||||||
|
Installazione del progetto in modalità editable.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install -e ".[dev]"
|
||||||
|
```
|
||||||
|
|
||||||
|
Le dipendenze di sviluppo comprendono:
|
||||||
|
|
||||||
|
- Ruff
|
||||||
|
- MyPy
|
||||||
|
- Pytest
|
||||||
|
- Coverage
|
||||||
|
- MkDocs
|
||||||
|
- MkDocs Material
|
||||||
|
- Pre-Commit
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Configurazione Git
|
||||||
|
|
||||||
|
Configurare il proprio utente Git.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git config --global user.name "<Nome>"
|
||||||
|
git config --global user.email "<Email>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Impostare il branch predefinito.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git config --global init.defaultBranch main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Pre-Commit
|
||||||
|
|
||||||
|
Installazione degli hook.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pre_commit install
|
||||||
|
```
|
||||||
|
|
||||||
|
Verifica manuale.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pre_commit run --all-files
|
||||||
|
```
|
||||||
|
|
||||||
|
Tutti gli hook devono risultare verdi prima di ogni commit.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Ruff
|
||||||
|
|
||||||
|
Verifica del codice.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m ruff check .
|
||||||
|
```
|
||||||
|
|
||||||
|
Correzione automatica.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m ruff check . --fix
|
||||||
|
```
|
||||||
|
|
||||||
|
Formatter.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m ruff format .
|
||||||
|
```
|
||||||
|
|
||||||
|
Verifica formatter.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m ruff format --check .
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 9. MyPy
|
||||||
|
|
||||||
|
Verifica del typing.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m mypy .
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 10. Pytest
|
||||||
|
|
||||||
|
Esecuzione dei test.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pytest
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 11. Coverage
|
||||||
|
|
||||||
|
Esecuzione della coverage.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m coverage run -m pytest
|
||||||
|
python -m coverage report
|
||||||
|
```
|
||||||
|
|
||||||
|
Generazione del report HTML.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m coverage html
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 12. MkDocs
|
||||||
|
|
||||||
|
Avvio del server locale.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdocs serve
|
||||||
|
```
|
||||||
|
|
||||||
|
Generazione della documentazione.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdocs build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 13. Workflow Quotidiano
|
||||||
|
|
||||||
|
Ogni attività di sviluppo deve seguire il seguente flusso.
|
||||||
|
|
||||||
|
```
|
||||||
|
git pull
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Sviluppo
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
git status
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
git add .
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
python -m pre_commit run --all-files
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
git commit
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 14. Continuous Integration
|
||||||
|
|
||||||
|
Ogni push attiva automaticamente la pipeline CI.
|
||||||
|
|
||||||
|
La pipeline verifica:
|
||||||
|
|
||||||
|
- Ruff
|
||||||
|
- MyPy
|
||||||
|
- Pytest
|
||||||
|
- Coverage
|
||||||
|
|
||||||
|
Il branch `main` deve rimanere sempre stabile.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 15. Visual Studio Code
|
||||||
|
|
||||||
|
Estensioni consigliate.
|
||||||
|
|
||||||
|
- Python
|
||||||
|
- Pylance
|
||||||
|
- Ruff
|
||||||
|
- EditorConfig
|
||||||
|
- GitLens
|
||||||
|
- Markdown All in One
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Impostazioni consigliate.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.ruff": "explicit",
|
||||||
|
"source.organizeImports.ruff": "explicit"
|
||||||
|
},
|
||||||
|
"files.eol": "\n",
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
"files.trimTrailingWhitespace": true,
|
||||||
|
"python.analysis.typeCheckingMode": "strict"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 16. Directory Generate Automaticamente
|
||||||
|
|
||||||
|
Le seguenti directory non devono essere versionate.
|
||||||
|
|
||||||
|
```
|
||||||
|
.venv/
|
||||||
|
__pycache__/
|
||||||
|
.pytest_cache/
|
||||||
|
.ruff_cache/
|
||||||
|
.mypy_cache/
|
||||||
|
htmlcov/
|
||||||
|
site/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 17. Aggiornamento Dipendenze
|
||||||
|
|
||||||
|
Aggiornare periodicamente le dipendenze.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
|
||||||
|
python -m pip install -e ".[dev]"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 18. Risoluzione Problemi
|
||||||
|
|
||||||
|
Ricreare completamente l'ambiente virtuale.
|
||||||
|
|
||||||
|
Windows
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Remove-Item -Recurse -Force .venv
|
||||||
|
python -m venv .venv
|
||||||
|
.\.venv\Scripts\Activate.ps1
|
||||||
|
python -m pip install -e ".[dev]"
|
||||||
|
```
|
||||||
|
|
||||||
|
Linux / macOS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm -rf .venv
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
python -m pip install -e ".[dev]"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 19. Regole Fondamentali
|
||||||
|
|
||||||
|
1. Utilizzare sempre un ambiente virtuale dedicato.
|
||||||
|
|
||||||
|
2. Installare sempre le dipendenze tramite il gruppo `dev`.
|
||||||
|
|
||||||
|
3. Utilizzare sempre `python -m` per eseguire gli strumenti.
|
||||||
|
|
||||||
|
4. Eseguire sempre `pre-commit` prima di ogni commit.
|
||||||
|
|
||||||
|
5. Non effettuare push con hook non superati.
|
||||||
|
|
||||||
|
6. Non modificare manualmente la configurazione degli strumenti senza approvazione.
|
||||||
|
|
||||||
|
7. Mantenere sincronizzato l'ambiente locale con il repository.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 20. Stato della Specifica
|
||||||
|
|
||||||
|
Questo documento costituisce la specifica ufficiale dell'ambiente di sviluppo del framework SMAVS.
|
||||||
|
|
||||||
|
Ogni ambiente di sviluppo deve essere configurato secondo le regole qui definite.
|
||||||
@@ -0,0 +1,380 @@
|
|||||||
|
# SMAVS Git Workflow
|
||||||
|
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Status:** Approved
|
||||||
|
**Project:** Spiral – SMAVS Composition Engine
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Scopo
|
||||||
|
|
||||||
|
Questo documento definisce il workflow Git ufficiale del framework **SMAVS (Su Misura Al Vostro Sistema)**.
|
||||||
|
|
||||||
|
L'obiettivo è garantire:
|
||||||
|
|
||||||
|
- una cronologia pulita;
|
||||||
|
- commit consistenti;
|
||||||
|
- sviluppo incrementale;
|
||||||
|
- tracciabilità delle modifiche;
|
||||||
|
- integrazione continua affidabile.
|
||||||
|
|
||||||
|
Tutti i contributi al progetto devono rispettare le regole definite nel presente documento.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Branch Principali
|
||||||
|
|
||||||
|
Il repository utilizza i seguenti branch.
|
||||||
|
|
||||||
|
## main
|
||||||
|
|
||||||
|
Contiene esclusivamente codice stabile.
|
||||||
|
|
||||||
|
Ogni commit presente su `main` deve:
|
||||||
|
|
||||||
|
- compilare;
|
||||||
|
- superare tutti i test;
|
||||||
|
- rispettare la Software Architecture Specification;
|
||||||
|
- rispettare la Implementation Roadmap.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Workflow di Sviluppo
|
||||||
|
|
||||||
|
Ogni nuova attività deve seguire il seguente flusso.
|
||||||
|
|
||||||
|
```
|
||||||
|
Aggiornamento repository
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Sviluppo
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
git status
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
git add
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
pre-commit
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Commit
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Push
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Continuous Integration
|
||||||
|
|
||||||
|
↓
|
||||||
|
|
||||||
|
Merge
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Ciclo di Sviluppo
|
||||||
|
|
||||||
|
Prima di iniziare una nuova attività:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
Durante lo sviluppo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git status
|
||||||
|
```
|
||||||
|
|
||||||
|
Aggiungere le modifiche:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
```
|
||||||
|
|
||||||
|
Verificare il codice:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pre_commit run --all-files
|
||||||
|
```
|
||||||
|
|
||||||
|
Creare il commit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git commit -m "<ambito>: <azione>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Pubblicare le modifiche:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. Convenzione dei Commit
|
||||||
|
|
||||||
|
Ogni commit deve seguire il formato:
|
||||||
|
|
||||||
|
```
|
||||||
|
<ambito>: <azione>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Repository
|
||||||
|
|
||||||
|
```
|
||||||
|
repository: inizializza struttura
|
||||||
|
repository: aggiorna readme
|
||||||
|
repository: aggiunge licenza
|
||||||
|
repository: configura gitignore
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tooling
|
||||||
|
|
||||||
|
```
|
||||||
|
tooling: configura ruff
|
||||||
|
tooling: configura mypy
|
||||||
|
tooling: configura pytest
|
||||||
|
tooling: configura mkdocs
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Continuous Integration
|
||||||
|
|
||||||
|
```
|
||||||
|
ci: configura pipeline
|
||||||
|
ci: aggiorna workflow
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Shared Kernel
|
||||||
|
|
||||||
|
```
|
||||||
|
shared: implementa identifier
|
||||||
|
shared: implementa version
|
||||||
|
shared: implementa timestamp
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contracts
|
||||||
|
|
||||||
|
```
|
||||||
|
contracts: aggiunge compose request
|
||||||
|
contracts: implementa execution plan
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Models
|
||||||
|
|
||||||
|
```
|
||||||
|
models: implementa project
|
||||||
|
models: implementa branding
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Protocols
|
||||||
|
|
||||||
|
```
|
||||||
|
protocols: implementa analyzer
|
||||||
|
protocols: implementa resolver
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Analysis
|
||||||
|
|
||||||
|
```
|
||||||
|
analysis: implementa validator
|
||||||
|
analysis: implementa mapper
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Knowledge
|
||||||
|
|
||||||
|
```
|
||||||
|
knowledge: implementa registry
|
||||||
|
knowledge: implementa planner
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Composition
|
||||||
|
|
||||||
|
```
|
||||||
|
composition: implementa renderer
|
||||||
|
composition: implementa assembler
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Engine
|
||||||
|
|
||||||
|
```
|
||||||
|
engine: implementa pipeline
|
||||||
|
engine: implementa orchestrator
|
||||||
|
engine: implementa smavs engine
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Application
|
||||||
|
|
||||||
|
```
|
||||||
|
application: implementa compose use case
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
```
|
||||||
|
api: aggiunge router compose
|
||||||
|
api: implementa dto artifact
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Modules
|
||||||
|
|
||||||
|
```
|
||||||
|
modules: aggiunge hero
|
||||||
|
modules: aggiunge navbar
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
|
||||||
|
```
|
||||||
|
tests: aggiunge test identifier
|
||||||
|
tests: aumenta coverage
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
```
|
||||||
|
docs: aggiorna architettura
|
||||||
|
docs: aggiunge guida moduli
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Regole per i Commit
|
||||||
|
|
||||||
|
Ogni commit deve:
|
||||||
|
|
||||||
|
- rappresentare una singola modifica logica;
|
||||||
|
- essere atomico;
|
||||||
|
- compilare correttamente;
|
||||||
|
- superare tutti i controlli del pre-commit.
|
||||||
|
|
||||||
|
Non sono consentiti commit contenenti codice non funzionante.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Pre-Commit
|
||||||
|
|
||||||
|
Prima di ogni commit deve essere eseguito:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pre_commit run --all-files
|
||||||
|
```
|
||||||
|
|
||||||
|
Tutti gli hook devono risultare verdi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Continuous Integration
|
||||||
|
|
||||||
|
Ogni push attiva automaticamente la pipeline di Continuous Integration.
|
||||||
|
|
||||||
|
La pipeline verifica:
|
||||||
|
|
||||||
|
- Ruff
|
||||||
|
- MyPy
|
||||||
|
- Pytest
|
||||||
|
- Coverage
|
||||||
|
|
||||||
|
Il branch `main` deve rimanere sempre stabile.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 9. Pull Request
|
||||||
|
|
||||||
|
Ogni Pull Request deve:
|
||||||
|
|
||||||
|
- superare la CI;
|
||||||
|
- rispettare i Coding Standards;
|
||||||
|
- rispettare la SAS;
|
||||||
|
- rispettare la Roadmap.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 10. Versioning
|
||||||
|
|
||||||
|
Il progetto utilizza Semantic Versioning.
|
||||||
|
|
||||||
|
```
|
||||||
|
MAJOR.MINOR.PATCH
|
||||||
|
```
|
||||||
|
|
||||||
|
Esempi
|
||||||
|
|
||||||
|
```
|
||||||
|
0.1.0
|
||||||
|
0.2.0
|
||||||
|
1.0.0
|
||||||
|
1.1.0
|
||||||
|
1.1.1
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 11. Regole Fondamentali
|
||||||
|
|
||||||
|
Le seguenti regole sono considerate invarianti del workflow.
|
||||||
|
|
||||||
|
1. Il branch `main` deve rimanere sempre stabile.
|
||||||
|
|
||||||
|
2. Ogni commit deve rappresentare una singola modifica logica.
|
||||||
|
|
||||||
|
3. Tutti i commit devono rispettare la convenzione ufficiale.
|
||||||
|
|
||||||
|
4. Nessun commit deve aggirare il pre-commit.
|
||||||
|
|
||||||
|
5. Nessun push deve ignorare la Continuous Integration.
|
||||||
|
|
||||||
|
6. Ogni modifica deve rispettare la Software Architecture Specification.
|
||||||
|
|
||||||
|
7. Ogni modifica deve rispettare la Implementation Roadmap.
|
||||||
|
|
||||||
|
8. Ogni modifica deve rispettare i Coding Standards.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 12. Stato della Specifica
|
||||||
|
|
||||||
|
Questo documento costituisce il workflow Git ufficiale del framework SMAVS.
|
||||||
|
|
||||||
|
Ogni contributo al progetto deve rispettare integralmente le regole qui definite.
|
||||||
Reference in New Issue
Block a user