@ingeniomaps/cauce 0.38.0 → 0.39.0
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.
- package/CHANGELOG.md +12 -0
- package/engine/cli/ops.js +26 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,18 @@ desde este repositorio no va, porque el que lee no puede actuar sobre eso. Cuand
|
|
|
14
14
|
unas pocas líneas casi siempre es porque cuenta cómo se descubrió el problema o por qué se eligió el
|
|
15
15
|
diseño — eso vive en el commit y en el código.
|
|
16
16
|
|
|
17
|
+
## [0.39.0] - 2026-08-19
|
|
18
|
+
|
|
19
|
+
### Corregido
|
|
20
|
+
|
|
21
|
+
- **`check` nombra las credenciales que nadie se llevó.** El arranque tiene que dejar una fila por cada
|
|
22
|
+
variable que el proyecto declara, y en cuatro corridas reales se cumplió en proporción a lo que se
|
|
23
|
+
habló: las que sólo estaban en el inventario quedaron afuera —entre ellas el broker por donde entran
|
|
24
|
+
los datos y el servicio al que se le mandan errores—. Ahora `check` nombra las que no aparecen ni en el
|
|
25
|
+
mapa ni en `HUMAN_ACTIONS.md`. Mira sólo cuando la instancia ya tiene contexto escrito, porque antes no
|
|
26
|
+
hay dónde tendrían que estar, y avisa en vez de fallar: una variable sin dueño no rompe nada hoy, rompe
|
|
27
|
+
el día que alguien tiene que desplegar.
|
|
28
|
+
|
|
17
29
|
## [0.38.0] - 2026-08-19
|
|
18
30
|
|
|
19
31
|
### Añadido
|
package/engine/cli/ops.js
CHANGED
|
@@ -465,6 +465,31 @@ function seccionesPerdidas(root) {
|
|
|
465
465
|
return avisos
|
|
466
466
|
}
|
|
467
467
|
|
|
468
|
+
// Credenciales que el proyecto declara y que no aparecen en ningún contrato. El arranque tiene que
|
|
469
|
+
// dejar una fila por cada una —quién la carga y dónde— y en la práctica cubre las que se hablaron en la
|
|
470
|
+
// conversación: las que sólo estaban en el inventario se pierden, y con ellas el servicio externo que
|
|
471
|
+
// hay detrás. Una variable sin dueño no rompe nada hoy; rompe el día que alguien tiene que desplegar.
|
|
472
|
+
//
|
|
473
|
+
// Sólo cuando la instancia ya tiene contexto escrito: antes del arranque no hay dónde estuvieran.
|
|
474
|
+
function credencialesSinDueño(root) {
|
|
475
|
+
if (OB.guide(root).fresh) return []
|
|
476
|
+
const contratos = ['AGENTS.md', path.join('planning', 'HUMAN_ACTIONS.md')]
|
|
477
|
+
.map((file) => { try { return fs.readFileSync(path.join(root, file), 'utf8') } catch { return '' } })
|
|
478
|
+
.join('\n')
|
|
479
|
+
if (!contratos) return []
|
|
480
|
+
const huerfanas = []
|
|
481
|
+
for (const service of inventory(root)) {
|
|
482
|
+
for (const nombre of (service.env || {}).names || []) {
|
|
483
|
+
if (!contratos.includes(nombre)) huerfanas.push(`${nombre} (${service.path})`)
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
if (!huerfanas.length) return []
|
|
487
|
+
const lista = huerfanas.length > 4
|
|
488
|
+
? `${huerfanas.slice(0, 4).join(', ')} y ${huerfanas.length - 4} más`
|
|
489
|
+
: huerfanas.join(', ')
|
|
490
|
+
return [`el proyecto declara ${lista} y no aparecen en el mapa ni en HUMAN_ACTIONS: nadie las carga`]
|
|
491
|
+
}
|
|
492
|
+
|
|
468
493
|
function check(dir, cli) {
|
|
469
494
|
const root = path.resolve(dir || '.')
|
|
470
495
|
const errors = []
|
|
@@ -578,6 +603,7 @@ function check(dir, cli) {
|
|
|
578
603
|
for (const entry of FK.drift(path.resolve(root, '..'))) warnings.push(FK.driftLine(entry))
|
|
579
604
|
|
|
580
605
|
warnings.push(...seccionesPerdidas(path.resolve(root, '..')))
|
|
606
|
+
warnings.push(...credencialesSinDueño(path.resolve(root, '..')))
|
|
581
607
|
|
|
582
608
|
if (cli.has('--json')) {
|
|
583
609
|
console.log(JSON.stringify({
|