Showing 12 changed files with 250 additions and 185 deletions
+38 -182
.doc/development-log.md
@@ -1,184 +1,40 @@
1 1
 # Development Log
2 2
 
3
-Acest fișier păstrează deciziile care schimbă scopul aplicației, regulile de operare sau modelul de deployment. Nu înlocuiește git history; explică de ce au apărut schimbările mari.
4
-
5
-## 2026-06-06 - Repository and Deployment Split
6
-
7
-Decizie: codul aplicației se dezvoltă local și se publică în GitPrep. Jumper rămâne runtime/deploy target.
8
-
9
-Locații:
10
-
11
-- checkout local: `/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/LocalAuthority`
12
-- GitPrep canonical remote: `git@192.168.2.102:repositories/bogdan/LocalAuthority.git`
13
-- GitPrep web: `http://192.168.2.102:3000/bogdan/LocalAuthority`
14
-- runtime jumper: `/usr/local/xdev-host-manager`
15
-
16
-Motiv:
17
-
18
-- editarea directă pe jumper amesteca dezvoltarea cu runtime-ul
19
-- aplicația are acum scope mai mare și va continua să evolueze
20
-- avem nevoie de istoric, review și deploy controlat
21
-
22
-Regulă:
23
-
24
-- `scripts/deploy_to_jumper.sh` publică aplicația pe jumper
25
-- `config/` nu se copiază implicit
26
-- `config/` se copiază doar cu `--include-config`, la cerere explicită
27
-
28
-## 2026-06-06 - Scope Expanded Beyond Host Registry
29
-
30
-Aplicația a pornit ca manager pentru registrul de hosturi, dar scope-ul curent include:
31
-
32
-- registry de hosturi Madagascar
33
-- manifest DNS local pentru jumper și as01
34
-- Work Orders pentru schimbări operaționale confirmabile
35
-- autoritate locală de certificate pentru hosturi
36
-- exporturi pentru servicii consumatoare, preferabil prin git
37
-
38
-Numele de produs a devenit `Madagascar Local Authority`.
39
-
40
-Numele tehnice rămân stabile pentru compatibilitate:
41
-
42
-- service systemd: `host-manager`
43
-- user Unix: `host-manager`
44
-- runtime path: `/usr/local/xdev-host-manager`
45
-- environment file: `/etc/xdev/host-manager.env`
46
-
47
-## 2026-06-06 - Work Orders Before Destructive Registry Changes
48
-
49
-Decizie: numele cu impact operațional nu se șterg direct din UI.
50
-
51
-Exemplu inițial:
52
-
53
-- `pmx.*.madagascar.xdev.ro`
54
-- `pbs.*.madagascar.xdev.ro`
55
-
56
-Aceste nume au fost create pentru vhosturi nginx cu certificate Let's Encrypt. Odată cu CA-ul local, intenția este retragerea lor, dar eliminarea din registry se face doar după:
57
-
58
-- inventarierea vhosturilor
59
-- crearea și instalarea certificatelor locale
60
-- eliminarea configurațiilor legacy
61
-- testarea accesului prin numele canonice
62
-- verificarea că numele nu mai sunt folosite
63
-- aprobarea finală a operatorului
64
-
65
-Confirmarea unui WO este blocată dacă checklist-ul nu este complet.
66
-
67
-## 2026-06-06 - Local DNS Resolution Rules
68
-
69
-Regulă: local nu se folosește wildcard pentru `*.madagascar.xdev.ro`.
70
-
71
-Doar numele cunoscute din manifestul local trebuie să se rezolve intern. Numele necunoscute trebuie să întoarcă `NXDOMAIN`, chiar dacă DNS public poate avea wildcard către IP-ul public.
72
-
73
-Resolverele interne sunt:
74
-
75
-- jumper: `192.168.2.100`
76
-- as01: `192.168.2.2`
77
-
78
-Sync-ul rămâne explicit:
79
-
80
-```bash
81
-./scripts/sync_local_hosts.sh --apply --verify
82
-```
83
-
84
-## 2026-06-06 - Dependency Policy
85
-
86
-Regulă: nu se instalează npm, pip sau CPAN direct pe hosturi.
87
-
88
-Acceptat:
89
-
90
-- pachete din distribuție, când sunt necesare
91
-- Perl din distribuție
92
-- module Perl core/distribution
93
-
94
-CPAN se folosește doar dacă pachetul ajunge prin repo-ul local auditat.
95
-
96
-Pachete de sistem instalate în timpul evoluției:
97
-
98
-- `ripgrep` pe jumper
99
-- `rsync` pe jumper
100
-- `sqlite` pe jumper
101
-- `perl-DBD-SQLite` pe jumper
102
-- `sqlite3` pe mazeri/GitPrep
103
-
104
-## 2026-06-06 - OTP Login Keeps a Password-Manager-Friendly Form Shape
105
-
106
-Observație: unele password managere și autofill-uri mobile nu inițiau corect pe login-ul Madagascar Local Authority, deși completarea mergea pe o pagină similară din PBX management.
107
-
108
-Diferențe relevante observate pe pagina care funcționa:
109
-
110
-- formular clasic `method="post"`
111
-- câmp de cont cu `autocomplete="username"`
112
-- câmp unic pentru codul OTP, separat de cele 6 căsuțe vizuale
113
-
114
-Decizie:
115
-
116
-- UI-ul rămâne cu 6 căsuțe OTP
117
-- formularul include și câmpuri ajutătoare off-screen pentru `username` și OTP agregat
118
-- JS sincronizează codul complet între câmpul agregat și cele 6 căsuțe
119
-- formularul păstrează `autocomplete="on"` la nivel de form, ca hint-urile specifice de pe câmpuri să nu fie neutralizate
120
-
121
-Scop:
122
-
123
-- compatibilitate mai bună cu password managere și autofill mobil
124
-- fără a complica interfața vizibilă
125
-
126
-## 2026-06-08 - Commit and Push Is the Development Contract
127
-
128
-Observație: schimbările lăsate mult timp ca dirty working tree se pierd ușor în timpul deploy-urilor, reseturilor și schimbărilor de context. Pentru development, unitatea de lucru trebuie să fie commit-ul local, nu un set de fișiere uitate în stare necomisă.
129
-
130
-Decizie:
131
-
132
-- se lucrează cu commit-uri locale mici și coerente
133
-- pentru test live, commit-ul se împinge în checkout-ul runtime de pe jumper cu `git push jumper-runtime HEAD:main`
134
-- pentru arhivare și istoric canonic, același commit se împinge în GitPrep cu `git push origin main`
135
-- jumper rămâne target de test live, nu locul principal de editare
136
-- `scripts/deploy_to_jumper.sh` rămâne unealtă explicită de rsync deploy, dar nu înlocuiește disciplina commit/push
137
-- `BUILD` rămâne sursa vizibilă pentru ce versiune rulează
138
-
139
-Scop:
140
-
141
-- niciun front de lucru să nu rămână doar în fișiere dirty locale sau runtime
142
-- testul live pe jumper să fie legat de un commit identificabil
143
-- GitPrep să păstreze istoria canonică pentru arhivare și recuperare
144
-- badge-ul de build și meta tag-ul `xdev-build` devin verificarea rapidă pentru ce rulează
145
-
146
-## 2026-06-09 - SQLite Runtime Source of Truth
147
-
148
-Observație: editările de hosts făcute în aplicația live puteau rămâne în working tree-ul de pe jumper sau puteau fi suprascrise/confuzionate la push-ul de cod. Modelul vechi descria simultan `config/hosts.yaml` ca registry editabil în git și ca dată operațională runtime, ceea ce nu era o sursă de adevăr clară.
149
-
150
-Decizie:
151
-
152
-- `var/host-manager.sqlite` devine sursa de adevăr runtime pentru registry și Work Orders
153
-- `config/hosts.yaml` și `config/work-orders.yaml` rămân seed/snapshot/export compatibility files
154
-- la prima pornire, aplicația seed-uiește documentele lipsă din YAML în SQLite
155
-- download-urile `/download/hosts.yaml`, `/download/local-hosts.tsv` și `/download/monitoring.json` sunt randate din SQLite
156
-- `config/local-hosts.tsv` rămâne manifest generat explicit pentru sync-ul DNS local
157
-- push-urile de cod către jumper nu trebuie să înlocuiască baza runtime din `var/`
158
-
159
-Scop:
160
-
161
-- editările făcute în UI să nu se piardă la deploy/push de cod
162
-- să existe o singură autoritate runtime
163
-- YAML/TSV să rămână utile pentru export, review și bootstrap fără să fie storage-ul live
164
-
165
-## 2026-06-09 - Relational Runtime Schema
166
-
167
-Observație: primul pas SQLite mutase sursa de adevăr din git în baza de date, dar o păstra ca document YAML într-o tabelă generică. Asta rezolva pierderea editărilor la push, dar nu oferea o bază de date operațională reală.
168
-
169
-Decizie:
170
-
171
-- `hosts.fqdn` devine cheia reală pentru hosturi, ca numele complete să evite coliziuni între domenii
172
-- `legacy_id` rămâne doar compatibilitate pentru UI/API-ul curent
173
-- aliasurile sunt păstrate în `host_aliases`, inclusiv după retragere
174
-- vhosturile sunt în `vhosts` și pot fi mutate prin schimbarea `host_fqdn`
175
-- rolurile, sursele, flagurile și SSH sunt în tabele separate, nu coloane adăugate continuu în `hosts`
176
-- workerii de date au `data_workers`, `dhcp_leases` și `mdns_observations`
177
-- certificatele emise au `certificates` și `certificate_dns_names`
178
-- `documents` rămâne doar tabel legacy pentru migrare din modelul vechi document-store
179
-
180
-Scop:
181
-
182
-- schema să poată susține inventar, DNS, vhosturi, observații externe și certificate fără să piardă istoric operațional
183
-- aliasurile/vhosturile retrase să rămână audibile în baza de date
184
-- structura să fie extensibilă fără să supraîncarce tabelul `hosts`
3
+Acest fisier este indexul jurnalelor de dezvoltare. Pastreaza harta componentelor si regulile pentru adaugarea de intrari noi; continutul istoric detaliat sta in fisierele din [`.doc/development-logs/`](development-logs/).
4
+
5
+Jurnalele explica deciziile care schimba scopul aplicatiei, regulile de operare, modelul de date sau modelul de deployment. Nu inlocuiesc git history; explica de ce au aparut schimbarile mari.
6
+
7
+## Reguli
8
+
9
+- adauga intrari noi in componenta afectata direct
10
+- daca o decizie atinge mai multe componente, pune intrarea in componenta principala si leaga celelalte fisiere relevante
11
+- pastreaza formatul `## yyyy-mm-dd - Titlu`
12
+- noteaza decizia, motivul si efectul operational
13
+- foloseste indexul acesta doar pentru orientare, nu pentru loguri lungi
14
+
15
+## Componente
16
+
17
+| Componenta | Log | Continut |
18
+|------------|-----|----------|
19
+| Architecture and scope | [`architecture.md`](development-logs/architecture.md) | scope produs, limite tehnice stabile, reguli generale de arhitectura |
20
+| Database | [`database.md`](development-logs/database.md) | SQLite, schema runtime, seed, backup/restore, surse de adevar |
21
+| Auth and login | [`auth-login.md`](development-logs/auth-login.md) | OTP, sesiuni, formulare de autentificare, compatibilitate autofill |
22
+| Hosts view | [`hosts-view.md`](development-logs/hosts-view.md) | UI/API pentru registry, editari de hosturi, vhosturi, aliasuri |
23
+| DNS | [`dns.md`](development-logs/dns.md) | manifest local DNS, resolver sync, reguli NXDOMAIN/wildcard |
24
+| SSH | [`ssh.md`](development-logs/ssh.md) | profiluri SSH, acces operational, inventar de conectare |
25
+| Work Orders | [`work-orders.md`](development-logs/work-orders.md) | schimbari operationale confirmabile, checklisturi, retrageri |
26
+| Deployment and operations | [`deployment-operations.md`](development-logs/deployment-operations.md) | GitPrep, jumper, deploy, dependency policy, contract commit/push |
27
+
28
+## Cronologie Recapitulativa
29
+
30
+| Data | Decizie | Componenta |
31
+|------|---------|------------|
32
+| 2026-06-06 | Repository and Deployment Split | [Deployment and operations](development-logs/deployment-operations.md#2026-06-06---repository-and-deployment-split) |
33
+| 2026-06-06 | Scope Expanded Beyond Host Registry | [Architecture and scope](development-logs/architecture.md#2026-06-06---scope-expanded-beyond-host-registry) |
34
+| 2026-06-06 | Work Orders Before Destructive Registry Changes | [Work Orders](development-logs/work-orders.md#2026-06-06---work-orders-before-destructive-registry-changes) |
35
+| 2026-06-06 | Local DNS Resolution Rules | [DNS](development-logs/dns.md#2026-06-06---local-dns-resolution-rules) |
36
+| 2026-06-06 | Dependency Policy | [Deployment and operations](development-logs/deployment-operations.md#2026-06-06---dependency-policy) |
37
+| 2026-06-06 | OTP Login Keeps a Password-Manager-Friendly Form Shape | [Auth and login](development-logs/auth-login.md#2026-06-06---otp-login-keeps-a-password-manager-friendly-form-shape) |
38
+| 2026-06-08 | Commit and Push Is the Development Contract | [Deployment and operations](development-logs/deployment-operations.md#2026-06-08---commit-and-push-is-the-development-contract) |
39
+| 2026-06-09 | SQLite Runtime Source of Truth | [Database](development-logs/database.md#2026-06-09---sqlite-runtime-source-of-truth) |
40
+| 2026-06-09 | Relational Runtime Schema | [Database](development-logs/database.md#2026-06-09---relational-runtime-schema) |
+22 -0
.doc/development-logs/architecture.md
@@ -0,0 +1,22 @@
1
+# Architecture and Scope Development Log
2
+
3
+Decizii despre scope-ul produsului, limite tehnice stabile si directia generala de arhitectura.
4
+
5
+## 2026-06-06 - Scope Expanded Beyond Host Registry
6
+
7
+Aplicatia a pornit ca manager pentru registrul de hosturi, dar scope-ul curent include:
8
+
9
+- registry de hosturi Madagascar
10
+- manifest DNS local pentru jumper si as01
11
+- Work Orders pentru schimbari operationale confirmabile
12
+- autoritate locala de certificate pentru hosturi
13
+- exporturi pentru servicii consumatoare, preferabil prin git
14
+
15
+Numele de produs a devenit `Madagascar Local Authority`.
16
+
17
+Numele tehnice raman stabile pentru compatibilitate:
18
+
19
+- service systemd: `host-manager`
20
+- user Unix: `host-manager`
21
+- runtime path: `/usr/local/xdev-host-manager`
22
+- environment file: `/etc/xdev/host-manager.env`
+25 -0
.doc/development-logs/auth-login.md
@@ -0,0 +1,25 @@
1
+# Auth and Login Development Log
2
+
3
+Decizii despre autentificare, OTP, sesiuni, formulare si compatibilitate cu password managere/autofill.
4
+
5
+## 2026-06-06 - OTP Login Keeps a Password-Manager-Friendly Form Shape
6
+
7
+Observatie: unele password managere si autofill-uri mobile nu initiau corect pe login-ul Madagascar Local Authority, desi completarea mergea pe o pagina similara din PBX management.
8
+
9
+Diferente relevante observate pe pagina care functiona:
10
+
11
+- formular clasic `method="post"`
12
+- camp de cont cu `autocomplete="username"`
13
+- camp unic pentru codul OTP, separat de cele 6 casute vizuale
14
+
15
+Decizie:
16
+
17
+- UI-ul ramane cu 6 casute OTP
18
+- formularul include si campuri ajutatoare off-screen pentru `username` si OTP agregat
19
+- JS sincronizeaza codul complet intre campul agregat si cele 6 casute
20
+- formularul pastreaza `autocomplete="on"` la nivel de form, ca hint-urile specifice de pe campuri sa nu fie neutralizate
21
+
22
+Scop:
23
+
24
+- compatibilitate mai buna cu password managere si autofill mobil
25
+- fara a complica interfata vizibila
+43 -0
.doc/development-logs/database.md
@@ -0,0 +1,43 @@
1
+# Database Development Log
2
+
3
+Decizii despre SQLite, schema runtime, migrare, seed, backup/restore si sursele de adevar pentru date operationale.
4
+
5
+## 2026-06-09 - SQLite Runtime Source of Truth
6
+
7
+Observatie: editarile de hosts facute in aplicatia live puteau ramane in working tree-ul de pe jumper sau puteau fi suprascrise/confuzionate la push-ul de cod. Modelul vechi descria simultan `config/hosts.yaml` ca registry editabil in git si ca data operationala runtime, ceea ce nu era o sursa de adevar clara.
8
+
9
+Decizie:
10
+
11
+- `var/host-manager.sqlite` devine sursa de adevar runtime pentru registry si Work Orders
12
+- `config/hosts.yaml` si `config/work-orders.yaml` raman seed/snapshot/export compatibility files
13
+- la prima pornire, aplicatia seed-uieste documentele lipsa din YAML in SQLite
14
+- download-urile `/download/hosts.yaml`, `/download/local-hosts.tsv` si `/download/monitoring.json` sunt randate din SQLite
15
+- `config/local-hosts.tsv` ramane manifest generat explicit pentru sync-ul DNS local
16
+- push-urile de cod catre jumper nu trebuie sa inlocuiasca baza runtime din `var/`
17
+
18
+Scop:
19
+
20
+- editarile facute in UI sa nu se piarda la deploy/push de cod
21
+- sa existe o singura autoritate runtime
22
+- YAML/TSV sa ramana utile pentru export, review si bootstrap fara sa fie storage-ul live
23
+
24
+## 2026-06-09 - Relational Runtime Schema
25
+
26
+Observatie: primul pas SQLite mutase sursa de adevar din git in baza de date, dar o pastra ca document YAML intr-o tabela generica. Asta rezolva pierderea editarilor la push, dar nu oferea o baza de date operationala reala.
27
+
28
+Decizie:
29
+
30
+- `hosts.fqdn` devine cheia reala pentru hosturi, ca numele complete sa evite coliziuni intre domenii
31
+- `legacy_id` ramane doar compatibilitate pentru UI/API-ul curent
32
+- aliasurile sunt pastrate in `host_aliases`, inclusiv dupa retragere
33
+- vhosturile sunt in `vhosts` si pot fi mutate prin schimbarea `host_fqdn`
34
+- rolurile, sursele, flagurile si SSH sunt in tabele separate, nu coloane adaugate continuu in `hosts`
35
+- workerii de date au `data_workers`, `dhcp_leases` si `mdns_observations`
36
+- certificatele emise au `certificates` si `certificate_dns_names`
37
+- `documents` ramane doar tabel legacy pentru migrare din modelul vechi document-store
38
+
39
+Scop:
40
+
41
+- schema sa poata sustine inventar, DNS, vhosturi, observatii externe si certificate fara sa piarda istoric operational
42
+- aliasurile/vhosturile retrase sa ramana audibile in baza de date
43
+- structura sa fie extensibila fara sa supraincarce tabelul `hosts`
+66 -0
.doc/development-logs/deployment-operations.md
@@ -0,0 +1,66 @@
1
+# Deployment and Operations Development Log
2
+
3
+Decizii despre GitPrep, jumper, deploy, runtime paths, dependency policy si disciplina commit/push.
4
+
5
+## 2026-06-06 - Repository and Deployment Split
6
+
7
+Decizie: codul aplicatiei se dezvolta local si se publica in GitPrep. Jumper ramane runtime/deploy target.
8
+
9
+Locatii:
10
+
11
+- checkout local: `/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/LocalAuthority`
12
+- GitPrep canonical remote: `git@192.168.2.102:repositories/bogdan/LocalAuthority.git`
13
+- GitPrep web: `http://192.168.2.102:3000/bogdan/LocalAuthority`
14
+- runtime jumper: `/usr/local/xdev-host-manager`
15
+
16
+Motiv:
17
+
18
+- editarea directa pe jumper amesteca dezvoltarea cu runtime-ul
19
+- aplicatia are acum scope mai mare si va continua sa evolueze
20
+- avem nevoie de istoric, review si deploy controlat
21
+
22
+Regula:
23
+
24
+- `scripts/deploy_to_jumper.sh` publica aplicatia pe jumper
25
+- `config/` nu se copiaza implicit
26
+- `config/` se copiaza doar cu `--include-config`, la cerere explicita
27
+
28
+## 2026-06-06 - Dependency Policy
29
+
30
+Regula: nu se instaleaza npm, pip sau CPAN direct pe hosturi.
31
+
32
+Acceptat:
33
+
34
+- pachete din distributie, cand sunt necesare
35
+- Perl din distributie
36
+- module Perl core/distribution
37
+
38
+CPAN se foloseste doar daca pachetul ajunge prin repo-ul local auditat.
39
+
40
+Pachete de sistem instalate in timpul evolutiei:
41
+
42
+- `ripgrep` pe jumper
43
+- `rsync` pe jumper
44
+- `sqlite` pe jumper
45
+- `perl-DBD-SQLite` pe jumper
46
+- `sqlite3` pe mazeri/GitPrep
47
+
48
+## 2026-06-08 - Commit and Push Is the Development Contract
49
+
50
+Observatie: schimbarile lasate mult timp ca dirty working tree se pierd usor in timpul deploy-urilor, reseturilor si schimbarilor de context. Pentru development, unitatea de lucru trebuie sa fie commit-ul local, nu un set de fisiere uitate in stare necomisa.
51
+
52
+Decizie:
53
+
54
+- se lucreaza cu commit-uri locale mici si coerente
55
+- pentru test live, commit-ul se impinge in checkout-ul runtime de pe jumper cu `git push jumper-runtime HEAD:main`
56
+- pentru arhivare si istoric canonic, acelasi commit se impinge in GitPrep cu `git push origin main`
57
+- jumper ramane target de test live, nu locul principal de editare
58
+- `scripts/deploy_to_jumper.sh` ramane unealta explicita de rsync deploy, dar nu inlocuieste disciplina commit/push
59
+- `BUILD` ramane sursa vizibila pentru ce versiune ruleaza
60
+
61
+Scop:
62
+
63
+- niciun front de lucru sa nu ramana doar in fisiere dirty locale sau runtime
64
+- testul live pe jumper sa fie legat de un commit identificabil
65
+- GitPrep sa pastreze istoria canonica pentru arhivare si recuperare
66
+- badge-ul de build si meta tag-ul `xdev-build` devin verificarea rapida pentru ce ruleaza
+20 -0
.doc/development-logs/dns.md
@@ -0,0 +1,20 @@
1
+# DNS Development Log
2
+
3
+Decizii despre manifestul DNS local, resolver sync, prioritatea surselor si regulile de rezolvare pentru `madagascar.xdev.ro`.
4
+
5
+## 2026-06-06 - Local DNS Resolution Rules
6
+
7
+Regula: local nu se foloseste wildcard pentru `*.madagascar.xdev.ro`.
8
+
9
+Doar numele cunoscute din manifestul local trebuie sa se rezolve intern. Numele necunoscute trebuie sa intoarca `NXDOMAIN`, chiar daca DNS public poate avea wildcard catre IP-ul public.
10
+
11
+Resolverele interne sunt:
12
+
13
+- jumper: `192.168.2.100`
14
+- as01: `192.168.2.2`
15
+
16
+Sync-ul ramane explicit:
17
+
18
+```bash
19
+./scripts/sync_local_hosts.sh --apply --verify
20
+```
+5 -0
.doc/development-logs/hosts-view.md
@@ -0,0 +1,5 @@
1
+# Hosts View Development Log
2
+
3
+Decizii despre UI/API pentru registry, editari de hosturi, aliasuri, vhosturi si experienta de operare in hosts view.
4
+
5
+Nu exista inca intrari mutate aici din logul istoric.
+5 -0
.doc/development-logs/ssh.md
@@ -0,0 +1,5 @@
1
+# SSH Development Log
2
+
3
+Decizii despre profiluri SSH, inventar de conectare, reguli de acces si folosirea datelor din `host_ssh`.
4
+
5
+Nu exista inca intrari mutate aici din logul istoric.
+23 -0
.doc/development-logs/work-orders.md
@@ -0,0 +1,23 @@
1
+# Work Orders Development Log
2
+
3
+Decizii despre Work Orders, schimbari operationale confirmabile, checklisturi si actiuni cu impact asupra registry-ului.
4
+
5
+## 2026-06-06 - Work Orders Before Destructive Registry Changes
6
+
7
+Decizie: numele cu impact operational nu se sterg direct din UI.
8
+
9
+Exemplu initial:
10
+
11
+- `pmx.*.madagascar.xdev.ro`
12
+- `pbs.*.madagascar.xdev.ro`
13
+
14
+Aceste nume au fost create pentru vhosturi nginx cu certificate Let's Encrypt. Odata cu CA-ul local, intentia este retragerea lor, dar eliminarea din registry se face doar dupa:
15
+
16
+- inventarierea vhosturilor
17
+- crearea si instalarea certificatelor locale
18
+- eliminarea configuratiilor legacy
19
+- testarea accesului prin numele canonice
20
+- verificarea ca numele nu mai sunt folosite
21
+- aprobarea finala a operatorului
22
+
23
+Confirmarea unui WO este blocata daca checklist-ul nu este complet.
+1 -1
.doc/host-manager.md
@@ -4,7 +4,7 @@ Madagascar Local Authority este o aplicație web locală, Perl-only, pentru regi
4 4
 
5 5
 Numele de produs este `Madagascar Local Authority`. Numele tehnic al serviciului, userului Unix, path-ului și fișierelor de environment rămâne `host-manager`.
6 6
 
7
-Pentru deciziile de evoluție și schimbările de scope, vezi `.doc/development-log.md`.
7
+Pentru deciziile de evoluție și schimbările de scope, vezi indexul `.doc/development-log.md` și logurile pe componente din `.doc/development-logs/`.
8 8
 
9 9
 ## Politica de dependențe
10 10
 
+1 -1
README.md
@@ -42,7 +42,7 @@ For agent/operator context, see:
42 42
 
43 43
 - [`agents.md`](agents.md)
44 44
 - [`.doc/database/`](.doc/database/README.md)
45
-- [`.doc/development-log.md`](.doc/development-log.md)
45
+- [`.doc/development-log.md`](.doc/development-log.md) - index pentru development logs pe componente
46 46
 - [`.doc/host-manager.md`](.doc/host-manager.md)
47 47
 - [`.doc/local-hosts.md`](.doc/local-hosts.md)
48 48
 
+1 -1
agents.md
@@ -8,7 +8,7 @@ Start with these documents:
8 8
 - [.doc/database/](.doc/database/README.md) - SQLite runtime store schema, table docs, seed rules, backup and restore.
9 9
 - [.doc/host-manager.md](.doc/host-manager.md) - application behavior, OTP, Work Orders, local CA, registry rules.
10 10
 - [.doc/local-hosts.md](.doc/local-hosts.md) - local DNS rules, resolver sync, source priority.
11
-- [.doc/development-log.md](.doc/development-log.md) - scope and architecture decisions over time.
11
+- [.doc/development-log.md](.doc/development-log.md) - development log index with component logs under `.doc/development-logs/`.
12 12
 
13 13
 Operational rules:
14 14