@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.
- package/dist/bin/yf.js +0 -0
- package/dist/chat/claude.d.ts +8 -0
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/claude_cli.d.ts +23 -0
- package/dist/chat/claude_cli.d.ts.map +1 -1
- package/dist/chat/claude_cli.js +76 -2
- package/dist/chat/claude_cli.js.map +1 -1
- package/dist/chat/doctrine_digest.d.ts.map +1 -1
- package/dist/chat/doctrine_digest.js +2 -1
- package/dist/chat/doctrine_digest.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +11 -0
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/pending.d.ts +11 -0
- package/dist/chat/tools/pending.d.ts.map +1 -1
- package/dist/chat/tools/pending.js +55 -8
- package/dist/chat/tools/pending.js.map +1 -1
- package/dist/chat/tools/shell.d.ts +39 -4
- package/dist/chat/tools/shell.d.ts.map +1 -1
- package/dist/chat/tools/shell.js +167 -7
- package/dist/chat/tools/shell.js.map +1 -1
- package/dist/chat/tools/urazuke.d.ts.map +1 -1
- package/dist/chat/tools/urazuke.js +8 -5
- package/dist/chat/tools/urazuke.js.map +1 -1
- package/dist/chat/urazuke_section.d.ts +26 -4
- package/dist/chat/urazuke_section.d.ts.map +1 -1
- package/dist/chat/urazuke_section.js +115 -9
- package/dist/chat/urazuke_section.js.map +1 -1
- package/dist/commands/pending.d.ts.map +1 -1
- package/dist/commands/pending.js +116 -12
- package/dist/commands/pending.js.map +1 -1
- package/dist/commands/urazuke.d.ts +3 -0
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +80 -3
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/ascii_purity.d.ts +69 -0
- package/dist/core/ascii_purity.d.ts.map +1 -0
- package/dist/core/ascii_purity.js +141 -0
- package/dist/core/ascii_purity.js.map +1 -0
- package/dist/core/battery_stamp.d.ts +85 -0
- package/dist/core/battery_stamp.d.ts.map +1 -0
- package/dist/core/battery_stamp.js +237 -0
- package/dist/core/battery_stamp.js.map +1 -0
- package/dist/core/ci_gaps.d.ts +129 -0
- package/dist/core/ci_gaps.d.ts.map +1 -0
- package/dist/core/ci_gaps.js +352 -0
- package/dist/core/ci_gaps.js.map +1 -0
- package/dist/core/doc_citations.d.ts +133 -0
- package/dist/core/doc_citations.d.ts.map +1 -0
- package/dist/core/doc_citations.js +271 -0
- package/dist/core/doc_citations.js.map +1 -0
- package/dist/docs/doctrine/urazuke.md +173 -2
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +28 -2
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/pending/store.d.ts +29 -0
- package/dist/pending/store.d.ts.map +1 -1
- package/dist/pending/store.js +51 -1
- package/dist/pending/store.js.map +1 -1
- package/dist/pending/types.d.ts +23 -0
- package/dist/pending/types.d.ts.map +1 -1
- package/dist/pending/types.js.map +1 -1
- package/dist/telemetry/usage.d.ts +18 -0
- package/dist/telemetry/usage.d.ts.map +1 -1
- package/dist/telemetry/usage.js +16 -1
- package/dist/telemetry/usage.js.map +1 -1
- package/dist/urazuke/announce.d.ts +7 -0
- package/dist/urazuke/announce.d.ts.map +1 -1
- package/dist/urazuke/announce.js +20 -0
- package/dist/urazuke/announce.js.map +1 -1
- package/dist/urazuke/catalog.d.ts +1 -1
- package/dist/urazuke/catalog.d.ts.map +1 -1
- package/dist/urazuke/catalog.js.map +1 -1
- package/dist/urazuke/close_gate.d.ts +31 -4
- package/dist/urazuke/close_gate.d.ts.map +1 -1
- package/dist/urazuke/close_gate.js +70 -13
- package/dist/urazuke/close_gate.js.map +1 -1
- package/dist/urazuke/current.d.ts +28 -0
- package/dist/urazuke/current.d.ts.map +1 -1
- package/dist/urazuke/current.js +18 -5
- package/dist/urazuke/current.js.map +1 -1
- package/dist/urazuke/cycle.d.ts +3 -0
- package/dist/urazuke/cycle.d.ts.map +1 -1
- package/dist/urazuke/cycle.js +5 -3
- package/dist/urazuke/cycle.js.map +1 -1
- package/dist/urazuke/evidence.d.ts +14 -1
- package/dist/urazuke/evidence.d.ts.map +1 -1
- package/dist/urazuke/evidence.js +88 -2
- package/dist/urazuke/evidence.js.map +1 -1
- package/dist/urazuke/evidence_env.d.ts +78 -0
- package/dist/urazuke/evidence_env.d.ts.map +1 -0
- package/dist/urazuke/evidence_env.js +341 -0
- package/dist/urazuke/evidence_env.js.map +1 -0
- package/dist/urazuke/freeze.d.ts.map +1 -1
- package/dist/urazuke/freeze.js +16 -9
- package/dist/urazuke/freeze.js.map +1 -1
- package/dist/urazuke/gate.d.ts +48 -0
- package/dist/urazuke/gate.d.ts.map +1 -1
- package/dist/urazuke/gate.js +251 -25
- package/dist/urazuke/gate.js.map +1 -1
- package/dist/urazuke/gates_data.d.ts +30 -3
- package/dist/urazuke/gates_data.d.ts.map +1 -1
- package/dist/urazuke/gates_data.js +51 -5
- package/dist/urazuke/gates_data.js.map +1 -1
- package/dist/urazuke/gates_pull.d.ts +40 -0
- package/dist/urazuke/gates_pull.d.ts.map +1 -1
- package/dist/urazuke/gates_pull.js +118 -8
- package/dist/urazuke/gates_pull.js.map +1 -1
- package/dist/urazuke/manual_cases.d.ts +11 -1
- package/dist/urazuke/manual_cases.d.ts.map +1 -1
- package/dist/urazuke/manual_cases.js +1 -0
- package/dist/urazuke/manual_cases.js.map +1 -1
- package/dist/urazuke/overrides.d.ts +107 -0
- package/dist/urazuke/overrides.d.ts.map +1 -0
- package/dist/urazuke/overrides.js +128 -0
- package/dist/urazuke/overrides.js.map +1 -0
- package/dist/urazuke/probes.d.ts.map +1 -1
- package/dist/urazuke/probes.js +51 -0
- package/dist/urazuke/probes.js.map +1 -1
- package/dist/urazuke/profiles.d.ts +135 -0
- package/dist/urazuke/profiles.d.ts.map +1 -0
- package/dist/urazuke/profiles.js +470 -0
- package/dist/urazuke/profiles.js.map +1 -0
- package/dist/urazuke/receipt_audit.d.ts +67 -0
- package/dist/urazuke/receipt_audit.d.ts.map +1 -0
- package/dist/urazuke/receipt_audit.js +103 -0
- package/dist/urazuke/receipt_audit.js.map +1 -0
- package/dist/urazuke/receipts.d.ts +22 -0
- package/dist/urazuke/receipts.d.ts.map +1 -1
- package/dist/urazuke/receipts.js +44 -0
- package/dist/urazuke/receipts.js.map +1 -1
- package/dist/urazuke/report.d.ts +30 -0
- package/dist/urazuke/report.d.ts.map +1 -1
- package/dist/urazuke/report.js +39 -0
- package/dist/urazuke/report.js.map +1 -1
- package/dist/urazuke/reset.d.ts +35 -0
- package/dist/urazuke/reset.d.ts.map +1 -0
- package/dist/urazuke/reset.js +150 -0
- package/dist/urazuke/reset.js.map +1 -0
- package/dist/urazuke/retro.d.ts +5 -1
- package/dist/urazuke/retro.d.ts.map +1 -1
- package/dist/urazuke/retro.js +21 -8
- package/dist/urazuke/retro.js.map +1 -1
- package/dist/urazuke/section.d.ts.map +1 -1
- package/dist/urazuke/section.js +17 -2
- package/dist/urazuke/section.js.map +1 -1
- package/dist/urazuke/semantics.d.ts +173 -0
- package/dist/urazuke/semantics.d.ts.map +1 -0
- package/dist/urazuke/semantics.js +232 -0
- package/dist/urazuke/semantics.js.map +1 -0
- package/dist/urazuke/start.d.ts +8 -0
- package/dist/urazuke/start.d.ts.map +1 -1
- package/dist/urazuke/start.js +10 -2
- package/dist/urazuke/start.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/orchestrator.d.ts.map +1 -1
- package/dist/workflow/orchestrator.js +6 -7
- package/dist/workflow/orchestrator.js.map +1 -1
- package/docs/doctrine/urazuke.md +173 -2
- package/package.json +24 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retro.d.ts","sourceRoot":"","sources":["../../src/urazuke/retro.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retro.d.ts","sourceRoot":"","sources":["../../src/urazuke/retro.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IACrL,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjO;;oBAEgB;IAChB,SAAS,EAAE,OAAO,gBAAgB,EAAE,cAAc,CAAC;IACnD,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpG,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAqElJ;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoDnE;AAED,8DAA8D;AAC9D,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAS9K;AAED;mDACmD;AACnD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAczE"}
|
package/dist/urazuke/retro.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import fs from 'node:fs/promises';
|
|
17
17
|
import path from 'node:path';
|
|
18
|
+
import { renderOverrideRows } from './overrides.js';
|
|
18
19
|
export async function buildRetroNumbers(slug, projectRoot, opts = {}) {
|
|
19
20
|
const now = opts.now ?? Date.now();
|
|
20
21
|
const sinceMs = now - (opts.since_days ?? 90) * 24 * 3600 * 1000;
|
|
@@ -37,7 +38,16 @@ export async function buildRetroNumbers(slug, projectRoot, opts = {}) {
|
|
|
37
38
|
}
|
|
38
39
|
return undefined;
|
|
39
40
|
};
|
|
40
|
-
|
|
41
|
+
/* M-02 -- POR TIPO, no un total. La condicion con la que el dueno aprobo
|
|
42
|
+
* el mecanismo: "que se pueda preguntar cuantos cierres se forzaron por
|
|
43
|
+
* documentacion_sin_rojo_posible y que haya una respuesta. Si el tipo
|
|
44
|
+
* existe pero nadie lo cuenta, es el mismo agujero con mejor nombre -- y
|
|
45
|
+
* peor, porque suena resuelto". El conteo vive en overrides.ts (una sola
|
|
46
|
+
* implementacion para el reporte, el ciclico y cualquier consumidor que
|
|
47
|
+
* venga): contarlo de nuevo aca seria la segunda inferencia que el metodo
|
|
48
|
+
* advierte, y es como se perdio la distincion closed/green en F-07. */
|
|
49
|
+
const { countOverrides } = await import('./overrides.js');
|
|
50
|
+
const overrides = countOverrides(all, (at) => inWindow(atMs(at)));
|
|
41
51
|
const openNow = plan.filter((p) => p.closed_at === undefined);
|
|
42
52
|
const rc = (await readReceipts(slug)).items.filter((r) => inWindow(r.started_at));
|
|
43
53
|
/* summarizeReceipts is the ONLY place that decides a receipt's effective
|
|
@@ -47,12 +57,11 @@ export async function buildRetroNumbers(slug, projectRoot, opts = {}) {
|
|
|
47
57
|
* verdict forever, immune to a later parseCounts fix. */
|
|
48
58
|
const s = summarizeReceipts(rc);
|
|
49
59
|
const ladder = await urazukeLadder(slug, projectRoot);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
l[r.status] += 1;
|
|
60
|
+
/* summarizeLadder es el UNICO que cuenta estados de la escalera (F-07):
|
|
61
|
+
* contarlos aca de nuevo es la segunda inferencia que el metodo
|
|
62
|
+
* advierte, y es como se pierde la distincion closed/green. */
|
|
63
|
+
const { summarizeLadder } = await import('./current.js');
|
|
64
|
+
const l = { ...summarizeLadder(ladder.rows), ...(ladder.kind ? { kind: ladder.kind } : {}) };
|
|
56
65
|
const docs = await fs.readdir(path.join(projectRoot, 'docs')).catch(() => []);
|
|
57
66
|
return {
|
|
58
67
|
since: new Date(sinceMs).toISOString().slice(0, 10),
|
|
@@ -68,6 +77,7 @@ export async function buildRetroNumbers(slug, projectRoot, opts = {}) {
|
|
|
68
77
|
receipts: {
|
|
69
78
|
red_proofs: s.red_proofs, strong_red_proofs: s.strong_red_proofs, greens: s.greens, regressions: s.regressions, e2e: s.e2e,
|
|
70
79
|
quality: s.quality, mutation: s.mutation, false_reds: s.false_reds,
|
|
80
|
+
env_incomplete_reds: s.env_incomplete_reds,
|
|
71
81
|
not_ok: rc.filter((r) => effectiveVerdict(r) !== 'ok').length, total: rc.length,
|
|
72
82
|
},
|
|
73
83
|
overrides,
|
|
@@ -107,7 +117,10 @@ export function renderRetro(n, prompt) {
|
|
|
107
117
|
row('Recibos: calidad', n.receipts.quality),
|
|
108
118
|
row('Recibos: mutacion', n.receipts.mutation),
|
|
109
119
|
row('Recibos con veredicto NOT OK', n.receipts.not_ok),
|
|
110
|
-
row('
|
|
120
|
+
row('Recibos: rojo descartado por ENTORNO INCOMPLETO (F-13)', n.receipts.env_incomplete_reds),
|
|
121
|
+
/* M-02: una fila por tipo. Las etiquetas viajan con el numero
|
|
122
|
+
* (renderOverrideRows) para que no puedan separarse. */
|
|
123
|
+
...renderOverrideRows(n.overrides).map(([k, v]) => row(k, v)),
|
|
111
124
|
row('Escalera: peldanos cerrados / verdes / rojos / a cargo del dueno', n.ladder.closed + ' / ' + n.ladder.green + ' / ' + n.ladder.red + ' / ' + n.ladder.owner + ' de ' + n.ladder.total),
|
|
112
125
|
row('Auditorias en docs/', n.audits_on_disk),
|
|
113
126
|
row('Retrospectivas previas en docs/', n.retros_on_disk),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retro.js","sourceRoot":"","sources":["../../src/urazuke/retro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"retro.js","sourceRoot":"","sources":["../../src/urazuke/retro.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../src/urazuke/section.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAgB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpF,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAAC;IACnC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,2DAA2D;IAC3D,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAeD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../src/urazuke/section.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAgB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpF,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAAC;IACnC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,2DAA2D;IAC3D,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAeD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CA+EvE;AAED,mDAAmD;AACnD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,EAAE,CAYrJ"}
|
package/dist/urazuke/section.js
CHANGED
|
@@ -20,10 +20,17 @@ export function renderUrazukeSection(input) {
|
|
|
20
20
|
'(' + input.code + ', tarea ' + input.task_id + ', ' + input.remaining + ' de ' + input.total + ' tareas abiertas) -- doctrine: urazuke\n' +
|
|
21
21
|
'=================================================================';
|
|
22
22
|
const lines = [];
|
|
23
|
+
/* M-04 -- `owner` tiene DOS causas y no se dicen igual: o la definicion
|
|
24
|
+
* deja el peldano a una firma del dueno, o falta un insumo que el dueno
|
|
25
|
+
* tiene que traer. Decirle "nada mecanico que chequear" a lo segundo es
|
|
26
|
+
* exactamente lo que dejaba pasar el paso sin autorizar. */
|
|
27
|
+
const missingInputs = r.inputs.filter((c) => c.status === 'fail' || c.status === 'unknown');
|
|
28
|
+
const owesInput = r.status === 'owner' && missingInputs.length > 0;
|
|
23
29
|
const state = r.status === 'green' ? 'VERDE'
|
|
24
30
|
: r.status === 'red' ? 'ROJO'
|
|
25
31
|
: r.status === 'unmeasured' ? 'DECLARADO, NO MEDIDO POR ESTA INSTALACION'
|
|
26
|
-
: '
|
|
32
|
+
: owesInput ? 'FRENADO: FALTA UN INSUMO DEL DUENO'
|
|
33
|
+
: 'A CARGO DEL DUENO';
|
|
27
34
|
lines.push('estado mecanico: ' + state + (r.status === 'green'
|
|
28
35
|
? ' -- the artifacts exist; close ' + input.task_id + ' with yujin.pending.close (expediente + evidence) and move on.'
|
|
29
36
|
: r.status === 'red'
|
|
@@ -35,7 +42,15 @@ export function renderUrazukeSection(input) {
|
|
|
35
42
|
? ' -- the definition in force requires an evaluator this installation cannot measure (marked [?] below).'
|
|
36
43
|
+ ' It does NOT close and it is NOT green: say which evaluator is missing, do not approximate it with the'
|
|
37
44
|
+ ' closest one, and do not claim the step done.'
|
|
38
|
-
:
|
|
45
|
+
: owesInput
|
|
46
|
+
/* El insumo es del DUENO: pedirselo, no producirlo. Un insumo
|
|
47
|
+
* inventado por el agente es peor que la ausencia, porque se
|
|
48
|
+
* parece a una decision tomada. */
|
|
49
|
+
? ' -- an OWNER INPUT is missing (insumo), so this step does NOT close and is NOT green:'
|
|
50
|
+
+ ' ' + missingInputs.map((c) => c.label + ' (' + c.path + ')').join('; ')
|
|
51
|
+
+ '. ASK the owner for it; do NOT invent it, do NOT produce it yourself,'
|
|
52
|
+
+ ' and do NOT claim the step done. The artifacts being in place does not authorise the step.'
|
|
53
|
+
: ' -- nothing mechanical to check; the owner verifies with the checklist.'));
|
|
39
54
|
if (r.inputs.length) {
|
|
40
55
|
lines.push('antes de enviar (lo que el DUENO tiene que tener hecho; si falta, pedilo, no lo inventes):');
|
|
41
56
|
for (const c of r.inputs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/urazuke/section.ts"],"names":[],"mappings":"AAoCA,SAAS,IAAI,CAAC,CAAe;IAC3B,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK;QAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK;YAC3B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/C,CAAC;AAED;;qCAEqC;AACrC,SAAS,QAAQ,CAAC,CAAe;IAC/B,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS;QACrB,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,OAAQ,CAAC,GAAG,GAAG,6BAA6B;QACnE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC;IACrE,MAAM,MAAM,GACV,qEAAqE;QACrE,aAAa,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI;QAC7C,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,0CAA0C;QAC1I,mEAAmE,CAAC;IAEtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;QAC1C,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM;YAC3B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,2CAA2C;gBACvE,CAAC,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/urazuke/section.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LA SEMANTICA DEL METODO, COMO DATOS -- la regla de estado, la regla de
|
|
3
|
+
* cierre y lo no negociable (pedido de Pablo, 2026-11-01).
|
|
4
|
+
*
|
|
5
|
+
* EL PORQUE, con el precio medido y no supuesto. El dueno pidio que Urazuke
|
|
6
|
+
* sea declarativo y que se baje del portal. Eso ya valia para los prompts
|
|
7
|
+
* (`prompts_client.ts`) y para la definicion de compuertas (datos desde el
|
|
8
|
+
* 2026-10-23, D-050). Pero tres reglas quedaron compiladas en TypeScript, y
|
|
9
|
+
* el costo de eso se midio con un defecto real: el evaluador calculaba los
|
|
10
|
+
* insumos del dueno y la funcion que decide el estado NO los recibia, asi
|
|
11
|
+
* que un peldano daba verde con el insumo ausente (M-04). Si la regla de
|
|
12
|
+
* estado hubiera sido declarada, el arreglo era un cambio de DATOS: se
|
|
13
|
+
* publica y manana cualquier proyecto se re-lee con la regla correcta. Como
|
|
14
|
+
* era codigo, hizo falta una release de Forge, un publish a npm y un update
|
|
15
|
+
* global en cada maquina -- y mientras eso pasa, todos los proyectos siguen
|
|
16
|
+
* certificando peldanos sin insumo.
|
|
17
|
+
*
|
|
18
|
+
* Este modulo es la forma declarada de esas tres reglas, mas los
|
|
19
|
+
* interpretes PUROS que las aplican. Tres propiedades que lo hacen seguro,
|
|
20
|
+
* y las tres importan:
|
|
21
|
+
*
|
|
22
|
+
* 1. LA AUSENCIA CAE AL DEFAULT, NUNCA A VACIO. Un payload que no declara
|
|
23
|
+
* la regla deja a Forge usando la compilada de hoy. Sin eso, un payload
|
|
24
|
+
* viejo -- o uno recortado -- dejaria a todos los proyectos sin regla
|
|
25
|
+
* de estado, que es peor que tenerla compilada.
|
|
26
|
+
*
|
|
27
|
+
* 2. UNA DECLARACION QUE NO SE ENTIENDE SE RECHAZA ENTERA, EN VOZ ALTA.
|
|
28
|
+
* Un estado que este Forge no conoce no se aproxima al mas parecido:
|
|
29
|
+
* la regla se refusa, responde la compilada, y el aviso lo dice. Media
|
|
30
|
+
* regla aplicada es peor que la regla vieja aplicada entera.
|
|
31
|
+
*
|
|
32
|
+
* 3. LOS TEXTOS DE AYUDA VIAJAN CON EL REQUISITO. La mejor parte de la
|
|
33
|
+
* regla de cierre son los mensajes que dicen QUE falta y COMO
|
|
34
|
+
* conseguirlo, nombrando el verbo exacto. Un cierre que dice "falta
|
|
35
|
+
* red_proof" sin decir como obtenerlo es un retroceso, no una mudanza,
|
|
36
|
+
* asi que el texto es un campo del requisito y no una constante al
|
|
37
|
+
* costado.
|
|
38
|
+
*
|
|
39
|
+
* Este modulo NO publica nada: Forge queda LEYENDO CON RESPALDO. La
|
|
40
|
+
* publicacion del lado del metodo es otro trabajo, en pkuschnirof/urazuke.
|
|
41
|
+
* Asi no hay dia de corte: un Forge nuevo con un portal viejo funciona
|
|
42
|
+
* igual que hoy.
|
|
43
|
+
*
|
|
44
|
+
* ASCII-only.
|
|
45
|
+
*/
|
|
46
|
+
/** Las senales que el interprete sabe medir sobre un peldano evaluado.
|
|
47
|
+
*
|
|
48
|
+
* Es el vocabulario del contrato: la declaracion puede reordenarlas y
|
|
49
|
+
* reasignarles estado, pero no puede inventar una senal -- medirla
|
|
50
|
+
* requiere codigo, y codigo es justo lo que no viaja en el payload. Una
|
|
51
|
+
* senal desconocida se reporta como no leida, nunca se ignora en silencio. */
|
|
52
|
+
export type UrazukeStatusSignal =
|
|
53
|
+
/** Un artefacto o un chequeo de registro FALLO (se midio y esta mal). */
|
|
54
|
+
'check_failed'
|
|
55
|
+
/** Un insumo del dueno falta o no se pudo medir. */
|
|
56
|
+
| 'input_missing'
|
|
57
|
+
/** Un chequeo no se pudo medir (evaluador requerido no implementado). */
|
|
58
|
+
| 'check_unknown'
|
|
59
|
+
/** La definicion declara el evaluador `owner`: lo firma una persona. */
|
|
60
|
+
| 'evaluator_owner'
|
|
61
|
+
/** No quedo nada medible: ningun chequeo real. */
|
|
62
|
+
| 'nothing_measurable';
|
|
63
|
+
export declare const STATUS_SIGNALS: readonly UrazukeStatusSignal[];
|
|
64
|
+
/** Los estados que un peldano puede tener. Cerrado NO esta aca: `closed` es
|
|
65
|
+
* del registro de tareas, no del evaluador (ver la doctrina urazuke). */
|
|
66
|
+
export declare const STATUS_NAMES: readonly string[];
|
|
67
|
+
export interface UrazukeStatusPrecedence {
|
|
68
|
+
when: UrazukeStatusSignal | string;
|
|
69
|
+
status: string;
|
|
70
|
+
}
|
|
71
|
+
export interface UrazukeStatusRule {
|
|
72
|
+
/** De mayor a menor: la primera que se cumple decide. */
|
|
73
|
+
precedence: UrazukeStatusPrecedence[];
|
|
74
|
+
/** El estado cuando ninguna senal de arriba se cumplio. */
|
|
75
|
+
otherwise: string;
|
|
76
|
+
}
|
|
77
|
+
/** LA REGLA COMPILADA -- exactamente la precedencia que Forge aplicaba en
|
|
78
|
+
* codigo antes de esta mudanza, incluido el arreglo de M-04:
|
|
79
|
+
*
|
|
80
|
+
* 1. una falla MEDIDA gana sobre todo: hay algo que arreglar, y decir
|
|
81
|
+
* "no se pudo medir" encima de eso lo esconderia;
|
|
82
|
+
* 2. un insumo del dueno ausente, antes que lo no medible, porque es
|
|
83
|
+
* ACCIONABLE: hay algo concreto que pedirle al dueno. Y es `owner` y
|
|
84
|
+
* no `red` porque un insumo que falta no es un defecto del agente, y
|
|
85
|
+
* mezclarlo con los rojos del codigo es como alguien termina apagando
|
|
86
|
+
* la compuerta entera;
|
|
87
|
+
* 3. nada fallo pero la definicion en vigor pide un evaluador que esta
|
|
88
|
+
* instalacion no mide: ni verde ni firma, nombrado y frenado;
|
|
89
|
+
* 4. la definicion deja el peldano a la firma del dueno;
|
|
90
|
+
* 5. no quedo nada medible: tampoco es verde.
|
|
91
|
+
*
|
|
92
|
+
* Es el DEFAULT, no la verdad: un payload que declare otra precedencia
|
|
93
|
+
* manda. Pero un payload que no declare ninguna deja esto en pie. */
|
|
94
|
+
export declare const COMPILED_STATUS_RULE: UrazukeStatusRule;
|
|
95
|
+
export interface StatusRuleVerdict {
|
|
96
|
+
rule: UrazukeStatusRule;
|
|
97
|
+
/** `declared` = vino del payload; `compiled` = el default de Forge. */
|
|
98
|
+
source: 'declared' | 'compiled';
|
|
99
|
+
/** Lo que hay que decir en voz alta: una regla refusada, una senal que
|
|
100
|
+
* este Forge no sabe medir. Nunca se traga. */
|
|
101
|
+
notices: string[];
|
|
102
|
+
}
|
|
103
|
+
/** Validar y resolver la regla que rige.
|
|
104
|
+
*
|
|
105
|
+
* Refusa ENTERA (y cae al default) cuando:
|
|
106
|
+
* - no es un objeto con `precedence` array y `otherwise` string;
|
|
107
|
+
* - algun `status` no es uno de los cuatro que el evaluador sabe producir;
|
|
108
|
+
* - la precedencia queda vacia despues de descartar senales desconocidas.
|
|
109
|
+
*
|
|
110
|
+
* NO refusa, y avisa, cuando declara una senal que este Forge no mide: esa
|
|
111
|
+
* entrada se reporta como no leida y el resto de la regla se aplica. Es la
|
|
112
|
+
* misma rama de compatibilidad que ya tienen los evaluadores -- el esquema
|
|
113
|
+
* del metodo es append-only, asi que una senal nueva no puede invalidar
|
|
114
|
+
* una regla por lo demas entendible. */
|
|
115
|
+
export declare function resolveStatusRule(raw: unknown): StatusRuleVerdict;
|
|
116
|
+
/** Aplicar una precedencia declarada. El codigo MIDE las senales y
|
|
117
|
+
* OBEDECE el orden; ya no lo decide. */
|
|
118
|
+
export declare function applyStatusRule(rule: UrazukeStatusRule, signals: Record<UrazukeStatusSignal, boolean>): string;
|
|
119
|
+
export interface UrazukeCloseRequirement {
|
|
120
|
+
/** La clase de recibo exigida (`red_proof`, `green`, `regression`, ...). */
|
|
121
|
+
kind: string;
|
|
122
|
+
/** QUE falta y COMO conseguirlo, nombrando el verbo. Es parte del
|
|
123
|
+
* requisito y no una constante al costado, justamente para que un
|
|
124
|
+
* requisito declarado no pueda llegar sin su ayuda. */
|
|
125
|
+
help: string;
|
|
126
|
+
/** Solo para el rojo: exige que distinga conducta (D-037). */
|
|
127
|
+
require_strong?: boolean;
|
|
128
|
+
/** El texto para el caso del rojo debil. */
|
|
129
|
+
strong_help?: string;
|
|
130
|
+
}
|
|
131
|
+
export interface UrazukeCloseRule {
|
|
132
|
+
required_receipts: UrazukeCloseRequirement[];
|
|
133
|
+
}
|
|
134
|
+
/** LA REGLA DE CIERRE COMPILADA -- los tres recibos y los textos verbatim
|
|
135
|
+
* de close_gate.ts antes de la mudanza. Los textos se copian letra por
|
|
136
|
+
* letra a proposito: la bateria que congela la conducta los compara, asi
|
|
137
|
+
* que una reescritura "para mejorarlos" aparece como un cambio de conducta
|
|
138
|
+
* y no se cuela. */
|
|
139
|
+
export declare const COMPILED_CLOSE_RULE: UrazukeCloseRule;
|
|
140
|
+
export interface CloseRuleVerdict {
|
|
141
|
+
rule: UrazukeCloseRule;
|
|
142
|
+
source: 'declared' | 'compiled';
|
|
143
|
+
notices: string[];
|
|
144
|
+
}
|
|
145
|
+
/** Validar y resolver la regla de cierre. Mismo criterio que la de estado:
|
|
146
|
+
* la ausencia cae al default, y una declaracion sin el texto de ayuda se
|
|
147
|
+
* REFUSA -- un requisito sin su "como conseguirlo" es el retroceso que
|
|
148
|
+
* esta mudanza no puede producir. */
|
|
149
|
+
export declare function resolveCloseRule(raw: unknown): CloseRuleVerdict;
|
|
150
|
+
/** Los peldanos no negociables que una definicion declara.
|
|
151
|
+
*
|
|
152
|
+
* LA REGLA DE RESPALDO, y es la que lo hace seguro: si NINGUN peldano de
|
|
153
|
+
* la definicion declara el campo, no se concluye "no hay nada no
|
|
154
|
+
* negociable" -- se cae a la lista compilada. Un payload viejo (o uno
|
|
155
|
+
* recortado) no puede volver salteable todo el metodo por omision. Si al
|
|
156
|
+
* menos uno lo declara, manda la declaracion: ahi hubo una decision.
|
|
157
|
+
*
|
|
158
|
+
* Por que esto es aceptable aunque un payload pudiera SACAR un peldano de
|
|
159
|
+
* la lista: el camino del portal a un proyecto pasa SIEMPRE por el
|
|
160
|
+
* congelado (`resolveGates` lee copia congelada y despues el catalogo
|
|
161
|
+
* compilado; el portal solo lo toca `fetchPublishedGates`, que solo llama
|
|
162
|
+
* el tiron explicito, y ese tiron ESCRIBE el congelado). Y el congelado es
|
|
163
|
+
* idempotente, nunca sobrescribe, y su hash se RECALCULA en vez de leerse,
|
|
164
|
+
* asi que una copia editada a mano se refusa y responde la compilada.
|
|
165
|
+
* Verificado antes de mover. */
|
|
166
|
+
export declare function declaredNonNegotiable(steps: ReadonlyArray<{
|
|
167
|
+
num: number;
|
|
168
|
+
non_negotiable?: boolean;
|
|
169
|
+
}>, compiled: readonly number[]): {
|
|
170
|
+
steps: number[];
|
|
171
|
+
source: 'declared' | 'compiled';
|
|
172
|
+
};
|
|
173
|
+
//# sourceMappingURL=semantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../../src/urazuke/semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAMH;;;;;+EAK+E;AAC/E,MAAM,MAAM,mBAAmB;AAC7B,yEAAyE;AACvE,cAAc;AAChB,oDAAoD;GAClD,eAAe;AACjB,yEAAyE;GACvE,eAAe;AACjB,wEAAwE;GACtE,iBAAiB;AACnB,kDAAkD;GAChD,oBAAoB,CAAC;AAEzB,eAAO,MAAM,cAAc,EAAE,SAAS,mBAAmB,EAExD,CAAC;AAEF;0EAC0E;AAC1E,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAA4C,CAAC;AAEvF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;sEAgBsE;AACtE,eAAO,MAAM,oBAAoB,EAAE,iBASlC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,uEAAuE;IACvE,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC;oDACgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;yCAWyC;AACzC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAuCjE;AAED;yCACyC;AACzC,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,MAAM,CAK9G;AAMD,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb;;4DAEwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C;AAED;;;;qBAIqB;AACrB,eAAO,MAAM,mBAAmB,EAAE,gBAWjC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;sCAGsC;AACtC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAiC/D;AAMD;;;;;;;;;;;;;;;iCAeiC;AACjC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EAC/D,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAA;CAAE,CAOtD"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LA SEMANTICA DEL METODO, COMO DATOS -- la regla de estado, la regla de
|
|
3
|
+
* cierre y lo no negociable (pedido de Pablo, 2026-11-01).
|
|
4
|
+
*
|
|
5
|
+
* EL PORQUE, con el precio medido y no supuesto. El dueno pidio que Urazuke
|
|
6
|
+
* sea declarativo y que se baje del portal. Eso ya valia para los prompts
|
|
7
|
+
* (`prompts_client.ts`) y para la definicion de compuertas (datos desde el
|
|
8
|
+
* 2026-10-23, D-050). Pero tres reglas quedaron compiladas en TypeScript, y
|
|
9
|
+
* el costo de eso se midio con un defecto real: el evaluador calculaba los
|
|
10
|
+
* insumos del dueno y la funcion que decide el estado NO los recibia, asi
|
|
11
|
+
* que un peldano daba verde con el insumo ausente (M-04). Si la regla de
|
|
12
|
+
* estado hubiera sido declarada, el arreglo era un cambio de DATOS: se
|
|
13
|
+
* publica y manana cualquier proyecto se re-lee con la regla correcta. Como
|
|
14
|
+
* era codigo, hizo falta una release de Forge, un publish a npm y un update
|
|
15
|
+
* global en cada maquina -- y mientras eso pasa, todos los proyectos siguen
|
|
16
|
+
* certificando peldanos sin insumo.
|
|
17
|
+
*
|
|
18
|
+
* Este modulo es la forma declarada de esas tres reglas, mas los
|
|
19
|
+
* interpretes PUROS que las aplican. Tres propiedades que lo hacen seguro,
|
|
20
|
+
* y las tres importan:
|
|
21
|
+
*
|
|
22
|
+
* 1. LA AUSENCIA CAE AL DEFAULT, NUNCA A VACIO. Un payload que no declara
|
|
23
|
+
* la regla deja a Forge usando la compilada de hoy. Sin eso, un payload
|
|
24
|
+
* viejo -- o uno recortado -- dejaria a todos los proyectos sin regla
|
|
25
|
+
* de estado, que es peor que tenerla compilada.
|
|
26
|
+
*
|
|
27
|
+
* 2. UNA DECLARACION QUE NO SE ENTIENDE SE RECHAZA ENTERA, EN VOZ ALTA.
|
|
28
|
+
* Un estado que este Forge no conoce no se aproxima al mas parecido:
|
|
29
|
+
* la regla se refusa, responde la compilada, y el aviso lo dice. Media
|
|
30
|
+
* regla aplicada es peor que la regla vieja aplicada entera.
|
|
31
|
+
*
|
|
32
|
+
* 3. LOS TEXTOS DE AYUDA VIAJAN CON EL REQUISITO. La mejor parte de la
|
|
33
|
+
* regla de cierre son los mensajes que dicen QUE falta y COMO
|
|
34
|
+
* conseguirlo, nombrando el verbo exacto. Un cierre que dice "falta
|
|
35
|
+
* red_proof" sin decir como obtenerlo es un retroceso, no una mudanza,
|
|
36
|
+
* asi que el texto es un campo del requisito y no una constante al
|
|
37
|
+
* costado.
|
|
38
|
+
*
|
|
39
|
+
* Este modulo NO publica nada: Forge queda LEYENDO CON RESPALDO. La
|
|
40
|
+
* publicacion del lado del metodo es otro trabajo, en pkuschnirof/urazuke.
|
|
41
|
+
* Asi no hay dia de corte: un Forge nuevo con un portal viejo funciona
|
|
42
|
+
* igual que hoy.
|
|
43
|
+
*
|
|
44
|
+
* ASCII-only.
|
|
45
|
+
*/
|
|
46
|
+
export const STATUS_SIGNALS = [
|
|
47
|
+
'check_failed', 'input_missing', 'check_unknown', 'evaluator_owner', 'nothing_measurable',
|
|
48
|
+
];
|
|
49
|
+
/** Los estados que un peldano puede tener. Cerrado NO esta aca: `closed` es
|
|
50
|
+
* del registro de tareas, no del evaluador (ver la doctrina urazuke). */
|
|
51
|
+
export const STATUS_NAMES = ['green', 'red', 'owner', 'unmeasured'];
|
|
52
|
+
/** LA REGLA COMPILADA -- exactamente la precedencia que Forge aplicaba en
|
|
53
|
+
* codigo antes de esta mudanza, incluido el arreglo de M-04:
|
|
54
|
+
*
|
|
55
|
+
* 1. una falla MEDIDA gana sobre todo: hay algo que arreglar, y decir
|
|
56
|
+
* "no se pudo medir" encima de eso lo esconderia;
|
|
57
|
+
* 2. un insumo del dueno ausente, antes que lo no medible, porque es
|
|
58
|
+
* ACCIONABLE: hay algo concreto que pedirle al dueno. Y es `owner` y
|
|
59
|
+
* no `red` porque un insumo que falta no es un defecto del agente, y
|
|
60
|
+
* mezclarlo con los rojos del codigo es como alguien termina apagando
|
|
61
|
+
* la compuerta entera;
|
|
62
|
+
* 3. nada fallo pero la definicion en vigor pide un evaluador que esta
|
|
63
|
+
* instalacion no mide: ni verde ni firma, nombrado y frenado;
|
|
64
|
+
* 4. la definicion deja el peldano a la firma del dueno;
|
|
65
|
+
* 5. no quedo nada medible: tampoco es verde.
|
|
66
|
+
*
|
|
67
|
+
* Es el DEFAULT, no la verdad: un payload que declare otra precedencia
|
|
68
|
+
* manda. Pero un payload que no declare ninguna deja esto en pie. */
|
|
69
|
+
export const COMPILED_STATUS_RULE = {
|
|
70
|
+
precedence: [
|
|
71
|
+
{ when: 'check_failed', status: 'red' },
|
|
72
|
+
{ when: 'input_missing', status: 'owner' },
|
|
73
|
+
{ when: 'check_unknown', status: 'unmeasured' },
|
|
74
|
+
{ when: 'evaluator_owner', status: 'owner' },
|
|
75
|
+
{ when: 'nothing_measurable', status: 'unmeasured' },
|
|
76
|
+
],
|
|
77
|
+
otherwise: 'green',
|
|
78
|
+
};
|
|
79
|
+
/** Validar y resolver la regla que rige.
|
|
80
|
+
*
|
|
81
|
+
* Refusa ENTERA (y cae al default) cuando:
|
|
82
|
+
* - no es un objeto con `precedence` array y `otherwise` string;
|
|
83
|
+
* - algun `status` no es uno de los cuatro que el evaluador sabe producir;
|
|
84
|
+
* - la precedencia queda vacia despues de descartar senales desconocidas.
|
|
85
|
+
*
|
|
86
|
+
* NO refusa, y avisa, cuando declara una senal que este Forge no mide: esa
|
|
87
|
+
* entrada se reporta como no leida y el resto de la regla se aplica. Es la
|
|
88
|
+
* misma rama de compatibilidad que ya tienen los evaluadores -- el esquema
|
|
89
|
+
* del metodo es append-only, asi que una senal nueva no puede invalidar
|
|
90
|
+
* una regla por lo demas entendible. */
|
|
91
|
+
export function resolveStatusRule(raw) {
|
|
92
|
+
const fallback = (why) => ({
|
|
93
|
+
rule: COMPILED_STATUS_RULE,
|
|
94
|
+
source: 'compiled',
|
|
95
|
+
notices: [why + ' -- rige la regla de estado compilada en Forge, no una regla a medias.'],
|
|
96
|
+
});
|
|
97
|
+
if (raw === undefined || raw === null) {
|
|
98
|
+
return { rule: COMPILED_STATUS_RULE, source: 'compiled', notices: [] };
|
|
99
|
+
}
|
|
100
|
+
if (typeof raw !== 'object')
|
|
101
|
+
return fallback('la regla de estado declarada no es un objeto');
|
|
102
|
+
const o = raw;
|
|
103
|
+
if (!Array.isArray(o.precedence))
|
|
104
|
+
return fallback('la regla de estado declarada no trae `precedence` como lista');
|
|
105
|
+
if (typeof o.otherwise !== 'string')
|
|
106
|
+
return fallback('la regla de estado declarada no trae `otherwise`');
|
|
107
|
+
if (!STATUS_NAMES.includes(o.otherwise)) {
|
|
108
|
+
return fallback('la regla de estado declara el estado final "' + o.otherwise + '", que este Forge no sabe producir (conoce: ' + STATUS_NAMES.join(', ') + ')');
|
|
109
|
+
}
|
|
110
|
+
const precedence = [];
|
|
111
|
+
const notices = [];
|
|
112
|
+
for (const e of o.precedence) {
|
|
113
|
+
if (!e || typeof e !== 'object')
|
|
114
|
+
return fallback('la regla de estado trae una entrada de precedencia que no es un objeto');
|
|
115
|
+
const { when, status } = e;
|
|
116
|
+
if (typeof when !== 'string' || typeof status !== 'string') {
|
|
117
|
+
return fallback('la regla de estado trae una entrada de precedencia sin `when` o sin `status`');
|
|
118
|
+
}
|
|
119
|
+
if (!STATUS_NAMES.includes(status)) {
|
|
120
|
+
return fallback('la regla de estado asigna el estado "' + status + '" a la senal "' + when
|
|
121
|
+
+ '", y este Forge no sabe producirlo (conoce: ' + STATUS_NAMES.join(', ') + ')');
|
|
122
|
+
}
|
|
123
|
+
if (!STATUS_SIGNALS.includes(when)) {
|
|
124
|
+
notices.push('la regla de estado declara la senal "' + when + '", que esta instalacion no sabe medir:'
|
|
125
|
+
+ ' esa entrada NO se aplica (medidas: ' + STATUS_SIGNALS.join(', ') + ').');
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
precedence.push({ when, status });
|
|
129
|
+
}
|
|
130
|
+
if (!precedence.length) {
|
|
131
|
+
return fallback('la regla de estado declarada no dejo ninguna senal que esta instalacion sepa medir');
|
|
132
|
+
}
|
|
133
|
+
return { rule: { precedence, otherwise: o.otherwise }, source: 'declared', notices };
|
|
134
|
+
}
|
|
135
|
+
/** Aplicar una precedencia declarada. El codigo MIDE las senales y
|
|
136
|
+
* OBEDECE el orden; ya no lo decide. */
|
|
137
|
+
export function applyStatusRule(rule, signals) {
|
|
138
|
+
for (const e of rule.precedence) {
|
|
139
|
+
if (signals[e.when])
|
|
140
|
+
return e.status;
|
|
141
|
+
}
|
|
142
|
+
return rule.otherwise;
|
|
143
|
+
}
|
|
144
|
+
/** LA REGLA DE CIERRE COMPILADA -- los tres recibos y los textos verbatim
|
|
145
|
+
* de close_gate.ts antes de la mudanza. Los textos se copian letra por
|
|
146
|
+
* letra a proposito: la bateria que congela la conducta los compara, asi
|
|
147
|
+
* que una reescritura "para mejorarlos" aparece como un cambio de conducta
|
|
148
|
+
* y no se cuela. */
|
|
149
|
+
export const COMPILED_CLOSE_RULE = {
|
|
150
|
+
required_receipts: [
|
|
151
|
+
{
|
|
152
|
+
kind: 'red_proof',
|
|
153
|
+
help: 'red_proof (the new test failing against the base: yujin.evidence.run kind=red_proof)',
|
|
154
|
+
require_strong: true,
|
|
155
|
+
strong_help: 'a red that tells behaviour apart (D-037): the only red on record is a file that does not load at the base (the module did not exist). Add a behavioural red (base_ref with the module present) or a mutation red (yujin.evidence.run kind=red_proof mutation_diff=<a diff that plants one defect in the new code>)',
|
|
156
|
+
},
|
|
157
|
+
{ kind: 'green', help: 'green (the new test passing on HEAD: yujin.evidence.run kind=green)' },
|
|
158
|
+
{ kind: 'regression', help: 'regression (the neighbouring suite still green: yujin.evidence.run kind=regression)' },
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
/** Validar y resolver la regla de cierre. Mismo criterio que la de estado:
|
|
162
|
+
* la ausencia cae al default, y una declaracion sin el texto de ayuda se
|
|
163
|
+
* REFUSA -- un requisito sin su "como conseguirlo" es el retroceso que
|
|
164
|
+
* esta mudanza no puede producir. */
|
|
165
|
+
export function resolveCloseRule(raw) {
|
|
166
|
+
const fallback = (why) => ({
|
|
167
|
+
rule: COMPILED_CLOSE_RULE,
|
|
168
|
+
source: 'compiled',
|
|
169
|
+
notices: [why + ' -- rige la regla de cierre compilada en Forge.'],
|
|
170
|
+
});
|
|
171
|
+
if (raw === undefined || raw === null) {
|
|
172
|
+
return { rule: COMPILED_CLOSE_RULE, source: 'compiled', notices: [] };
|
|
173
|
+
}
|
|
174
|
+
if (typeof raw !== 'object')
|
|
175
|
+
return fallback('la regla de cierre declarada no es un objeto');
|
|
176
|
+
const list = raw.required_receipts;
|
|
177
|
+
if (!Array.isArray(list))
|
|
178
|
+
return fallback('la regla de cierre declarada no trae `required_receipts` como lista');
|
|
179
|
+
if (!list.length)
|
|
180
|
+
return fallback('la regla de cierre declarada no exige ningun recibo');
|
|
181
|
+
const out = [];
|
|
182
|
+
for (const e of list) {
|
|
183
|
+
if (!e || typeof e !== 'object')
|
|
184
|
+
return fallback('la regla de cierre trae un requisito que no es un objeto');
|
|
185
|
+
const r = e;
|
|
186
|
+
if (typeof r.kind !== 'string' || !r.kind.trim())
|
|
187
|
+
return fallback('la regla de cierre trae un requisito sin `kind`');
|
|
188
|
+
if (typeof r.help !== 'string' || r.help.trim().length < 10) {
|
|
189
|
+
return fallback('el requisito "' + r.kind + '" de la regla de cierre no trae su texto de ayuda:'
|
|
190
|
+
+ ' un cierre que dice que falta y no dice como conseguirlo es un retroceso');
|
|
191
|
+
}
|
|
192
|
+
const strong = r.require_strong === true;
|
|
193
|
+
if (strong && (typeof r.strong_help !== 'string' || r.strong_help.trim().length < 10)) {
|
|
194
|
+
return fallback('el requisito "' + r.kind + '" exige un rojo que distinga conducta y no trae el texto que explica como producirlo');
|
|
195
|
+
}
|
|
196
|
+
out.push({
|
|
197
|
+
kind: r.kind,
|
|
198
|
+
help: r.help,
|
|
199
|
+
...(strong ? { require_strong: true, strong_help: String(r.strong_help) } : {}),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return { rule: { required_receipts: out }, source: 'declared', notices: [] };
|
|
203
|
+
}
|
|
204
|
+
/* ===================================================================
|
|
205
|
+
* 3. LO NO NEGOCIABLE
|
|
206
|
+
* ================================================================= */
|
|
207
|
+
/** Los peldanos no negociables que una definicion declara.
|
|
208
|
+
*
|
|
209
|
+
* LA REGLA DE RESPALDO, y es la que lo hace seguro: si NINGUN peldano de
|
|
210
|
+
* la definicion declara el campo, no se concluye "no hay nada no
|
|
211
|
+
* negociable" -- se cae a la lista compilada. Un payload viejo (o uno
|
|
212
|
+
* recortado) no puede volver salteable todo el metodo por omision. Si al
|
|
213
|
+
* menos uno lo declara, manda la declaracion: ahi hubo una decision.
|
|
214
|
+
*
|
|
215
|
+
* Por que esto es aceptable aunque un payload pudiera SACAR un peldano de
|
|
216
|
+
* la lista: el camino del portal a un proyecto pasa SIEMPRE por el
|
|
217
|
+
* congelado (`resolveGates` lee copia congelada y despues el catalogo
|
|
218
|
+
* compilado; el portal solo lo toca `fetchPublishedGates`, que solo llama
|
|
219
|
+
* el tiron explicito, y ese tiron ESCRIBE el congelado). Y el congelado es
|
|
220
|
+
* idempotente, nunca sobrescribe, y su hash se RECALCULA en vez de leerse,
|
|
221
|
+
* asi que una copia editada a mano se refusa y responde la compilada.
|
|
222
|
+
* Verificado antes de mover. */
|
|
223
|
+
export function declaredNonNegotiable(steps, compiled) {
|
|
224
|
+
const declares = steps.some((s) => typeof s.non_negotiable === 'boolean');
|
|
225
|
+
if (!declares)
|
|
226
|
+
return { steps: [...compiled], source: 'compiled' };
|
|
227
|
+
return {
|
|
228
|
+
steps: steps.filter((s) => s.non_negotiable === true).map((s) => s.num).sort((a, b) => a - b),
|
|
229
|
+
source: 'declared',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantics.js","sourceRoot":"","sources":["../../src/urazuke/semantics.ts"],"names":[],"mappings":"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"}
|
package/dist/urazuke/start.d.ts
CHANGED
|
@@ -31,6 +31,12 @@ export interface UrazukeStartHint {
|
|
|
31
31
|
kind: string;
|
|
32
32
|
name?: string;
|
|
33
33
|
}>;
|
|
34
|
+
/** Lo que el slug ya tenia de antes (F-08). El estado vive fuera del
|
|
35
|
+
* repositorio, asi que vaciar el workspace no lo borra y la corrida
|
|
36
|
+
* nueva lo hereda: el arranque lo dice en vez de heredarlo callado. */
|
|
37
|
+
history?: import('./reset.js').ProjectStateHistory;
|
|
38
|
+
/** Una linea para el dueno. Presente solo cuando hay historia. */
|
|
39
|
+
history_notice?: string;
|
|
34
40
|
}
|
|
35
41
|
export interface UrazukeStartNext {
|
|
36
42
|
/** `00`..`23` or `N0`..`N7`. */
|
|
@@ -46,6 +52,8 @@ export interface UrazukeStartNext {
|
|
|
46
52
|
export interface UrazukeStartResult {
|
|
47
53
|
ok: boolean;
|
|
48
54
|
created: boolean;
|
|
55
|
+
/** F-08 -- el aviso de historia previa del slug, cuando hay. */
|
|
56
|
+
history_notice?: string;
|
|
49
57
|
kind?: string;
|
|
50
58
|
code?: string;
|
|
51
59
|
reason: string;
|