Skip to content

Commit 2fc8bfc

Browse files
committed
chore: preparazione 2o ciclo
1 parent 52a4475 commit 2fc8bfc

5 files changed

Lines changed: 508 additions & 2 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,5 @@ composer.phar
7575
last_error
7676
ops-health-dashboard.code-workspace
7777
0
78+
PILOT_CANDIDATE_REPORT.md
79+
CODE_REVIEW_v0.6.2.md
File renamed without changes.

docs/workflow/WORKFLOW_CORE.md

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
# WORKFLOW_CORE.md
2+
3+
> Stato: provvisorio, basato su evidenza del primo ciclo `webhook-json-encode-guard`.
4+
> Ambito: regole minime già validate da un change reale.
5+
> Non è una constitution completa. Non generalizza oltre ciò che è stato osservato.
6+
7+
## Principio guida
8+
9+
Il workflow non deve produrre consenso documentale.
10+
11+
Deve produrre punti verificabili di contatto con la verità di terra:
12+
13+
* test reali eseguiti;
14+
* RED reali osservati;
15+
* GREEN reali osservati;
16+
* artefatti reali letti;
17+
* working tree reale verificato;
18+
* contenuto effettivo dei file controllato dal maintainer.
19+
20+
Il consenso tra reviewer, AI o tool non è validazione.
21+
22+
Il maintainer resta il gate finale, soprattutto quando più reviewer concordano.
23+
24+
---
25+
26+
## Regola 1 — Analyze non autorizza implementazione
27+
28+
`analyze` verifica coerenza documentale.
29+
30+
Può dire:
31+
32+
* `READY FOR RED VALIDATION`
33+
34+
Non deve dire:
35+
36+
* `READY FOR IMPLEMENTATION`
37+
38+
Il codice produttivo può essere modificato solo dopo un RED reale eseguito e fallito per il motivo giusto.
39+
40+
### Perché questa regola esiste
41+
42+
Nel primo ciclo, un’ipotesi tecnica errata su `json_encode()` è stata corretta solo dal probe runtime.
43+
44+
Il gate utile non è stato il consenso tra reviewer.
45+
46+
Il gate utile è stato:
47+
48+
* eseguire il probe reale;
49+
* eseguire il RED reale;
50+
* osservare che falliva per `post() was called`, non per warning/exception.
51+
52+
---
53+
54+
## Regola 2 — RED per il motivo giusto
55+
56+
Un RED è valido solo se dimostra il rischio che il change vuole correggere.
57+
58+
Un RED non è valido se fallisce per:
59+
60+
* fixture errata;
61+
* harness;
62+
* warning inatteso;
63+
* mock sbagliato;
64+
* test mal costruito;
65+
* errore non collegato al bug;
66+
* assunzione non verificata.
67+
68+
Se il RED fallisce per il motivo sbagliato, ci si ferma e si correggono piano o task prima di toccare codice produttivo.
69+
70+
---
71+
72+
## Regola 3 — Merge-back nello stato corrente
73+
74+
Il closeout non è completo quando “i test sono verdi”.
75+
76+
Il closeout è completo solo quando il comportamento corrente e le decisioni ancora rilevanti sono nel layer attivo.
77+
78+
Il layer attivo può includere:
79+
80+
* spec canoniche;
81+
* decision record locali;
82+
* ADR, se la decisione è trasversale;
83+
* test versionati.
84+
85+
Gli artefatti di delta e piano diventano storici.
86+
87+
Non devono restare l’unico posto dove vive una decisione ancora rilevante.
88+
89+
### Perché questa regola esiste
90+
91+
Nel primo ciclo, la decisione “payload non serializzabile → fail-closed” rischiava di vivere solo nel delta/archive.
92+
93+
È stata resa attiva inserendo `DR-WEBHOOK-001` nella spec canonica del canale Webhook.
94+
95+
---
96+
97+
## Regola 4 — Spec canonica in linguaggio di stato
98+
99+
La spec canonica descrive il comportamento corrente garantito.
100+
101+
Deve dire cosa il sistema fa oggi.
102+
103+
Non deve raccontare il change.
104+
105+
Esempio corretto:
106+
107+
* Il canale rifiuta payload non serializzabili e non invia richieste HTTP.
108+
109+
Esempio non corretto:
110+
111+
* Abbiamo aggiunto un guard dopo `json_encode()`.
112+
113+
I dettagli implementativi possono stare nei test, nel codice o nell’archive, ma non devono sostituire il contratto osservabile.
114+
115+
---
116+
117+
## Regola 5 — Decisioni di prodotto nel layer attivo
118+
119+
Una decisione va mantenuta nel layer attivo quando:
120+
121+
* spiega un comportamento non ovvio;
122+
* registra un’alternativa scartata;
123+
* condiziona modifiche future;
124+
* è una scelta di prodotto mascherata da scelta tecnica.
125+
126+
Il delta può documentare come si è arrivati alla decisione.
127+
128+
La fonte attiva deve documentare perché quella decisione è ancora valida.
129+
130+
---
131+
132+
## Regola 6 — Archive storico, non fonte primaria
133+
134+
Dopo il closeout, gli artefatti del change possono essere archiviati in:
135+
136+
`changes/archive/YYYY-MM-DD-change-slug/`
137+
138+
L’archive conserva:
139+
140+
* current state;
141+
* change delta;
142+
* plan;
143+
* tasks;
144+
* analyze;
145+
* runtime probe;
146+
* closeout;
147+
* retrospettiva.
148+
149+
L’archive non sostituisce la spec canonica.
150+
151+
La fonte attiva deve essere indicata chiaramente.
152+
153+
---
154+
155+
## Regola 7 — Sicurezza degli artefatti
156+
157+
Non tutti gli artefatti utili al workflow devono vivere nel product tree.
158+
159+
Non vanno committati nel repo del prodotto:
160+
161+
* review dettagliate di vulnerabilità non ancora corrette;
162+
* report con file:riga di finding live;
163+
* candidate report che espongono percorsi d’attacco;
164+
* log o dump sensibili;
165+
* token, endpoint, configurazioni reali;
166+
* file generati fuori scope.
167+
168+
Questi materiali devono stare fuori dal repo di prodotto o in un archivio privato separato.
169+
170+
### Perché questa regola esiste
171+
172+
Nel primo ciclo, i report root di review contenevano vulnerabilità aperte e non dovevano essere versionati nel repo del plugin.
173+
174+
---
175+
176+
## Regola 8 — Staging esplicito
177+
178+
Per change sensibili o con file fuori scope nel working tree, non usare `git add .`.
179+
180+
Usare staging con path espliciti.
181+
182+
Prima del commit verificare:
183+
184+
* diff staged;
185+
* file esclusi;
186+
* lockfile fuori scope;
187+
* report sensibili.
188+
189+
---
190+
191+
## Retrospettiva minima obbligatoria
192+
193+
Ogni ciclo deve rispondere a una domanda:
194+
195+
Quale outcome è cambiato perché questa regola o questo artefatto esisteva?
196+
197+
Se la risposta è “non lo so”, quella regola non diventa governance.
198+
199+
Va nel backlog delle ipotesi.

0 commit comments

Comments
 (0)