@nac3/forge-cli 1.23.7 → 1.24.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.
Files changed (162) hide show
  1. package/dist/bin/yf.js +0 -0
  2. package/dist/chat/claude.d.ts +8 -0
  3. package/dist/chat/claude.d.ts.map +1 -1
  4. package/dist/chat/claude.js.map +1 -1
  5. package/dist/chat/claude_cli.d.ts +23 -0
  6. package/dist/chat/claude_cli.d.ts.map +1 -1
  7. package/dist/chat/claude_cli.js +76 -2
  8. package/dist/chat/claude_cli.js.map +1 -1
  9. package/dist/chat/doctrine_digest.d.ts.map +1 -1
  10. package/dist/chat/doctrine_digest.js +2 -1
  11. package/dist/chat/doctrine_digest.js.map +1 -1
  12. package/dist/chat/server.d.ts.map +1 -1
  13. package/dist/chat/server.js +11 -0
  14. package/dist/chat/server.js.map +1 -1
  15. package/dist/chat/tools/pending.d.ts +11 -0
  16. package/dist/chat/tools/pending.d.ts.map +1 -1
  17. package/dist/chat/tools/pending.js +55 -8
  18. package/dist/chat/tools/pending.js.map +1 -1
  19. package/dist/chat/tools/shell.d.ts +39 -4
  20. package/dist/chat/tools/shell.d.ts.map +1 -1
  21. package/dist/chat/tools/shell.js +167 -7
  22. package/dist/chat/tools/shell.js.map +1 -1
  23. package/dist/chat/tools/urazuke.d.ts.map +1 -1
  24. package/dist/chat/tools/urazuke.js +8 -5
  25. package/dist/chat/tools/urazuke.js.map +1 -1
  26. package/dist/chat/urazuke_section.d.ts +26 -4
  27. package/dist/chat/urazuke_section.d.ts.map +1 -1
  28. package/dist/chat/urazuke_section.js +115 -9
  29. package/dist/chat/urazuke_section.js.map +1 -1
  30. package/dist/commands/pending.d.ts.map +1 -1
  31. package/dist/commands/pending.js +116 -12
  32. package/dist/commands/pending.js.map +1 -1
  33. package/dist/commands/urazuke.d.ts +3 -0
  34. package/dist/commands/urazuke.d.ts.map +1 -1
  35. package/dist/commands/urazuke.js +80 -3
  36. package/dist/commands/urazuke.js.map +1 -1
  37. package/dist/core/ascii_purity.d.ts +69 -0
  38. package/dist/core/ascii_purity.d.ts.map +1 -0
  39. package/dist/core/ascii_purity.js +141 -0
  40. package/dist/core/ascii_purity.js.map +1 -0
  41. package/dist/core/battery_stamp.d.ts +85 -0
  42. package/dist/core/battery_stamp.d.ts.map +1 -0
  43. package/dist/core/battery_stamp.js +237 -0
  44. package/dist/core/battery_stamp.js.map +1 -0
  45. package/dist/core/ci_gaps.d.ts +129 -0
  46. package/dist/core/ci_gaps.d.ts.map +1 -0
  47. package/dist/core/ci_gaps.js +352 -0
  48. package/dist/core/ci_gaps.js.map +1 -0
  49. package/dist/core/doc_citations.d.ts +133 -0
  50. package/dist/core/doc_citations.d.ts.map +1 -0
  51. package/dist/core/doc_citations.js +271 -0
  52. package/dist/core/doc_citations.js.map +1 -0
  53. package/dist/docs/doctrine/urazuke.md +173 -2
  54. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  55. package/dist/nac3/internal_manifest.js +28 -2
  56. package/dist/nac3/internal_manifest.js.map +1 -1
  57. package/dist/pending/store.d.ts +29 -0
  58. package/dist/pending/store.d.ts.map +1 -1
  59. package/dist/pending/store.js +51 -1
  60. package/dist/pending/store.js.map +1 -1
  61. package/dist/pending/types.d.ts +23 -0
  62. package/dist/pending/types.d.ts.map +1 -1
  63. package/dist/pending/types.js.map +1 -1
  64. package/dist/telemetry/usage.d.ts +18 -0
  65. package/dist/telemetry/usage.d.ts.map +1 -1
  66. package/dist/telemetry/usage.js +16 -1
  67. package/dist/telemetry/usage.js.map +1 -1
  68. package/dist/urazuke/announce.d.ts +7 -0
  69. package/dist/urazuke/announce.d.ts.map +1 -1
  70. package/dist/urazuke/announce.js +20 -0
  71. package/dist/urazuke/announce.js.map +1 -1
  72. package/dist/urazuke/catalog.d.ts +1 -1
  73. package/dist/urazuke/catalog.d.ts.map +1 -1
  74. package/dist/urazuke/catalog.js.map +1 -1
  75. package/dist/urazuke/close_gate.d.ts +31 -4
  76. package/dist/urazuke/close_gate.d.ts.map +1 -1
  77. package/dist/urazuke/close_gate.js +70 -13
  78. package/dist/urazuke/close_gate.js.map +1 -1
  79. package/dist/urazuke/current.d.ts +28 -0
  80. package/dist/urazuke/current.d.ts.map +1 -1
  81. package/dist/urazuke/current.js +18 -5
  82. package/dist/urazuke/current.js.map +1 -1
  83. package/dist/urazuke/cycle.d.ts +3 -0
  84. package/dist/urazuke/cycle.d.ts.map +1 -1
  85. package/dist/urazuke/cycle.js +5 -3
  86. package/dist/urazuke/cycle.js.map +1 -1
  87. package/dist/urazuke/evidence.d.ts +14 -1
  88. package/dist/urazuke/evidence.d.ts.map +1 -1
  89. package/dist/urazuke/evidence.js +88 -2
  90. package/dist/urazuke/evidence.js.map +1 -1
  91. package/dist/urazuke/evidence_env.d.ts +78 -0
  92. package/dist/urazuke/evidence_env.d.ts.map +1 -0
  93. package/dist/urazuke/evidence_env.js +341 -0
  94. package/dist/urazuke/evidence_env.js.map +1 -0
  95. package/dist/urazuke/freeze.d.ts.map +1 -1
  96. package/dist/urazuke/freeze.js +16 -9
  97. package/dist/urazuke/freeze.js.map +1 -1
  98. package/dist/urazuke/gate.d.ts +48 -0
  99. package/dist/urazuke/gate.d.ts.map +1 -1
  100. package/dist/urazuke/gate.js +251 -25
  101. package/dist/urazuke/gate.js.map +1 -1
  102. package/dist/urazuke/gates_data.d.ts +30 -3
  103. package/dist/urazuke/gates_data.d.ts.map +1 -1
  104. package/dist/urazuke/gates_data.js +51 -5
  105. package/dist/urazuke/gates_data.js.map +1 -1
  106. package/dist/urazuke/gates_pull.d.ts +40 -0
  107. package/dist/urazuke/gates_pull.d.ts.map +1 -1
  108. package/dist/urazuke/gates_pull.js +118 -8
  109. package/dist/urazuke/gates_pull.js.map +1 -1
  110. package/dist/urazuke/manual_cases.d.ts +11 -1
  111. package/dist/urazuke/manual_cases.d.ts.map +1 -1
  112. package/dist/urazuke/manual_cases.js +1 -0
  113. package/dist/urazuke/manual_cases.js.map +1 -1
  114. package/dist/urazuke/overrides.d.ts +107 -0
  115. package/dist/urazuke/overrides.d.ts.map +1 -0
  116. package/dist/urazuke/overrides.js +128 -0
  117. package/dist/urazuke/overrides.js.map +1 -0
  118. package/dist/urazuke/probes.d.ts.map +1 -1
  119. package/dist/urazuke/probes.js +51 -0
  120. package/dist/urazuke/probes.js.map +1 -1
  121. package/dist/urazuke/profiles.d.ts +135 -0
  122. package/dist/urazuke/profiles.d.ts.map +1 -0
  123. package/dist/urazuke/profiles.js +470 -0
  124. package/dist/urazuke/profiles.js.map +1 -0
  125. package/dist/urazuke/receipt_audit.d.ts +67 -0
  126. package/dist/urazuke/receipt_audit.d.ts.map +1 -0
  127. package/dist/urazuke/receipt_audit.js +103 -0
  128. package/dist/urazuke/receipt_audit.js.map +1 -0
  129. package/dist/urazuke/receipts.d.ts +22 -0
  130. package/dist/urazuke/receipts.d.ts.map +1 -1
  131. package/dist/urazuke/receipts.js +44 -0
  132. package/dist/urazuke/receipts.js.map +1 -1
  133. package/dist/urazuke/report.d.ts +30 -0
  134. package/dist/urazuke/report.d.ts.map +1 -1
  135. package/dist/urazuke/report.js +39 -0
  136. package/dist/urazuke/report.js.map +1 -1
  137. package/dist/urazuke/reset.d.ts +35 -0
  138. package/dist/urazuke/reset.d.ts.map +1 -0
  139. package/dist/urazuke/reset.js +150 -0
  140. package/dist/urazuke/reset.js.map +1 -0
  141. package/dist/urazuke/retro.d.ts +5 -1
  142. package/dist/urazuke/retro.d.ts.map +1 -1
  143. package/dist/urazuke/retro.js +21 -8
  144. package/dist/urazuke/retro.js.map +1 -1
  145. package/dist/urazuke/section.d.ts.map +1 -1
  146. package/dist/urazuke/section.js +17 -2
  147. package/dist/urazuke/section.js.map +1 -1
  148. package/dist/urazuke/semantics.d.ts +173 -0
  149. package/dist/urazuke/semantics.d.ts.map +1 -0
  150. package/dist/urazuke/semantics.js +232 -0
  151. package/dist/urazuke/semantics.js.map +1 -0
  152. package/dist/urazuke/start.d.ts +8 -0
  153. package/dist/urazuke/start.d.ts.map +1 -1
  154. package/dist/urazuke/start.js +10 -2
  155. package/dist/urazuke/start.js.map +1 -1
  156. package/dist/version.d.ts +1 -1
  157. package/dist/version.js +1 -1
  158. package/dist/workflow/orchestrator.d.ts.map +1 -1
  159. package/dist/workflow/orchestrator.js +6 -7
  160. package/dist/workflow/orchestrator.js.map +1 -1
  161. package/docs/doctrine/urazuke.md +173 -2
  162. package/package.json +24 -20
@@ -0,0 +1,341 @@
1
+ /**
2
+ * EL ENTORNO DEL WORKTREE DE EVIDENCIA -- F-13 (decision del dueno,
3
+ * 2026-11-01).
4
+ *
5
+ * EL DEFECTO, en el orden en que importa. El worktree del red_proof se arma
6
+ * con `git worktree add` mas el overlay de lo no commiteado, y ninguno de
7
+ * los dos lleva lo IGNORADO. Lo que un proyecto necesita para correr --
8
+ * `.env` y compania -- esta justamente en `.gitignore`, asi que el worktree
9
+ * arranca SIN entorno. Hasta aca es una molestia. Lo que lo vuelve grave es
10
+ * lo que se midio despues: el rojo que sale de ahi -- un rojo por falta de
11
+ * entorno, que no distinguio ninguna conducta -- salia con veredicto ok Y
12
+ * contado como rojo FUERTE, asi que la compuerta del cierre lo aceptaba
13
+ * como prueba de que la mutacion fue detectada. Eso es el mecanismo central
14
+ * del metodo certificando que detecto algo que nunca detecto.
15
+ *
16
+ * Palabras del dueno sobre el orden: "el overlay decide CUANTAS VECES va a
17
+ * pasar; la clasificacion decide SI PASA INADVERTIDO". Asi que este modulo
18
+ * trae las dos mitades, y la primera no depende de la segunda:
19
+ *
20
+ * 1. LA CLASIFICACION (no se puede desactivar). `absentEnvironment` mira
21
+ * si quedo en la raiz del proyecto un archivo con forma de entorno que
22
+ * NO llego al worktree. Mientras esa lista no este vacia, el rojo no
23
+ * puede contar como fuerte (receipts.ts/isStrongRed) y el recibo dice
24
+ * el motivo con el nombre del archivo. No afirma que el rojo fue
25
+ * CAUSADO por eso -- afirma que corrio con el entorno incompleto, que
26
+ * es lo unico que se puede medir y es suficiente para no certificarlo.
27
+ *
28
+ * 2. EL ACARREO DECLARADO (opcion (b) del informe, elegida por el dueno).
29
+ * Solo viaja lo que el proyecto DECLARA en `yujin.forge.json`:
30
+ *
31
+ * "urazuke": { "evidence_env": {
32
+ * "include": ["infra/.env", "config/*.local.json"],
33
+ * "max_bytes": 1048576, "max_files": 20
34
+ * } }
35
+ *
36
+ * Sin declaracion no viaja nada: agregar `--ignored` a secas
37
+ * arrastraria node_modules, dist, coverage y los cache, y el worktree
38
+ * quedaria inutilizable. El tope existe para que una declaracion no
39
+ * pueda arrastrar el mundo con un `**`, y lo que no entra en el tope
40
+ * se RECHAZA (no se recorta en silencio) y se nombra en el recibo.
41
+ *
42
+ * 3. LA MITAD DEL RECIBO DE LA OPCION (c). Un archivo declarado que NO
43
+ * esta en disco aparece en `declared_missing` y sale en el recibo. Sin
44
+ * eso, el caso "lo declare y me lo borre" es indistinguible de "nunca
45
+ * lo declare": las dos veces el worktree arranca sin el archivo y las
46
+ * dos veces en silencio.
47
+ *
48
+ * LA FORMA DE LA DECLARACION SIGUE A semantics.ts: la ausencia cae al
49
+ * default (no acarrea nada) y una declaracion que no se entiende se RECHAZA
50
+ * ENTERA y en voz alta. Media declaracion aplicada -- tres de cinco
51
+ * archivos -- es exactamente el worktree a medias que F-13 vino a cerrar.
52
+ *
53
+ * ASCII-only.
54
+ */
55
+ import fs from 'node:fs/promises';
56
+ import path from 'node:path';
57
+ /* ===================================================================
58
+ * 1. LA DECLARACION
59
+ * ================================================================= */
60
+ /** El tope por default cuando la declaracion no lo dice. Un `.env` real
61
+ * pesa cientos de bytes; un megabyte alcanza para un par de archivos de
62
+ * configuracion y no para un bundle. */
63
+ export const EVIDENCE_ENV_DEFAULT_MAX_BYTES = 1024 * 1024;
64
+ /** El techo que una declaracion no puede levantar. Sin esto, `max_bytes`
65
+ * en un numero enorme mas un `include` generoso es el mismo `--ignored` a
66
+ * secas que esta opcion vino a evitar, escrito por el proyecto. */
67
+ export const EVIDENCE_ENV_HARD_MAX_BYTES = 16 * 1024 * 1024;
68
+ /** Idem por cantidad de archivos. */
69
+ export const EVIDENCE_ENV_DEFAULT_MAX_FILES = 20;
70
+ export const EVIDENCE_ENV_HARD_MAX_FILES = 200;
71
+ /** Una entrada de `include` que este modulo se niega a resolver, con el
72
+ * motivo. Separada de la validacion de la declaracion entera porque una
73
+ * ruta mala NO tiene que tirar abajo las otras cuatro: se nombra y se
74
+ * sigue. Lo que si tira abajo la declaracion entera es que no se entienda
75
+ * su FORMA (ver resolveEvidenceEnvDeclaration). */
76
+ function unsafeInclude(rel) {
77
+ if (!rel.trim())
78
+ return 'entrada vacia';
79
+ if (path.isAbsolute(rel) || /^[A-Za-z]:/.test(rel))
80
+ return 'ruta absoluta';
81
+ if (rel.split(/[\\/]/).some((s) => s === '..'))
82
+ return 'sale del proyecto con ..';
83
+ if (rel.includes('**'))
84
+ return 'usa ** (el acarreo declarado no recorre el arbol: nombra los directorios)';
85
+ if (rel.split(/[\\/]/).includes('node_modules'))
86
+ return 'node_modules nunca viaja';
87
+ if (path.dirname(rel).includes('*'))
88
+ return 'el glob solo aplica al nombre del archivo, no al camino';
89
+ return undefined;
90
+ }
91
+ /** Validar y resolver la declaracion. La ausencia cae al default (no
92
+ * acarrea nada); una forma que no se entiende se rechaza ENTERA. */
93
+ export function resolveEvidenceEnvDeclaration(raw) {
94
+ if (raw === undefined || raw === null)
95
+ return { notices: [] };
96
+ const refuse = (why) => ({
97
+ notices: [why + ' -- no se acarrea NINGUN archivo ignorado al worktree de evidencia.'],
98
+ });
99
+ if (typeof raw !== 'object' || Array.isArray(raw))
100
+ return refuse('urazuke.evidence_env no es un objeto');
101
+ const o = raw;
102
+ if (!Array.isArray(o.include))
103
+ return refuse('urazuke.evidence_env no trae `include` como lista');
104
+ if (!o.include.length)
105
+ return refuse('urazuke.evidence_env declara `include` vacio');
106
+ const notices = [];
107
+ const include = [];
108
+ for (const e of o.include) {
109
+ if (typeof e !== 'string') {
110
+ notices.push('una entrada de `include` no es un texto y NO se acarrea: ' + JSON.stringify(e ?? null));
111
+ continue;
112
+ }
113
+ const rel = e.trim().split('\\').join('/');
114
+ const why = unsafeInclude(rel);
115
+ if (why) {
116
+ notices.push('"' + rel + '" NO se acarrea: ' + why);
117
+ continue;
118
+ }
119
+ include.push(rel);
120
+ }
121
+ if (!include.length) {
122
+ /* El motivo POR ENTRADA se conserva. Reemplazarlo por "ninguna quedo en
123
+ * pie" deja al que declaro un glob con ** sin saber que fue el `**`: es la
124
+ * misma ausencia sin motivo que M-03, cometida en el arreglo de F-13. */
125
+ return { notices: [...notices, 'ninguna entrada de `include` quedo en pie'
126
+ + ' -- no se acarrea NINGUN archivo ignorado al worktree de evidencia.'] };
127
+ }
128
+ const num = (v, def, hard, name) => {
129
+ if (v === undefined)
130
+ return def;
131
+ if (typeof v !== 'number' || !Number.isFinite(v) || v <= 0) {
132
+ notices.push('`' + name + '` no es un numero positivo: rige el default ' + def + '.');
133
+ return def;
134
+ }
135
+ if (v > hard) {
136
+ notices.push('`' + name + '` declarado en ' + v + ' supera el techo de esta instalacion ('
137
+ + hard + '): rige el techo.');
138
+ return hard;
139
+ }
140
+ return Math.floor(v);
141
+ };
142
+ return {
143
+ declaration: {
144
+ include,
145
+ max_bytes: num(o.max_bytes, EVIDENCE_ENV_DEFAULT_MAX_BYTES, EVIDENCE_ENV_HARD_MAX_BYTES, 'max_bytes'),
146
+ max_files: num(o.max_files, EVIDENCE_ENV_DEFAULT_MAX_FILES, EVIDENCE_ENV_HARD_MAX_FILES, 'max_files'),
147
+ },
148
+ notices,
149
+ };
150
+ }
151
+ /** Leer la declaracion de `yujin.forge.json`. Nunca tira: un manifiesto
152
+ * ausente o ilegible es "no hay declaracion", y eso se dice. */
153
+ export async function readEvidenceEnvDeclaration(projectRoot) {
154
+ let raw = '';
155
+ try {
156
+ raw = await fs.readFile(path.join(projectRoot, 'yujin.forge.json'), 'utf8');
157
+ }
158
+ catch {
159
+ return { notices: [] };
160
+ }
161
+ let parsed;
162
+ try {
163
+ parsed = JSON.parse(raw);
164
+ }
165
+ catch (e) {
166
+ return { notices: ['yujin.forge.json no se pudo leer como JSON ('
167
+ + (e instanceof Error ? e.message : String(e)).slice(0, 160)
168
+ + '): no se acarrea ningun archivo ignorado al worktree de evidencia.'] };
169
+ }
170
+ const urz = parsed?.urazuke;
171
+ return resolveEvidenceEnvDeclaration(urz?.evidence_env);
172
+ }
173
+ /* ===================================================================
174
+ * 2. LA CLASIFICACION: QUE ENTORNO LE FALTO AL WORKTREE
175
+ * ================================================================= */
176
+ /** La FORMA de un archivo de entorno, no la verdad sobre el proyecto.
177
+ *
178
+ * Se mira solo la raiz y solo estos nombres, a proposito: la lista corta
179
+ * es conservadora en la direccion correcta -- solo puede BAJAR el peso de
180
+ * una evidencia, nunca subirlo -- y el recibo dice que archivo fue, asi
181
+ * que una deteccion de mas se lee y se descarta en un segundo. Un proyecto
182
+ * cuyo entorno no tiene esta forma lo declara con `include` (que es la
183
+ * respuesta completa) y deja de depender de esta heuristica.
184
+ *
185
+ * `.env.example` / `.sample` / `.template` quedan afuera: son plantillas
186
+ * que se commitean, asi que ya viajan, y nombrarlas seria ruido. */
187
+ const ENV_SHAPES = [
188
+ /^\.env$/i,
189
+ /^\.env\.(?!example$|sample$|template$|dist$)[A-Za-z0-9_.-]+$/i,
190
+ ];
191
+ /** True cuando el nombre tiene forma de archivo de entorno. */
192
+ export function looksLikeEnvFile(name) {
193
+ return ENV_SHAPES.some((re) => re.test(name));
194
+ }
195
+ /** Los archivos con forma de entorno que estan en la raiz del proyecto y NO
196
+ * llegaron al worktree. Vacio = el entorno de la raiz llego entero (o no
197
+ * habia ninguno, que para esta medicion es lo mismo).
198
+ *
199
+ * Solo la raiz: bajar el arbol buscando `.env` costaria un recorrido
200
+ * completo en cada rojo, y el caso que se midio -- y el unico que se
201
+ * puede nombrar sin adivinar -- es el de la raiz. Un entorno mas abajo se
202
+ * declara. */
203
+ export async function absentEnvironment(projectRoot, wt) {
204
+ let names = [];
205
+ try {
206
+ names = (await fs.readdir(projectRoot, { withFileTypes: true }))
207
+ .filter((d) => d.isFile() && looksLikeEnvFile(d.name))
208
+ .map((d) => d.name)
209
+ .sort();
210
+ }
211
+ catch {
212
+ return [];
213
+ }
214
+ const out = [];
215
+ for (const n of names) {
216
+ try {
217
+ await fs.stat(path.join(wt, n));
218
+ }
219
+ catch {
220
+ out.push(n);
221
+ }
222
+ }
223
+ return out;
224
+ }
225
+ function emptyReport() {
226
+ return { source: 'none', carried: [], declared_missing: [], rejected: [], absent: [], bytes: 0, notices: [] };
227
+ }
228
+ /** Resolver una entrada de `include` a archivos reales. El glob aplica al
229
+ * nombre; el directorio tiene que existir tal cual. */
230
+ async function resolveInclude(projectRoot, rel) {
231
+ const base = path.posix.basename(rel);
232
+ const dirRel = path.posix.dirname(rel);
233
+ const dirAbs = path.join(projectRoot, dirRel === '.' ? '' : dirRel);
234
+ if (!base.includes('*')) {
235
+ try {
236
+ if ((await fs.stat(path.join(dirAbs, base))).isFile()) {
237
+ return [dirRel === '.' ? base : dirRel + '/' + base];
238
+ }
239
+ }
240
+ catch { /* no esta */ }
241
+ return [];
242
+ }
243
+ const re = new RegExp('^' + base.split('*').map((s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('.*') + '$', 'i');
244
+ let names = [];
245
+ try {
246
+ names = (await fs.readdir(dirAbs, { withFileTypes: true }))
247
+ .filter((d) => d.isFile() && re.test(d.name))
248
+ .map((d) => d.name)
249
+ .sort();
250
+ }
251
+ catch {
252
+ return [];
253
+ }
254
+ return names.map((n) => (dirRel === '.' ? n : dirRel + '/' + n));
255
+ }
256
+ /** Acarrear al worktree lo que el proyecto declaro, y medir que entorno le
257
+ * falto de todas formas. Se llama DESPUES del overlay de lo no commiteado:
258
+ * lo declarado gana sobre lo que haya dejado el overlay, porque es lo que
259
+ * el proyecto dijo que su bateria necesita. */
260
+ export async function carryEvidenceEnv(projectRoot, wt, verdict) {
261
+ const rep = emptyReport();
262
+ rep.notices = [...verdict.notices];
263
+ const decl = verdict.declaration;
264
+ if (decl) {
265
+ rep.source = 'declared';
266
+ for (const entry of decl.include) {
267
+ const hits = await resolveInclude(projectRoot, entry);
268
+ if (!hits.length) {
269
+ rep.declared_missing.push(entry);
270
+ continue;
271
+ }
272
+ for (const relPosix of hits) {
273
+ if (rep.carried.length >= decl.max_files) {
274
+ rep.rejected.push(relPosix + ': se alcanzo el tope declarado de ' + decl.max_files + ' archivos');
275
+ continue;
276
+ }
277
+ const src = path.join(projectRoot, relPosix);
278
+ let size = 0;
279
+ try {
280
+ size = (await fs.stat(src)).size;
281
+ }
282
+ catch {
283
+ rep.declared_missing.push(relPosix);
284
+ continue;
285
+ }
286
+ if (rep.bytes + size > decl.max_bytes) {
287
+ rep.rejected.push(relPosix + ': ' + size + ' bytes no entran en el tope declarado de '
288
+ + decl.max_bytes + ' (ya se acarrearon ' + rep.bytes + ')');
289
+ continue;
290
+ }
291
+ const dst = path.join(wt, relPosix);
292
+ try {
293
+ await fs.mkdir(path.dirname(dst), { recursive: true });
294
+ await fs.copyFile(src, dst);
295
+ rep.carried.push(relPosix);
296
+ rep.bytes += size;
297
+ }
298
+ catch (e) {
299
+ rep.rejected.push(relPosix + ': no se pudo copiar -- '
300
+ + (e instanceof Error ? e.message : String(e)).slice(0, 160));
301
+ }
302
+ }
303
+ }
304
+ }
305
+ /* La clasificacion corre SIEMPRE, con declaracion o sin ella: es la
306
+ * mitad que no se puede desactivar. */
307
+ rep.absent = await absentEnvironment(projectRoot, wt);
308
+ return rep;
309
+ }
310
+ /** Una linea para el recibo. Dice lo que llego Y lo que falto: un recibo
311
+ * que solo dijera lo que llego es el silencio que F-13 vino a cerrar. */
312
+ export function describeEvidenceEnv(rep) {
313
+ const bits = [];
314
+ if (rep.source === 'declared') {
315
+ bits.push('entorno declarado: ' + rep.carried.length + ' acarreado(s)'
316
+ + (rep.carried.length ? ' (' + rep.carried.join(', ') + ')' : '')
317
+ + ', ' + rep.bytes + ' bytes');
318
+ }
319
+ if (rep.declared_missing.length) {
320
+ bits.push('DECLARADO Y AUSENTE EN DISCO: ' + rep.declared_missing.join(', '));
321
+ }
322
+ if (rep.rejected.length) {
323
+ bits.push('RECHAZADO: ' + rep.rejected.join('; '));
324
+ }
325
+ if (rep.absent.length) {
326
+ bits.push('ENTORNO INCOMPLETO en el worktree: falto ' + rep.absent.join(', ')
327
+ + ' -- este rojo NO cuenta como fuerte (corrio sin el entorno; declaralo en'
328
+ + ' yujin.forge.json urazuke.evidence_env.include para que viaje)');
329
+ }
330
+ return bits.join('; ');
331
+ }
332
+ /** El texto que la compuerta del cierre agrega cuando el unico rojo que hay
333
+ * corrio sin entorno. Vive aca, al lado de la medicion, para que no haya
334
+ * dos redacciones del mismo motivo. */
335
+ export function envIncompleteCloseHelp(n) {
336
+ return 'y hay ' + n + ' rojo(s) descartado(s) por ENTORNO INCOMPLETO: corrieron en un worktree'
337
+ + ' al que le falto un archivo de entorno, asi que su rojo no prueba que la mutacion fue'
338
+ + ' detectada. Declara los archivos que tu bateria necesita en yujin.forge.json'
339
+ + ' (urazuke.evidence_env.include) y volve a correr el rojo';
340
+ }
341
+ //# sourceMappingURL=evidence_env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence_env.js","sourceRoot":"","sources":["../../src/urazuke/evidence_env.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../src/urazuke/freeze.ts"],"names":[],"mappings":"AAiDA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAEb,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;8CAE0C;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAUpD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwE/G"}
1
+ {"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../src/urazuke/freeze.ts"],"names":[],"mappings":"AAwDA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAEb,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;8CAE0C;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAUpD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwE/G"}
@@ -24,15 +24,22 @@
24
24
  * could overwrite would be that lock without the number.
25
25
  *
26
26
  * 2. THE GATES FREEZE FROM THE COMPILED CATALOGUE, NOT FROM THE PORTAL.
27
- * This is deliberate and it is measured: the published catalogue names
28
- * twelve evaluators, this Forge implements eight, and the four missing
29
- * ones are REQUIRED on the five anchors of the construction loop.
30
- * Freezing the published definition today would freeze five permanently
31
- * unmeasurable steps into the project -- correct by the compatibility
32
- * clause, catastrophic in practice. So a project freezes WHAT IT READS
33
- * TODAY, which is the base, and the first day the difference is exactly
34
- * zero. The portal becomes a legitimate source once those four
35
- * evaluators exist (Pieza 6) and only through the double lock.
27
+ * The reason this was deliberate is now HISTORY, and the number is the
28
+ * record of it: the published catalogue names twelve evaluators, this
29
+ * Forge implements TWELVE since 2026-11-01 (Pieza 6 -- the profiles
30
+ * axis: `pendings_profiles`, `profile_matrix`,
31
+ * `manual_cases_per_profile`), and zero steps are left blocked by an
32
+ * evaluator nobody here can measure. Before that, freezing the
33
+ * published definition froze three permanently unmeasurable steps into
34
+ * the project -- correct by the compatibility clause, catastrophic in
35
+ * practice. The comment has been wrong twice by going stale (it said
36
+ * "eight implemented, four missing, five anchors" after `heuristics`
37
+ * landed): a number in a comment is a citation too, and a stale one
38
+ * reads as current, so tests/urazuke-gates-data.test.ts derives the
39
+ * word from KNOWN_EVALUATORS.length and turns this paragraph red when
40
+ * it drifts. The freeze still comes from the compiled catalogue by
41
+ * default: the portal becomes a source only through the double lock
42
+ * and with the owner's written reason.
36
43
  *
37
44
  * 3. A FREEZE THAT WOULD BE WRONG IS NOT WRITTEN. The prompts resolve
38
45
  * portal-first; if the portal did not answer, resolution falls back to
@@ -1 +1 @@
1
- {"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../src/urazuke/freeze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../src/urazuke/freeze.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,20 @@
1
+ /**
2
+ * URAZUKE GATE -- the mechanical evaluator of each step.
3
+ *
4
+ * One rule: the evaluator never asks the brain. It reads the project root
5
+ * (artifacts by path, CI definitions), the Forge registries (sizing,
6
+ * pendings, evidence receipts) and nothing else. A step is GREEN when every
7
+ * check passes, RED when at least one fails, and OWNER when the method
8
+ * leaves the verification to the owner (nothing mechanical to look at).
9
+ *
10
+ * The result is consumed by three places: the prompt section (so the brain
11
+ * knows what is red BEFORE it claims a step is done), the close gate of
12
+ * workflow tasks (a red step cannot be closed without a written override)
13
+ * and the CLI / panel (so the owner reads the ladder without reading code).
14
+ *
15
+ * ASCII-only.
16
+ */
17
+ import { type UrazukeStatusRule } from './semantics.js';
1
18
  import { type UrazukeEvaluator, type UrazukeStep, type UrazukeStation } from './catalog.js';
2
19
  import type { ResolvedGates } from './gates_data.js';
3
20
  /** The evaluators THIS Forge knows how to measure.
@@ -77,19 +94,50 @@ export interface UrazukeProbes {
77
94
  with_report: number;
78
95
  without_report: number;
79
96
  }>;
97
+ /** Step 5 (Pieza 6): the profiles axis of the open plan items. */
98
+ pendingsProfiles?: () => Promise<import('./profiles.js').PendingsProfilesProbe>;
99
+ /** Step 8 (Pieza 6): the receipt index, so the per-profile e2e result can
100
+ * be contrasted against the registry instead of believed. */
101
+ receiptIndex?: () => Promise<Array<{
102
+ id: string;
103
+ kind: string;
104
+ verdict: string;
105
+ }>>;
80
106
  }
81
107
  export interface UrazukeGateOptions {
82
108
  projectRoot: string;
83
109
  probes?: UrazukeProbes;
84
110
  /** Clock, for freshness checks (tests). */
85
111
  now?: number;
112
+ /** La regla de estado EN VIGOR. Sin ella rige la compilada, que es la
113
+ * misma precedencia que Forge aplicaba antes de que fuera declarable:
114
+ * un llamador que no la pasa evalua exactamente como siempre. */
115
+ status_rule?: UrazukeStatusRule;
86
116
  }
117
+ /** LA REGLA, EN UN SOLO LUGAR. La dice la compuerta cuando un artefacto
118
+ * falta, y la dice la doctrina para todos. Una sola redaccion porque dos
119
+ * se desincronizan -- que es el argumento con el que se eligio esta
120
+ * opcion, y seria pobre cometerlo al implementarla. */
121
+ export declare const ARTIFACT_NAMES_ARE_PROTOCOL: string;
87
122
  /** CI definition present: GitHub Actions, GitLab, Azure, Jenkins, CircleCI,
88
123
  * Bitbucket, or a generic ci/ directory. */
89
124
  export declare function detectCi(root: string): Promise<{
90
125
  ok: boolean;
91
126
  detail: string;
92
127
  }>;
128
+ /** QUE ESTA FALLANDO, en una lista, para todo el que tenga que explicarlo.
129
+ *
130
+ * Vive aca y no en cada consumidor porque M-04 dejo claro el costo de que
131
+ * cada uno arme su propia lista: la compuerta del cierre construia la suya
132
+ * con `r.checks` nada mas, asi que un peldano bloqueado por un insumo
133
+ * ausente salia como "a cargo del dueno" con la lista VACIA -- el dueno
134
+ * veia que no podia cerrar y no que se le estaba pidiendo algo.
135
+ *
136
+ * Incluye lo medido y fallado, y tambien lo que no se pudo medir: dejar
137
+ * afuera lo segundo es como un peldano sin medir termina en pantalla sin
138
+ * ninguna razon al lado. Los insumos van marcados, porque "falta un
139
+ * artefacto" y "falta algo que tenes que traer vos" se arreglan distinto. */
140
+ export declare function failingOfResult(r: UrazukeStepResult): string[];
93
141
  /** Evaluate one step of the new-project ladder, as the caller hands it over.
94
142
  * Prefer `evaluateStepInForce` in production: this one measures whatever
95
143
  * definition it is given, which for a compiled `UrazukeStep` means the
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/urazuke/gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/urazuke/gate.ts"],"names":[],"mappings":"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"}