@nac3/forge-cli 1.19.5 → 1.20.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.d.ts.map +1 -1
- package/dist/bin/yf.js +2 -1
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/instance_lock.d.ts +98 -0
- package/dist/chat/instance_lock.d.ts.map +1 -1
- package/dist/chat/instance_lock.js +135 -11
- package/dist/chat/instance_lock.js.map +1 -1
- package/dist/chat/instances.d.ts +84 -0
- package/dist/chat/instances.d.ts.map +1 -0
- package/dist/chat/instances.js +224 -0
- package/dist/chat/instances.js.map +1 -0
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +276 -5
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +64 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/evidence.d.ts.map +1 -1
- package/dist/chat/tools/evidence.js +7 -3
- package/dist/chat/tools/evidence.js.map +1 -1
- package/dist/commands/task.d.ts +13 -0
- package/dist/commands/task.d.ts.map +1 -1
- package/dist/commands/task.js +134 -0
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/upgrade.d.ts +15 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +63 -0
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +68 -1
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/forge_profile.d.ts.map +1 -1
- package/dist/core/forge_profile.js +41 -4
- package/dist/core/forge_profile.js.map +1 -1
- package/dist/core/whats_new.d.ts.map +1 -1
- package/dist/core/whats_new.js +14 -0
- package/dist/core/whats_new.js.map +1 -1
- package/dist/urazuke/current.d.ts +5 -0
- package/dist/urazuke/current.d.ts.map +1 -1
- package/dist/urazuke/current.js +14 -3
- package/dist/urazuke/current.js.map +1 -1
- package/dist/urazuke/cycle.d.ts.map +1 -1
- package/dist/urazuke/cycle.js +6 -2
- package/dist/urazuke/cycle.js.map +1 -1
- package/dist/urazuke/evidence.d.ts.map +1 -1
- package/dist/urazuke/evidence.js +9 -1
- package/dist/urazuke/evidence.js.map +1 -1
- package/dist/urazuke/freeze.d.ts +29 -0
- package/dist/urazuke/freeze.d.ts.map +1 -0
- package/dist/urazuke/freeze.js +150 -0
- package/dist/urazuke/freeze.js.map +1 -0
- package/dist/urazuke/gate.d.ts +18 -1
- package/dist/urazuke/gate.d.ts.map +1 -1
- package/dist/urazuke/gate.js +21 -0
- package/dist/urazuke/gate.js.map +1 -1
- package/dist/urazuke/gates_data.d.ts +219 -0
- package/dist/urazuke/gates_data.d.ts.map +1 -0
- package/dist/urazuke/gates_data.js +441 -0
- package/dist/urazuke/gates_data.js.map +1 -0
- package/dist/urazuke/prompts_client.d.ts +6 -0
- package/dist/urazuke/prompts_client.d.ts.map +1 -1
- package/dist/urazuke/prompts_client.js +1 -1
- package/dist/urazuke/prompts_client.js.map +1 -1
- package/dist/urazuke/receipts.d.ts +53 -1
- package/dist/urazuke/receipts.d.ts.map +1 -1
- package/dist/urazuke/receipts.js +65 -3
- package/dist/urazuke/receipts.js.map +1 -1
- package/dist/urazuke/ruleset.d.ts +56 -0
- package/dist/urazuke/ruleset.d.ts.map +1 -0
- package/dist/urazuke/ruleset.js +159 -0
- package/dist/urazuke/ruleset.js.map +1 -0
- package/dist/urazuke/start.d.ts +5 -0
- package/dist/urazuke/start.d.ts.map +1 -1
- package/dist/urazuke/start.js +39 -2
- package/dist/urazuke/start.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE GATE DEFINITION AS DATA -- reading the gates the method publishes
|
|
3
|
+
* (PND-165, Pieza 2).
|
|
4
|
+
*
|
|
5
|
+
* Until 2026-10-23 the mechanical definition of the gates lived compiled
|
|
6
|
+
* inside Forge (`catalog.ts`): 24 steps, 8 stations, one evaluator each. On
|
|
7
|
+
* that day the method took ownership of it and started publishing it as
|
|
8
|
+
* data (D-050), the same way it already published the prompts. So a
|
|
9
|
+
* requirement of the method no longer waits for a Forge release -- which is
|
|
10
|
+
* the point -- and a project can now be re-read under a rule that did not
|
|
11
|
+
* exist when its evidence was produced, which is the danger. The owner's
|
|
12
|
+
* decision bounds that: a project starts and finishes on the same version of
|
|
13
|
+
* the method unless somebody presses the double lock.
|
|
14
|
+
*
|
|
15
|
+
* This module is the READ side of that decision. Three rules it enforces,
|
|
16
|
+
* each one because its absence turns the freeze into a label:
|
|
17
|
+
*
|
|
18
|
+
* 1. PRECEDENCE: the copy frozen in the project wins over everything.
|
|
19
|
+
* Second, and only second, Forge's own compiled catalogue. The portal
|
|
20
|
+
* is NOT on this path -- `fetchPublishedGates` exists for the explicit
|
|
21
|
+
* pull (Pieza 4) and nothing here calls it. A read that can reach the
|
|
22
|
+
* network is a read that can change a project's rule between two
|
|
23
|
+
* turns, and no decision asked for that.
|
|
24
|
+
*
|
|
25
|
+
* 2. THE HASH IS RECOMPUTED, NEVER READ. A frozen copy edited by hand or
|
|
26
|
+
* truncated by a merge has to be detectable without the network. A
|
|
27
|
+
* stamp that only repeats what the file claims about itself is a
|
|
28
|
+
* rotulo, not a seal (adenda 2). A frozen copy whose recomputed hash
|
|
29
|
+
* disagrees with its own declared value is REFUSED, loudly, and the
|
|
30
|
+
* compiled catalogue answers instead -- a tampered rule must never be
|
|
31
|
+
* the rule in force.
|
|
32
|
+
*
|
|
33
|
+
* 3. AN UNKNOWN EVALUATOR IS NOT A GREEN AND NOT AN APPROXIMATION. The
|
|
34
|
+
* published catalogue already declares twelve evaluators and this
|
|
35
|
+
* Forge implements eight. The method's own compatibility clause says
|
|
36
|
+
* what to do: a REQUIRED evaluator this installation cannot measure is
|
|
37
|
+
* reported as "declared, not measured by this installation", naming it,
|
|
38
|
+
* and the step does not advance. Approximating with the closest
|
|
39
|
+
* evaluator, or ignoring the block, is forbidden. Zero silent damage.
|
|
40
|
+
*
|
|
41
|
+
* What this module does NOT do: evaluate. It resolves WHICH definition is in
|
|
42
|
+
* force and hands it over in one shape, whatever its source. `gate.ts`
|
|
43
|
+
* measures.
|
|
44
|
+
*
|
|
45
|
+
* ASCII-only.
|
|
46
|
+
*/
|
|
47
|
+
import fs from 'node:fs/promises';
|
|
48
|
+
import path from 'node:path';
|
|
49
|
+
import { URAZUKE_STEPS, URAZUKE_LEGACY_STATIONS, } from './catalog.js';
|
|
50
|
+
import { canonicalJson, sha256Hex, compiledGatesHash, FORGE_COMPILED_GATES_VERSION, } from './ruleset.js';
|
|
51
|
+
/** Where the method publishes it. Only `fetchPublishedGates` reads this,
|
|
52
|
+
* and only the explicit pull calls that. */
|
|
53
|
+
export const DEFAULT_GATES_URL = 'https://yujin.app/urazuke/api/gates.json';
|
|
54
|
+
/** The frozen copy, inside the project. Next to the prompt overrides
|
|
55
|
+
* (`.forge/urazuke-prompts.json`) on purpose: the two halves of the same
|
|
56
|
+
* freeze belong together, and a reader looking for one finds the other.
|
|
57
|
+
*
|
|
58
|
+
* This file is meant to be COMMITTED. The prevailing convention for
|
|
59
|
+
* `.forge/` in a project is local state -- `workflow-config.json` is in
|
|
60
|
+
* .gitignore -- and the freeze has to break that convention to mean
|
|
61
|
+
* anything: a copy that does not travel with the repository is a freeze
|
|
62
|
+
* that thaws on the next clone and on every CI run, where no copy is found
|
|
63
|
+
* and the newest definition answers instead. A lock that only closes on one
|
|
64
|
+
* laptop. See docs/PROPUESTA_URAZUKE_VERSION_POR_PROYECTO_2026_10_22.md. */
|
|
65
|
+
export const GATES_FROZEN_REL = path.join('.forge', 'urazuke-gates.json');
|
|
66
|
+
export function frozenGatesPath(projectRoot) {
|
|
67
|
+
return path.join(projectRoot, GATES_FROZEN_REL);
|
|
68
|
+
}
|
|
69
|
+
/** The highest published schema this Forge knows how to read. A file that
|
|
70
|
+
* declares more than this is not refused -- the schema is append-only by
|
|
71
|
+
* the method's own rule -- but what it adds is reported as unread rather
|
|
72
|
+
* than silently dropped. */
|
|
73
|
+
export const MAX_SCHEMA_VERSION = 2;
|
|
74
|
+
/* ---------------- the hash ---------------- */
|
|
75
|
+
/** The payload the declared hash covers, in the order the file declares.
|
|
76
|
+
* Built from `content_hash.covers` and not from a list of our own: the
|
|
77
|
+
* method owns which keys bear the requirement, and a consumer that keeps
|
|
78
|
+
* its own list stops agreeing the day the method adds one. */
|
|
79
|
+
export function coveredPayload(file) {
|
|
80
|
+
const out = {};
|
|
81
|
+
for (const k of file.content_hash.covers)
|
|
82
|
+
out[k] = file[k];
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
/** Recompute the content hash over the canonicalised covered payload and
|
|
86
|
+
* compare. The canonical form is the one the method declares
|
|
87
|
+
* (`json_sorted_keys_codepoint_no_whitespace_utf8`, sha256, hex lower),
|
|
88
|
+
* which is also the one `ruleset.ts` uses -- so one implementation serves
|
|
89
|
+
* both the seal and this check, and the two sides cannot drift apart. */
|
|
90
|
+
export function verifyContentHash(file) {
|
|
91
|
+
const recomputed = sha256Hex(canonicalJson(coveredPayload(file)));
|
|
92
|
+
const accounted = new Set([...file.content_hash.covers, ...file.content_hash.excludes]);
|
|
93
|
+
const uncovered = Object.keys(file).filter((k) => !accounted.has(k)).sort();
|
|
94
|
+
return {
|
|
95
|
+
ok: recomputed === file.content_hash.value && uncovered.length === 0,
|
|
96
|
+
declared: file.content_hash.value,
|
|
97
|
+
recomputed,
|
|
98
|
+
uncovered,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/* ---------------- validation ---------------- */
|
|
102
|
+
function isArtifactArray(x) {
|
|
103
|
+
return Array.isArray(x) && x.every((a) => a && typeof a === 'object' && typeof a.path === 'string');
|
|
104
|
+
}
|
|
105
|
+
function validStepArray(x, label, problems) {
|
|
106
|
+
if (!Array.isArray(x) || !x.length) {
|
|
107
|
+
problems.push(label + ': missing or empty');
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
let ok = true;
|
|
111
|
+
for (const s of x) {
|
|
112
|
+
if (!s || typeof s !== 'object') {
|
|
113
|
+
problems.push(label + ': a non-object entry');
|
|
114
|
+
ok = false;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (typeof s.id !== 'string' || !s.id) {
|
|
118
|
+
problems.push(label + ': an entry with no id');
|
|
119
|
+
ok = false;
|
|
120
|
+
}
|
|
121
|
+
if (typeof s.num !== 'number') {
|
|
122
|
+
problems.push(label + ' ' + s.id + ': num is not a number');
|
|
123
|
+
ok = false;
|
|
124
|
+
}
|
|
125
|
+
if (typeof s.title !== 'string') {
|
|
126
|
+
problems.push(label + ' ' + s.id + ': title is not a string');
|
|
127
|
+
ok = false;
|
|
128
|
+
}
|
|
129
|
+
if (s.inputs !== undefined && !isArtifactArray(s.inputs)) {
|
|
130
|
+
problems.push(label + ' ' + s.id + ': inputs is not a list of artifacts');
|
|
131
|
+
ok = false;
|
|
132
|
+
}
|
|
133
|
+
if (s.artifacts !== undefined && !isArtifactArray(s.artifacts)) {
|
|
134
|
+
problems.push(label + ' ' + s.id + ': artifacts is not a list of artifacts');
|
|
135
|
+
ok = false;
|
|
136
|
+
}
|
|
137
|
+
if (s.evaluators !== undefined) {
|
|
138
|
+
if (!Array.isArray(s.evaluators) || !s.evaluators.every((e) => e && typeof e.name === 'string')) {
|
|
139
|
+
problems.push(label + ' ' + s.id + ': evaluators is not a list of {name}');
|
|
140
|
+
ok = false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return ok;
|
|
145
|
+
}
|
|
146
|
+
/** Validate a payload that claims to be a published gate definition.
|
|
147
|
+
*
|
|
148
|
+
* Refuses on: a broken shape, or a hash that does not recompute. The second
|
|
149
|
+
* one is the whole point of Pieza 2 -- a definition we cannot verify is not
|
|
150
|
+
* a definition we may enforce, because the only thing that makes a frozen
|
|
151
|
+
* copy trustworthy offline is that its content reproduces its own seal. */
|
|
152
|
+
export function validatePublishedGates(raw) {
|
|
153
|
+
const problems = [];
|
|
154
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
155
|
+
return { ok: false, problems: ['not a JSON object'] };
|
|
156
|
+
}
|
|
157
|
+
const f = raw;
|
|
158
|
+
if (typeof f.schema_version !== 'number')
|
|
159
|
+
problems.push('schema_version missing or not a number');
|
|
160
|
+
if (typeof f.catalog_version !== 'string' || !f.catalog_version)
|
|
161
|
+
problems.push('catalog_version missing');
|
|
162
|
+
const ch = f.content_hash;
|
|
163
|
+
if (!ch || typeof ch !== 'object' || typeof ch.value !== 'string'
|
|
164
|
+
|| !Array.isArray(ch.covers) || !Array.isArray(ch.excludes)) {
|
|
165
|
+
problems.push('content_hash missing or incomplete (needs value + covers + excludes)');
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
if (ch.algo && ch.algo !== 'sha256')
|
|
169
|
+
problems.push('content_hash.algo is ' + ch.algo + ', and this reader only does sha256');
|
|
170
|
+
if (ch.canonical_form && ch.canonical_form !== 'json_sorted_keys_codepoint_no_whitespace_utf8') {
|
|
171
|
+
problems.push('content_hash.canonical_form is ' + ch.canonical_form + ', not the form this reader canonicalises to');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
validStepArray(f.steps, 'steps', problems);
|
|
175
|
+
validStepArray(f.stations, 'stations', problems);
|
|
176
|
+
if (problems.length)
|
|
177
|
+
return { ok: false, problems };
|
|
178
|
+
const hash = verifyContentHash(f);
|
|
179
|
+
if (!hash.ok) {
|
|
180
|
+
if (hash.recomputed !== hash.declared) {
|
|
181
|
+
problems.push('content hash does not recompute: declared ' + hash.declared.slice(0, 16)
|
|
182
|
+
+ ', recomputed ' + hash.recomputed.slice(0, 16)
|
|
183
|
+
+ ' -- the content and its seal disagree, so this definition cannot be trusted');
|
|
184
|
+
}
|
|
185
|
+
if (hash.uncovered.length) {
|
|
186
|
+
problems.push('top-level key(s) neither covered nor excluded by content_hash: ' + hash.uncovered.join(', ')
|
|
187
|
+
+ ' -- content nobody protects, so an edit there would still match the seal');
|
|
188
|
+
}
|
|
189
|
+
return { ok: false, problems, hash };
|
|
190
|
+
}
|
|
191
|
+
const res = { ok: true, file: f, problems, hash };
|
|
192
|
+
if (f.schema_version > MAX_SCHEMA_VERSION)
|
|
193
|
+
res.newer_schema = f.schema_version;
|
|
194
|
+
return res;
|
|
195
|
+
}
|
|
196
|
+
function artifactsOf(xs) {
|
|
197
|
+
return (xs ?? []).map((a) => ({
|
|
198
|
+
path: a.path,
|
|
199
|
+
...(a.must_contain ? { must_contain: [...a.must_contain] } : {}),
|
|
200
|
+
...(a.should_contain ? { should_contain: [...a.should_contain] } : {}),
|
|
201
|
+
...(a.min_bytes != null ? { min_bytes: a.min_bytes } : {}),
|
|
202
|
+
...(a.fresh_days != null ? { fresh_days: a.fresh_days } : {}),
|
|
203
|
+
...(a.label ? { label: a.label } : {}),
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
/** `verify` entries are strings in the base and objects with `{text,
|
|
207
|
+
* since_schema, anchor}` in what the method added. Both are owner prose;
|
|
208
|
+
* flatten to text so a consumer does not have to know the difference. */
|
|
209
|
+
function verifyOf(xs) {
|
|
210
|
+
const out = [];
|
|
211
|
+
for (const v of xs ?? []) {
|
|
212
|
+
if (typeof v === 'string')
|
|
213
|
+
out.push(v);
|
|
214
|
+
else if (v && typeof v === 'object' && typeof v.text === 'string') {
|
|
215
|
+
out.push(v.text);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
220
|
+
function evaluatorsOf(xs) {
|
|
221
|
+
return (xs ?? []).map((e) => ({
|
|
222
|
+
name: e.name,
|
|
223
|
+
required: e.required !== false,
|
|
224
|
+
since_schema: e.since_schema ?? 1,
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
function publishedStepToResolved(s) {
|
|
228
|
+
return {
|
|
229
|
+
num: s.num,
|
|
230
|
+
id: s.id,
|
|
231
|
+
title: s.title,
|
|
232
|
+
...(s.tramo ? { tramo: s.tramo } : {}),
|
|
233
|
+
...(s.summary ? { summary: s.summary } : {}),
|
|
234
|
+
...(s.form ? { form: s.form } : {}),
|
|
235
|
+
...(s.mandatory ? { mandatory: s.mandatory } : {}),
|
|
236
|
+
prompt_key: s.prompt_key,
|
|
237
|
+
inputs: artifactsOf(s.inputs),
|
|
238
|
+
artifacts: artifactsOf(s.artifacts),
|
|
239
|
+
verify: verifyOf(s.verify),
|
|
240
|
+
evaluators: evaluatorsOf(s.evaluators),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/** The published definition, in the resolved shape. */
|
|
244
|
+
export function publishedToResolved(file, source, hash) {
|
|
245
|
+
const notices = [];
|
|
246
|
+
if (file.schema_version > MAX_SCHEMA_VERSION) {
|
|
247
|
+
notices.push('the definition declares schema ' + file.schema_version + ' and this Forge reads up to '
|
|
248
|
+
+ MAX_SCHEMA_VERSION + ': what schema ' + file.schema_version + ' adds is not read here. '
|
|
249
|
+
+ 'Nothing is approximated -- an evaluator this installation does not implement is reported as declared, not measured.');
|
|
250
|
+
}
|
|
251
|
+
const declared = (file.evaluators ?? []).map((e) => e.name).filter((n) => typeof n === 'string').sort();
|
|
252
|
+
return {
|
|
253
|
+
source,
|
|
254
|
+
version: file.catalog_version,
|
|
255
|
+
hash,
|
|
256
|
+
schema_version: file.schema_version,
|
|
257
|
+
steps: file.steps.map(publishedStepToResolved),
|
|
258
|
+
stations: (file.stations ?? []).map(publishedStepToResolved),
|
|
259
|
+
declared_evaluators: declared,
|
|
260
|
+
notices,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/** Forge's own compiled catalogue, in the same resolved shape.
|
|
264
|
+
*
|
|
265
|
+
* This is the BASE: what Forge enforced before the method took ownership,
|
|
266
|
+
* and what a project freezes when it is started by a Forge that has not
|
|
267
|
+
* pulled a published definition. Every step declares exactly one evaluator
|
|
268
|
+
* and every one of them is required -- the compiled catalogue has no notion
|
|
269
|
+
* of an optional evaluator, which is correct, because it also has no
|
|
270
|
+
* evaluator it cannot measure. */
|
|
271
|
+
export function compiledGatesResolved() {
|
|
272
|
+
const one = (name) => [{ name, required: true, since_schema: 1 }];
|
|
273
|
+
return {
|
|
274
|
+
source: 'compiled',
|
|
275
|
+
version: FORGE_COMPILED_GATES_VERSION,
|
|
276
|
+
hash: compiledGatesHash(),
|
|
277
|
+
schema_version: 1,
|
|
278
|
+
steps: URAZUKE_STEPS.map((s) => ({
|
|
279
|
+
num: s.num, id: s.id, title: s.title, tramo: s.tramo, summary: s.summary,
|
|
280
|
+
form: s.form, mandatory: s.mandatory, prompt_key: s.prompt_key,
|
|
281
|
+
inputs: s.inputs.map((a) => ({ ...a })),
|
|
282
|
+
artifacts: s.artifacts.map((a) => ({ ...a })),
|
|
283
|
+
verify: [...s.verify],
|
|
284
|
+
evaluators: one(s.evaluator),
|
|
285
|
+
})),
|
|
286
|
+
stations: URAZUKE_LEGACY_STATIONS.map((s) => ({
|
|
287
|
+
num: s.num, id: s.id, title: s.title, summary: s.summary, prompt_key: s.prompt_key,
|
|
288
|
+
inputs: [],
|
|
289
|
+
artifacts: s.artifacts.map((a) => ({ ...a })),
|
|
290
|
+
verify: [...s.verify],
|
|
291
|
+
evaluators: one(s.evaluator),
|
|
292
|
+
})),
|
|
293
|
+
declared_evaluators: [...new Set([
|
|
294
|
+
...URAZUKE_STEPS.map((s) => s.evaluator),
|
|
295
|
+
...URAZUKE_LEGACY_STATIONS.map((s) => s.evaluator),
|
|
296
|
+
])].sort(),
|
|
297
|
+
notices: [],
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
export async function readFrozenGates(projectRoot) {
|
|
301
|
+
let text;
|
|
302
|
+
try {
|
|
303
|
+
text = await fs.readFile(frozenGatesPath(projectRoot), 'utf8');
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
return { absent: true };
|
|
307
|
+
}
|
|
308
|
+
let raw;
|
|
309
|
+
try {
|
|
310
|
+
raw = JSON.parse(text);
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
return { absent: false, refused: ['the frozen copy is not valid JSON: ' + e.message] };
|
|
314
|
+
}
|
|
315
|
+
const v = validatePublishedGates(raw);
|
|
316
|
+
if (!v.ok || !v.file || !v.hash)
|
|
317
|
+
return { absent: false, refused: v.problems };
|
|
318
|
+
return { absent: false, gates: publishedToResolved(v.file, 'project', v.hash.recomputed) };
|
|
319
|
+
}
|
|
320
|
+
/** Write the frozen copy. Atomic (tmp + rename) for the same reason the
|
|
321
|
+
* prompt overrides are: a half-written definition read by the next turn is
|
|
322
|
+
* a project with no rule at all. */
|
|
323
|
+
export async function writeFrozenGates(projectRoot, file) {
|
|
324
|
+
const f = frozenGatesPath(projectRoot);
|
|
325
|
+
await fs.mkdir(path.dirname(f), { recursive: true });
|
|
326
|
+
const tmp = f + '.tmp';
|
|
327
|
+
await fs.writeFile(tmp, JSON.stringify(file, null, 2) + '\n', 'utf8');
|
|
328
|
+
await fs.rename(tmp, f);
|
|
329
|
+
}
|
|
330
|
+
/** Serialise the compiled catalogue INTO the published shape, sealed with a
|
|
331
|
+
* hash computed the published way, so a frozen copy of the base is read
|
|
332
|
+
* back by exactly the same path as a frozen copy of the portal's.
|
|
333
|
+
*
|
|
334
|
+
* This is what "freeze every existing project with what it reads today"
|
|
335
|
+
* writes: the base, unchanged, with nothing added. The first day the
|
|
336
|
+
* difference is exactly zero and it can be demonstrated -- that is the
|
|
337
|
+
* criterion the whole proposal rests on. */
|
|
338
|
+
export function compiledAsPublishedFile() {
|
|
339
|
+
const r = compiledGatesResolved();
|
|
340
|
+
const body = {
|
|
341
|
+
schema_version: 1,
|
|
342
|
+
catalog_version: FORGE_COMPILED_GATES_VERSION,
|
|
343
|
+
evaluators: r.declared_evaluators.map((name) => ({ name, since_schema: 1 })),
|
|
344
|
+
steps: r.steps.map((s) => ({
|
|
345
|
+
num: s.num, id: s.id, tramo: s.tramo, title: s.title, summary: s.summary,
|
|
346
|
+
form: s.form, mandatory: s.mandatory, prompt_key: s.prompt_key,
|
|
347
|
+
inputs: s.inputs, artifacts: s.artifacts, verify: s.verify,
|
|
348
|
+
evaluators: s.evaluators.map((e) => ({ name: e.name, since_schema: e.since_schema, required: e.required })),
|
|
349
|
+
})),
|
|
350
|
+
stations: r.stations.map((s) => ({
|
|
351
|
+
num: s.num, id: s.id, title: s.title, summary: s.summary, prompt_key: s.prompt_key,
|
|
352
|
+
artifacts: s.artifacts, verify: s.verify,
|
|
353
|
+
evaluators: s.evaluators.map((e) => ({ name: e.name, since_schema: e.since_schema, required: e.required })),
|
|
354
|
+
})),
|
|
355
|
+
};
|
|
356
|
+
const covers = ['schema_version', 'catalog_version', 'evaluators', 'steps', 'stations'];
|
|
357
|
+
const excludes = ['content_hash', 'what', 'frozen_at', 'frozen_from'];
|
|
358
|
+
const payload = {};
|
|
359
|
+
for (const k of covers)
|
|
360
|
+
payload[k] = body[k];
|
|
361
|
+
const file = {
|
|
362
|
+
what: 'The gate definition frozen for this project (PND-165). Forge reads THIS'
|
|
363
|
+
+ ' before its own compiled catalogue and before the portal. It is meant to be'
|
|
364
|
+
+ ' committed: a copy that does not travel with the repository thaws on the next'
|
|
365
|
+
+ ' clone. Replaced only by the explicit double lock, never on its own.',
|
|
366
|
+
...body,
|
|
367
|
+
content_hash: {
|
|
368
|
+
algo: 'sha256',
|
|
369
|
+
encoding: 'hex_lower',
|
|
370
|
+
canonical_form: 'json_sorted_keys_codepoint_no_whitespace_utf8',
|
|
371
|
+
covers,
|
|
372
|
+
excludes,
|
|
373
|
+
value: sha256Hex(canonicalJson(payload)),
|
|
374
|
+
note: 'Recomputed on every read, never trusted as read: that is what makes a'
|
|
375
|
+
+ ' hand-edited or merge-truncated copy detectable without the network.',
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
return file;
|
|
379
|
+
}
|
|
380
|
+
/* ---------------- resolution ---------------- */
|
|
381
|
+
/** WHICH gate definition is in force for this project.
|
|
382
|
+
*
|
|
383
|
+
* Precedence: the project's frozen copy, then the compiled catalogue. The
|
|
384
|
+
* portal is deliberately absent -- see rule 1 at the top of this file. A
|
|
385
|
+
* refused frozen copy does NOT promote the portal and does not fail the
|
|
386
|
+
* read: it falls back to the compiled catalogue, which is the safe state
|
|
387
|
+
* (nothing can tighten without an install), and it says so. */
|
|
388
|
+
export async function resolveGates(projectRoot) {
|
|
389
|
+
if (projectRoot) {
|
|
390
|
+
const frozen = await readFrozenGates(projectRoot);
|
|
391
|
+
if (frozen.gates)
|
|
392
|
+
return frozen.gates;
|
|
393
|
+
if (frozen.refused?.length) {
|
|
394
|
+
const base = compiledGatesResolved();
|
|
395
|
+
return {
|
|
396
|
+
...base,
|
|
397
|
+
notices: [
|
|
398
|
+
'the frozen gate definition of this project was REFUSED and the compiled catalogue is'
|
|
399
|
+
+ ' judging instead: ' + frozen.refused.join('; ')
|
|
400
|
+
+ '. Until it is restored, this project is not being measured by the version it froze.',
|
|
401
|
+
...base.notices,
|
|
402
|
+
],
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return compiledGatesResolved();
|
|
407
|
+
}
|
|
408
|
+
/** Bring the published definition over the network.
|
|
409
|
+
*
|
|
410
|
+
* NOT part of `resolveGates`, on purpose and by decision: the owner asked
|
|
411
|
+
* that a project start and finish on the same version of the method, so
|
|
412
|
+
* the only legitimate caller is the explicit double lock (Pieza 4), which
|
|
413
|
+
* has to show how many green steps would turn red BEFORE it writes
|
|
414
|
+
* anything. A validated file or nothing -- an unverifiable definition is
|
|
415
|
+
* never handed back. */
|
|
416
|
+
export async function fetchPublishedGates(opts = {}) {
|
|
417
|
+
const url = opts.url ?? process.env['YF_URAZUKE_GATES_URL'] ?? DEFAULT_GATES_URL;
|
|
418
|
+
const impl = opts.fetchImpl ?? fetch;
|
|
419
|
+
const ctrl = new AbortController();
|
|
420
|
+
const timer = setTimeout(() => ctrl.abort(), opts.timeout_ms ?? 10000);
|
|
421
|
+
try {
|
|
422
|
+
const r = await impl(url, { signal: ctrl.signal });
|
|
423
|
+
if (!r.ok)
|
|
424
|
+
return { ok: false, problems: ['GET ' + url + ' answered ' + r.status] };
|
|
425
|
+
return validatePublishedGates(await r.json());
|
|
426
|
+
}
|
|
427
|
+
catch (e) {
|
|
428
|
+
return { ok: false, problems: ['GET ' + url + ' failed: ' + e.message] };
|
|
429
|
+
}
|
|
430
|
+
finally {
|
|
431
|
+
clearTimeout(timer);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
/* ---------------- what this installation can measure ---------------- */
|
|
435
|
+
/** One line for a report or the CLI. */
|
|
436
|
+
export function renderGatesSource(g) {
|
|
437
|
+
return g.version + ' [' + g.source + '] schema ' + g.schema_version
|
|
438
|
+
+ ' hash ' + g.hash.slice(0, 12)
|
|
439
|
+
+ ' -- ' + g.steps.length + ' steps, ' + g.stations.length + ' stations';
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=gates_data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates_data.js","sourceRoot":"","sources":["../../src/urazuke/gates_data.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,12 @@ export interface FetchOptions {
|
|
|
31
31
|
url?: string;
|
|
32
32
|
/** Ignore the fresh TTL and hit the network. */
|
|
33
33
|
force?: boolean;
|
|
34
|
+
/** Never touch the network: the cache (fresh or stale) or nothing. Same
|
|
35
|
+
* behaviour as YF_URAZUKE_OFFLINE=1, available per call for the readers
|
|
36
|
+
* that must not be able to block on a socket -- writing an evidence
|
|
37
|
+
* receipt, for one: the stamp's prompt version is informative, and a
|
|
38
|
+
* portal that moved is not a reason for the receipt to wait. */
|
|
39
|
+
offline?: boolean;
|
|
34
40
|
timeout_ms?: number;
|
|
35
41
|
}
|
|
36
42
|
/** The published prompts: fresh cache, else network (then cached), else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts_client.d.ts","sourceRoot":"","sources":["../../src/urazuke/prompts_client.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,mBAAmB,+CAA+C,CAAC;AAIhF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAC3C,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAcD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAYD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAYrF;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlG;AAgBD,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;wDACwD;AACxD,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CAuBnJ;AAED;;;;uCAIuC;AACvC,wBAAsB,uBAAuB,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAarL;AAED,yEAAyE;AACzE,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAUvH;AAED,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;yEACqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;sDAQsD;AACtD,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CActH"}
|
|
1
|
+
{"version":3,"file":"prompts_client.d.ts","sourceRoot":"","sources":["../../src/urazuke/prompts_client.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,mBAAmB,+CAA+C,CAAC;AAIhF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAC3C,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAcD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAYD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAYrF;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlG;AAgBD,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;qEAIiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;wDACwD;AACxD,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CAuBnJ;AAED;;;;uCAIuC;AACvC,wBAAsB,uBAAuB,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAarL;AAED,yEAAyE;AACzE,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAUvH;AAED,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;yEACqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;sDAQsD;AACtD,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CActH"}
|
|
@@ -97,7 +97,7 @@ export async function loadPublishedPrompts(opts = {}) {
|
|
|
97
97
|
const age = cached ? Date.now() - cached.fetched_at : Infinity;
|
|
98
98
|
if (cached && !opts.force && age < FRESH_MS)
|
|
99
99
|
return { payload: cached.payload, source: 'cache' };
|
|
100
|
-
if (process.env['YF_URAZUKE_OFFLINE'] === '1') {
|
|
100
|
+
if (opts.offline || process.env['YF_URAZUKE_OFFLINE'] === '1') {
|
|
101
101
|
return cached && age < STALE_MS ? { payload: cached.payload, source: 'cache' } : undefined;
|
|
102
102
|
}
|
|
103
103
|
const url = opts.url ?? process.env['YF_URAZUKE_PROMPTS_URL'] ?? DEFAULT_PROMPTS_URL;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts_client.js","sourceRoot":"","sources":["../../src/urazuke/prompts_client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompts_client.js","sourceRoot":"","sources":["../../src/urazuke/prompts_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RulesetStamp } from './ruleset.js';
|
|
1
2
|
export type ReceiptKind = 'red_proof' | 'green' | 'regression' | 'e2e' | 'quality' | 'mutation' | 'load' | 'other';
|
|
2
3
|
export interface ReceiptCounts {
|
|
3
4
|
passed?: number;
|
|
@@ -44,6 +45,11 @@ export interface Receipt {
|
|
|
44
45
|
/** The verdict Forge derived: for red_proof, failed > 0 and exit != 0;
|
|
45
46
|
* for green/regression/e2e, exit == 0 and failed == 0. */
|
|
46
47
|
verdict: 'ok' | 'not_ok';
|
|
48
|
+
/** Which version of the method judged this run (PND-165, Pieza 1).
|
|
49
|
+
* Optional on purpose: a receipt written before 2026-10-23 has none, and
|
|
50
|
+
* that reads as "the rule is unknown", never as "the rule in force
|
|
51
|
+
* today". See ruleset.ts for why the two must not be conflated. */
|
|
52
|
+
ruleset?: RulesetStamp;
|
|
47
53
|
note?: string;
|
|
48
54
|
}
|
|
49
55
|
interface ReceiptFile {
|
|
@@ -54,6 +60,31 @@ interface ReceiptFile {
|
|
|
54
60
|
}
|
|
55
61
|
export declare function readReceipts(slug: string): Promise<ReceiptFile>;
|
|
56
62
|
export type ReceiptInput = Omit<Receipt, 'id' | 'verdict'>;
|
|
63
|
+
/** The runner SAID it ran zero tests.
|
|
64
|
+
*
|
|
65
|
+
* The discriminator is a reported TOTAL of zero, and nothing weaker. That
|
|
66
|
+
* is deliberate, and it is where the care is: `{ failed: 0 }` on its own
|
|
67
|
+
* is NOT an empty run. `yf urazuke quality check` prints "0 violations, 0
|
|
68
|
+
* dup blocks" and parses to exactly that -- a gate reporting no findings,
|
|
69
|
+
* which is a real pass. Three live receipts look like that (turnera
|
|
70
|
+
* RCP-026/047, turnera-heredada RCP-012) and calling them empty would be a
|
|
71
|
+
* false accusation, the mirror image of the bug being fixed.
|
|
72
|
+
*
|
|
73
|
+
* What an empty run looks like, from the data: node's test runner printing
|
|
74
|
+
* `1..0 / # tests 0 / # pass 0 / # fail 0` because a quoted glob never
|
|
75
|
+
* expanded in cmd.exe. The runner answered the question -- zero -- so the
|
|
76
|
+
* claim is measured, not missing, and it is a claim of no evidence. */
|
|
77
|
+
export declare function emptyRun(counts: ReceiptCounts): boolean;
|
|
78
|
+
/** The runner reported no test counts at all, so the exit code is the only
|
|
79
|
+
* signal there is.
|
|
80
|
+
*
|
|
81
|
+
* This is NOT a defect and must not be scored as one: a command like
|
|
82
|
+
* `python docs/_verificar_insumos.py` or `node build/build.mjs` is a check,
|
|
83
|
+
* not a suite, and its exit code is the whole of its evidence (nine such
|
|
84
|
+
* receipts on disk). It is worth NAMING, though, because a reader deserves
|
|
85
|
+
* to know the difference between "212 tests passed" and "a script exited
|
|
86
|
+
* 0" -- both are green, and they are not the same weight of proof. */
|
|
87
|
+
export declare function exitOnlyEvidence(counts: ReceiptCounts): boolean;
|
|
57
88
|
/** Derive the verdict from the kind + exit code + counts, via the polarity
|
|
58
89
|
* table above. Pure. */
|
|
59
90
|
export declare function receiptVerdict(kind: ReceiptKind, exit_code: number, counts: ReceiptCounts, mode?: 'base' | 'mutation'): 'ok' | 'not_ok';
|
|
@@ -70,7 +101,14 @@ export declare function effectiveCounts(r: Receipt): ReceiptCounts;
|
|
|
70
101
|
* the day parseCounts learns a new runner's output. This is the one place
|
|
71
102
|
* that re-derives it, from the polarity table declared above. */
|
|
72
103
|
export declare function effectiveVerdict(r: Receipt): 'ok' | 'not_ok';
|
|
73
|
-
/** Append a receipt. The id and the
|
|
104
|
+
/** Append a receipt. The id, the verdict and the ruleset stamp are assigned
|
|
105
|
+
* here.
|
|
106
|
+
*
|
|
107
|
+
* The stamp is taken HERE rather than at each call site on purpose: this is
|
|
108
|
+
* the only door a receipt can come through, so stamping it here is the one
|
|
109
|
+
* arrangement in which a future writer cannot forget. A caller may pass its
|
|
110
|
+
* own stamp (a run judged under a ruleset it resolved itself), and nothing
|
|
111
|
+
* else may leave the field empty. */
|
|
74
112
|
export declare function appendReceipt(slug: string, input: ReceiptInput): Promise<Receipt>;
|
|
75
113
|
export interface ReceiptSummary {
|
|
76
114
|
red_proofs: number;
|
|
@@ -86,6 +124,15 @@ export interface ReceiptSummary {
|
|
|
86
124
|
* as its own signal rather than silently dropped: a false red is
|
|
87
125
|
* information the owner wants to see, not noise (D-042). */
|
|
88
126
|
false_reds: number;
|
|
127
|
+
/** Receipts of a positive kind whose runner reported zero tests. They do
|
|
128
|
+
* NOT count as greens any more (PND-170), and they are surfaced instead
|
|
129
|
+
* of dropped: a step that lost a green needs to say which receipt it
|
|
130
|
+
* lost and why, or the owner just sees a number go down. */
|
|
131
|
+
empty_runs: number;
|
|
132
|
+
/** Of the greens counted above, how many rest on an exit code alone --
|
|
133
|
+
* no test counts were reported. Not a fault: a check script is legitimate
|
|
134
|
+
* evidence. Counted so the reader can tell the weight of what they have. */
|
|
135
|
+
exit_only: number;
|
|
89
136
|
last_at?: number;
|
|
90
137
|
}
|
|
91
138
|
/** A red that tells behaviour apart (D-037): tests failed, or a mutant was
|
|
@@ -103,6 +150,11 @@ export declare function isStrongRed(r: Receipt): boolean;
|
|
|
103
150
|
export declare function summarizeReceipts(items: Receipt[], filter?: {
|
|
104
151
|
pending_id?: string;
|
|
105
152
|
}): ReceiptSummary;
|
|
153
|
+
/** A positive receipt that exited 0 over zero tests. Computed off the
|
|
154
|
+
* receipt rather than through effectiveVerdict, for the same reason
|
|
155
|
+
* isFalseRed is: this IS the thing that makes the verdict not_ok, so
|
|
156
|
+
* filtering by the verdict first would always find none. */
|
|
157
|
+
export declare function isEmptyRun(r: Receipt): boolean;
|
|
106
158
|
/** Parse pass/fail counts out of common test runner output (vitest, jest,
|
|
107
159
|
* mocha, pytest, go test, playwright, junit-ish). Best effort; returns
|
|
108
160
|
* what it recognised. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../src/urazuke/receipts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../src/urazuke/receipts.ts"],"names":[],"mappings":"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"}
|