@nac3/forge-cli 1.21.4 → 1.23.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 (108) hide show
  1. package/dist/chat/bridge.d.ts +43 -1
  2. package/dist/chat/bridge.d.ts.map +1 -1
  3. package/dist/chat/bridge.js +176 -31
  4. package/dist/chat/bridge.js.map +1 -1
  5. package/dist/chat/bridge_inbox.d.ts +143 -0
  6. package/dist/chat/bridge_inbox.d.ts.map +1 -0
  7. package/dist/chat/bridge_inbox.js +219 -0
  8. package/dist/chat/bridge_inbox.js.map +1 -0
  9. package/dist/chat/claude.d.ts +10 -0
  10. package/dist/chat/claude.d.ts.map +1 -1
  11. package/dist/chat/claude.js.map +1 -1
  12. package/dist/chat/panel.d.ts.map +1 -1
  13. package/dist/chat/panel.js +142 -15
  14. package/dist/chat/panel.js.map +1 -1
  15. package/dist/chat/recent_sessions_recap.d.ts.map +1 -1
  16. package/dist/chat/recent_sessions_recap.js +18 -6
  17. package/dist/chat/recent_sessions_recap.js.map +1 -1
  18. package/dist/chat/server.d.ts +1 -1
  19. package/dist/chat/server.d.ts.map +1 -1
  20. package/dist/chat/server.js +346 -53
  21. package/dist/chat/server.js.map +1 -1
  22. package/dist/chat/tools/bridge_verbs.d.ts +10 -0
  23. package/dist/chat/tools/bridge_verbs.d.ts.map +1 -1
  24. package/dist/chat/tools/bridge_verbs.js +66 -3
  25. package/dist/chat/tools/bridge_verbs.js.map +1 -1
  26. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
  27. package/dist/chat/tools/nac3_invoke.js +20 -3
  28. package/dist/chat/tools/nac3_invoke.js.map +1 -1
  29. package/dist/chat/tools/pending.d.ts.map +1 -1
  30. package/dist/chat/tools/pending.js +19 -2
  31. package/dist/chat/tools/pending.js.map +1 -1
  32. package/dist/chat/tools.d.ts +6 -0
  33. package/dist/chat/tools.d.ts.map +1 -1
  34. package/dist/chat/tools.js +4 -0
  35. package/dist/chat/tools.js.map +1 -1
  36. package/dist/chat/turn_control.d.ts +2 -0
  37. package/dist/chat/turn_control.d.ts.map +1 -1
  38. package/dist/chat/turn_control.js +30 -1
  39. package/dist/chat/turn_control.js.map +1 -1
  40. package/dist/commands/urazuke.d.ts.map +1 -1
  41. package/dist/commands/urazuke.js +68 -6
  42. package/dist/commands/urazuke.js.map +1 -1
  43. package/dist/core/cost_router.d.ts +7 -0
  44. package/dist/core/cost_router.d.ts.map +1 -1
  45. package/dist/core/cost_router.js +8 -5
  46. package/dist/core/cost_router.js.map +1 -1
  47. package/dist/core/limits_config.d.ts +37 -6
  48. package/dist/core/limits_config.d.ts.map +1 -1
  49. package/dist/core/limits_config.js +74 -8
  50. package/dist/core/limits_config.js.map +1 -1
  51. package/dist/nac3/danger_zone.d.ts +39 -0
  52. package/dist/nac3/danger_zone.d.ts.map +1 -0
  53. package/dist/nac3/danger_zone.js +31 -0
  54. package/dist/nac3/danger_zone.js.map +1 -0
  55. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  56. package/dist/nac3/internal_manifest.js +33 -0
  57. package/dist/nac3/internal_manifest.js.map +1 -1
  58. package/dist/pending/store.d.ts +7 -0
  59. package/dist/pending/store.d.ts.map +1 -1
  60. package/dist/pending/store.js +41 -0
  61. package/dist/pending/store.js.map +1 -1
  62. package/dist/urazuke/catalog.d.ts +1 -1
  63. package/dist/urazuke/catalog.d.ts.map +1 -1
  64. package/dist/urazuke/catalog.js.map +1 -1
  65. package/dist/urazuke/gate.d.ts.map +1 -1
  66. package/dist/urazuke/gate.js +98 -6
  67. package/dist/urazuke/gate.js.map +1 -1
  68. package/dist/urazuke/gates_data.d.ts +8 -1
  69. package/dist/urazuke/gates_data.d.ts.map +1 -1
  70. package/dist/urazuke/gates_data.js +25 -3
  71. package/dist/urazuke/gates_data.js.map +1 -1
  72. package/dist/urazuke/heuristics.d.ts +108 -0
  73. package/dist/urazuke/heuristics.d.ts.map +1 -0
  74. package/dist/urazuke/heuristics.js +248 -0
  75. package/dist/urazuke/heuristics.js.map +1 -0
  76. package/dist/urazuke/manual_cases.d.ts +31 -0
  77. package/dist/urazuke/manual_cases.d.ts.map +1 -0
  78. package/dist/urazuke/manual_cases.js +87 -0
  79. package/dist/urazuke/manual_cases.js.map +1 -0
  80. package/dist/urazuke/project_config.d.ts +25 -0
  81. package/dist/urazuke/project_config.d.ts.map +1 -0
  82. package/dist/urazuke/project_config.js +65 -0
  83. package/dist/urazuke/project_config.js.map +1 -0
  84. package/dist/urazuke/quality.d.ts +0 -8
  85. package/dist/urazuke/quality.d.ts.map +1 -1
  86. package/dist/urazuke/quality.js +4 -29
  87. package/dist/urazuke/quality.js.map +1 -1
  88. package/dist/urazuke/scoreboard.d.ts +85 -0
  89. package/dist/urazuke/scoreboard.d.ts.map +1 -0
  90. package/dist/urazuke/scoreboard.js +260 -0
  91. package/dist/urazuke/scoreboard.js.map +1 -0
  92. package/dist/version.d.ts +1 -1
  93. package/dist/version.js +1 -1
  94. package/dist/workflow/orchestrator.d.ts +7 -3
  95. package/dist/workflow/orchestrator.d.ts.map +1 -1
  96. package/dist/workflow/orchestrator.js +1 -1
  97. package/dist/workflow/orchestrator.js.map +1 -1
  98. package/package.json +1 -1
  99. package/src/i18n/catalogs/ar.json +558 -550
  100. package/src/i18n/catalogs/de.json +558 -550
  101. package/src/i18n/catalogs/en.json +558 -550
  102. package/src/i18n/catalogs/es.json +558 -550
  103. package/src/i18n/catalogs/fr.json +558 -550
  104. package/src/i18n/catalogs/hi.json +558 -550
  105. package/src/i18n/catalogs/it.json +558 -550
  106. package/src/i18n/catalogs/ja.json +558 -550
  107. package/src/i18n/catalogs/pt.json +558 -550
  108. package/src/i18n/catalogs/zh.json +558 -550
@@ -457,15 +457,33 @@ export function compiledAsPublishedFile() {
457
457
  * refused frozen copy does NOT promote the portal and does not fail the
458
458
  * read: it falls back to the compiled catalogue, which is the safe state
459
459
  * (nothing can tighten without an install), and it says so. */
460
+ export async function readProjectConfig(projectRoot) {
461
+ const configPath = path.join(projectRoot, '.forge', 'project-settings.json');
462
+ try {
463
+ const raw = await fs.readFile(configPath, 'utf-8');
464
+ return JSON.parse(raw);
465
+ }
466
+ catch {
467
+ return undefined;
468
+ }
469
+ }
460
470
  export async function resolveGates(projectRoot) {
471
+ let projectConfig;
461
472
  if (projectRoot) {
473
+ projectConfig = await readProjectConfig(projectRoot);
462
474
  const frozen = await readFrozenGates(projectRoot);
463
- if (frozen.gates)
464
- return frozen.gates;
475
+ if (frozen.gates) {
476
+ const gates = frozen.gates;
477
+ return {
478
+ ...gates,
479
+ ...(projectConfig ? { project_settings: projectConfig } : {}),
480
+ };
481
+ }
465
482
  if (frozen.refused?.length) {
466
483
  const base = compiledGatesResolved();
467
484
  return {
468
485
  ...base,
486
+ ...(projectConfig ? { project_settings: projectConfig } : {}),
469
487
  notices: [
470
488
  'the frozen gate definition of this project was REFUSED and the compiled catalogue is'
471
489
  + ' judging instead: ' + frozen.refused.join('; ')
@@ -475,7 +493,11 @@ export async function resolveGates(projectRoot) {
475
493
  };
476
494
  }
477
495
  }
478
- return compiledGatesResolved();
496
+ const base = compiledGatesResolved();
497
+ return {
498
+ ...base,
499
+ ...(projectConfig ? { project_settings: projectConfig } : {}),
500
+ };
479
501
  }
480
502
  /** Bring the published definition over the network.
481
503
  *
@@ -1 +1 @@
1
- {"version":3,"file":"gates_data.js","sourceRoot":"","sources":["../../src/urazuke/gates_data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gates_data.js","sourceRoot":"","sources":["../../src/urazuke/gates_data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { type ManualCaseLedger } from './manual_cases.js';
2
+ export * from './scoreboard.js';
3
+ export type Severity = 'blocks' | 'warns' | 'records';
4
+ export type RuleState = 'active' | 'switched_off' | 'group_off' | 'out_of_scope';
5
+ export type CheckerSource = 'adapter' | 'owner' | 'project' | 'not_published';
6
+ export interface SwitchOffRecord {
7
+ rule: string;
8
+ reason: string;
9
+ authorized_by: string;
10
+ review_date: string;
11
+ }
12
+ /** A group switch: `true`, or an off record without the `rule` field (the
13
+ * group name is the key). */
14
+ export type GroupSwitch = true | {
15
+ on: false;
16
+ reason?: string;
17
+ authorized_by?: string;
18
+ review_date?: string;
19
+ };
20
+ /** The per-project declarations, with the method's own field names. */
21
+ export interface ProjectSettings {
22
+ frontend?: string;
23
+ real_users?: boolean;
24
+ switches?: Record<string, GroupSwitch>;
25
+ switched_off?: unknown[];
26
+ thresholds?: Record<string, unknown>;
27
+ tools?: Record<string, string>;
28
+ }
29
+ export interface ResolvedRule {
30
+ id: string;
31
+ group: string;
32
+ family: string;
33
+ instrument: string[];
34
+ severity: Severity;
35
+ /** Where the severity came from. `catalog` is the normal answer; the
36
+ * point of recording it is that a hardcoded one would have to say so. */
37
+ severity_source: 'catalog' | 'escalated';
38
+ state: RuleState;
39
+ human_red: boolean;
40
+ /** Counted in the compliance percentage. False for the rules the method
41
+ * puts outside it (`human_outside_the_percentage`) and for anything a
42
+ * person judges. */
43
+ in_percentage: boolean;
44
+ /** Measured green. `false` covers both "measured and failing" and "not
45
+ * measured", which `measured` tells apart. */
46
+ passing: boolean;
47
+ measured: boolean;
48
+ /** Who declares what measures this rule, and whether it is reachable. */
49
+ checker: CheckerSource;
50
+ record?: SwitchOffRecord;
51
+ /** Why it is not active, in one phrase, for the report. */
52
+ why?: string;
53
+ }
54
+ export interface ThresholdView {
55
+ id: string;
56
+ rule: string;
57
+ value: number | string | null;
58
+ declared: boolean;
59
+ source: 'annex' | 'project' | 'undeclared';
60
+ }
61
+ export interface RulesetValidity {
62
+ ok: boolean;
63
+ /** Everything worth saying about the declaration, invalidating or not. */
64
+ problems: string[];
65
+ /** The subset that makes the ruleset INVALID (a switch-off with no
66
+ * record). Carried as its own list because classifying it by matching
67
+ * the prose was a regex over a translatable string: the day the message
68
+ * changes language the gate silently stops emitting figures, or starts. */
69
+ invalidating: string[];
70
+ }
71
+ export interface Ruleset {
72
+ catalog_version: string;
73
+ adapter: string | null;
74
+ tools: Record<string, string>;
75
+ real_users: boolean;
76
+ rules: ResolvedRule[];
77
+ thresholds: ThresholdView[];
78
+ group_off: string[];
79
+ validity: RulesetValidity;
80
+ /** Things the gate has to say out loud rather than fold into a colour. */
81
+ could_not_verify: string[];
82
+ /** The human verdicts on record. Carried here so the scoreboard stays a
83
+ * pure function of the ruleset. */
84
+ manual_cases: ManualCaseLedger;
85
+ }
86
+ export interface ResolveRulesetOptions {
87
+ projectRoot: string;
88
+ /** The definition in force, as `resolveGates` returns it or as the
89
+ * published file. Both carry `heuristics` and `adapters`. */
90
+ gates: {
91
+ catalog_version?: string;
92
+ version?: string;
93
+ heuristics?: unknown;
94
+ adapters?: unknown;
95
+ };
96
+ settings?: ProjectSettings;
97
+ }
98
+ export declare function projectSettingsPath(root: string): string;
99
+ export declare function readProjectSettings(root: string): Promise<ProjectSettings | undefined>;
100
+ /** A switch-off record, or the list of what is missing from it. The method
101
+ * is explicit that an incomplete record is not a lenient switch-off: it is
102
+ * red, and it makes the whole ruleset invalid (D-046, D-047). */
103
+ export declare function switchOffProblems(entry: unknown, index: number): {
104
+ rule?: string;
105
+ problems: string[];
106
+ };
107
+ export declare function resolveRuleset(opts: ResolveRulesetOptions): Promise<Ruleset>;
108
+ //# sourceMappingURL=heuristics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heuristics.d.ts","sourceRoot":"","sources":["../../src/urazuke/heuristics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * THE FORTY-FIVE RULES, RESOLVED AGAINST THE DEFINITION IN FORCE
3
+ * (Annex H, layers 1 to 3 -- pieces 1, 2, 3 reaching the evaluator).
4
+ *
5
+ * Everything in here is READ from the gate definition the project is being
6
+ * measured by: the rule ids, the group they belong to, the instrument, the
7
+ * severity, which rules a machine may not judge (`human_red`), the
8
+ * thresholds and which of them the method declares. Nothing is a constant
9
+ * of Forge. That is the whole point: on 2026-10-27 this tool was measuring
10
+ * two thresholds it had invented (`max_complexity=10` standing in for
11
+ * CQ-04's undeclared `paths_per_function`, and a `dup_block_lines=8` with
12
+ * no rule id at all), which is the one thing the annex forbids outright.
13
+ *
14
+ * THE SHAPE OF THE PROJECT'S OWN DECLARATIONS is published too, and the
15
+ * field names are the method's, not ours: frontend, real_users, switches,
16
+ * switched_off, thresholds, tools (`project_config.fields`). They live in
17
+ * <root>/.forge/project-settings.json. They are the VALUES; the published
18
+ * `project_config` is the SCHEMA, and the two must not share a field --
19
+ * before this slice `resolveGates` wrote the values over the schema, so a
20
+ * consumer asking the definition for the field names got a project's
21
+ * answers instead.
22
+ *
23
+ * WHAT THIS MODULE REFUSES TO GUESS. The evaluator `heuristics` asks that
24
+ * every active rule have "an instrument, a severity and a checker". The
25
+ * data publishes the first two per rule. The third it does not: 29 of the
26
+ * 45 rules say `checker_declared_by: adapter`, and the adapter table is a
27
+ * POINTER -- `adapters.annex_columns.note` says the text of every cell
28
+ * lives only in the annex, and the pointer covers 6 rules of 45. The other
29
+ * 16 say `owner`, and the field name the owner would write it in is not
30
+ * published either (`adapters.measured_by.illustrative: true`, with the
31
+ * warning that an installation taking those names as defaults "is
32
+ * inventing layer 2"). So the checker resolves to `not_published` and the
33
+ * gate reports it as something it COULD NOT VERIFY. Not green, not red:
34
+ * named. Inventing the cell here would be the same defect this file was
35
+ * written to delete.
36
+ *
37
+ * ASCII-only.
38
+ */
39
+ import fs from 'node:fs/promises';
40
+ import path from 'node:path';
41
+ import { readManualCases } from './manual_cases.js';
42
+ export * from './scoreboard.js';
43
+ export function projectSettingsPath(root) {
44
+ return path.join(root, '.forge', 'project-settings.json');
45
+ }
46
+ export async function readProjectSettings(root) {
47
+ try {
48
+ const parsed = JSON.parse(await fs.readFile(projectSettingsPath(root), 'utf8'));
49
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
50
+ return parsed;
51
+ }
52
+ catch { /* no declarations: that is a gap the report names, not an error */ }
53
+ return undefined;
54
+ }
55
+ function isRec(v) {
56
+ return v != null && typeof v === 'object' && !Array.isArray(v);
57
+ }
58
+ const RECORD_FIELDS = ['rule', 'reason', 'authorized_by', 'review_date'];
59
+ /** A switch-off record, or the list of what is missing from it. The method
60
+ * is explicit that an incomplete record is not a lenient switch-off: it is
61
+ * red, and it makes the whole ruleset invalid (D-046, D-047). */
62
+ export function switchOffProblems(entry, index) {
63
+ if (!isRec(entry)) {
64
+ return { problems: ['switched_off[' + index + '] no es un registro: ' + JSON.stringify(entry ?? null)] };
65
+ }
66
+ const rule = typeof entry['rule'] === 'string' ? entry['rule'] : undefined;
67
+ const problems = [];
68
+ for (const f of RECORD_FIELDS) {
69
+ const v = entry[f];
70
+ if (typeof v !== 'string' || v.trim() === '') {
71
+ problems.push('apagada sin un registro completo: ' + (rule ?? 'switched_off[' + index + ']')
72
+ + ' no trae ' + f);
73
+ }
74
+ }
75
+ return { ...(rule ? { rule } : {}), problems };
76
+ }
77
+ function severityOf(rule, realUsers, declaredThresholdIds) {
78
+ const base = String(rule['initial_severity'] ?? 'records');
79
+ const esc = rule['escalates_to'];
80
+ /* CQ-18 escalates to `blocks` when the product has users outside the
81
+ * organisation, and the method says the escalation "requires a
82
+ * declaration by the owner, through the same mechanism as any threshold"
83
+ * (D-048). So real_users alone does not escalate it: without the owner's
84
+ * declaration it stays where the catalogue put it, and the report says
85
+ * the escalation is pending a declaration. */
86
+ if (isRec(esc) && realUsers && declaredThresholdIds.has(String(rule['id']))) {
87
+ return { severity: String(esc['severity'] ?? base), source: 'escalated' };
88
+ }
89
+ return { severity: base, source: 'catalog' };
90
+ }
91
+ function thresholdsOf(adapters, settings) {
92
+ const declared = isRec(adapters) && Array.isArray(adapters['thresholds'])
93
+ ? adapters['thresholds']
94
+ : [];
95
+ const own = settings?.thresholds ?? {};
96
+ return declared.filter(isRec).map((t) => {
97
+ const id = String(t['id']);
98
+ const rule = String(t['rule'] ?? '');
99
+ if (Object.prototype.hasOwnProperty.call(own, id) && own[id] != null) {
100
+ return { id, rule, value: own[id], declared: true, source: 'project' };
101
+ }
102
+ if (t['declared'] === true && t['value'] != null) {
103
+ return { id, rule, value: t['value'], declared: true, source: 'annex' };
104
+ }
105
+ /* Not declared anywhere: reported as undeclared. No approximating, no
106
+ * silent inheriting and no inventing (adapters.undeclared_threshold). */
107
+ return { id, rule, value: null, declared: false, source: 'undeclared' };
108
+ });
109
+ }
110
+ export async function resolveRuleset(opts) {
111
+ const settings = opts.settings ?? await readProjectSettings(opts.projectRoot);
112
+ const h = isRec(opts.gates.heuristics) ? opts.gates.heuristics : {};
113
+ const publishedRules = Array.isArray(h['rules']) ? h['rules'].filter(isRec) : [];
114
+ const scoreboard = isRec(h['scoreboard']) ? h['scoreboard'] : {};
115
+ const outsideNamed = new Set((Array.isArray(scoreboard['human_outside_the_percentage'])
116
+ ? scoreboard['human_outside_the_percentage']
117
+ : []).filter((x) => typeof x === 'string' && /^[A-Z]{2}-\d\d$/.test(x)));
118
+ const realUsers = settings?.real_users === true;
119
+ /* ---- the switch-off list, and whether it is a valid ruleset ---- */
120
+ const problems = [];
121
+ const invalidating = [];
122
+ const offRecords = new Map();
123
+ const offIds = new Set();
124
+ const rawOff = Array.isArray(settings?.switched_off) ? settings?.switched_off : [];
125
+ rawOff.forEach((entry, i) => {
126
+ const r = switchOffProblems(entry, i);
127
+ if (r.rule)
128
+ offIds.add(r.rule);
129
+ if (r.problems.length) {
130
+ problems.push(...r.problems);
131
+ invalidating.push(...r.problems);
132
+ return;
133
+ }
134
+ offRecords.set(r.rule, entry);
135
+ });
136
+ /* ---- the group switches ---- */
137
+ const groupOff = [];
138
+ for (const [group, sw] of Object.entries(settings?.switches ?? {})) {
139
+ if (sw === true)
140
+ continue;
141
+ if (!isRec(sw)) {
142
+ const p = 'switches.' + group + ' no es ni true ni un registro de apagado';
143
+ problems.push(p);
144
+ invalidating.push(p);
145
+ continue;
146
+ }
147
+ const missing = ['reason', 'authorized_by', 'review_date']
148
+ .filter((f) => typeof sw[f] !== 'string' || String(sw[f]).trim() === '');
149
+ if (missing.length) {
150
+ const p = 'el grupo ' + group + ' esta apagado sin un registro completo: falta ' + missing.join(', ');
151
+ problems.push(p);
152
+ invalidating.push(p);
153
+ continue;
154
+ }
155
+ groupOff.push(group);
156
+ }
157
+ const thresholds = thresholdsOf(opts.gates.adapters, settings);
158
+ /* The escalation of a severity travels "through the same mechanism as any
159
+ * threshold" (D-048), so the owner declares it as a `thresholds` entry
160
+ * keyed by the rule id. The method publishes no threshold id for it, which
161
+ * is why this is the rule id and not one of the five published ones. */
162
+ const ownerDeclared = new Set(Object.keys(settings?.thresholds ?? {}));
163
+ const couldNotVerify = [];
164
+ const rules = publishedRules.map((raw) => {
165
+ const id = String(raw['id']);
166
+ const group = String(raw['group'] ?? '');
167
+ const instrument = Array.isArray(raw['instrument']) ? raw['instrument'].map(String) : [];
168
+ const humanRed = raw['human_red'] === true;
169
+ const { severity, source } = severityOf(raw, realUsers, ownerDeclared);
170
+ const appliesIf = typeof raw['applies_if'] === 'string' ? raw['applies_if'] : undefined;
171
+ let state = 'active';
172
+ let why;
173
+ if (groupOff.includes(group)) {
174
+ state = 'group_off';
175
+ why = 'the group ' + group + ' is switched off, and a switched-off group is never read as fulfilled';
176
+ }
177
+ else if (offRecords.has(id)) {
178
+ const rec = offRecords.get(id);
179
+ state = 'switched_off';
180
+ why = 'switched off by ' + rec.authorized_by + ', review ' + rec.review_date + ': ' + rec.reason;
181
+ }
182
+ else if (appliesIf === 'real_users' && !realUsers) {
183
+ state = 'out_of_scope';
184
+ why = 'applies_if real_users, and this project declares real_users=false: that is scope, not an exception';
185
+ }
186
+ /* `checker_declared_by` says WHO declares what measures the rule; the
187
+ * data does not carry the cell itself (see the header). */
188
+ const checker = 'not_published';
189
+ const outside = humanRed || instrument.includes('manual_case') || outsideNamed.has(id);
190
+ return {
191
+ id, group,
192
+ family: String(raw['family'] ?? ''),
193
+ instrument,
194
+ severity, severity_source: source,
195
+ state,
196
+ human_red: humanRed,
197
+ in_percentage: state === 'active' && !outside,
198
+ passing: false,
199
+ measured: false,
200
+ checker,
201
+ ...(offRecords.has(id) ? { record: offRecords.get(id) } : {}),
202
+ ...(why ? { why } : {}),
203
+ };
204
+ });
205
+ for (const r of publishedRules) {
206
+ if (isRec(r['escalates_to']) && realUsers && !ownerDeclared.has(String(r['id']))) {
207
+ couldNotVerify.push('la regla ' + String(r['id']) + ' escala su severidad cuando el producto tiene'
208
+ + ' usuarios fuera de la organizacion, y la escalada necesita que el dueno la declare por el mismo'
209
+ + ' mecanismo que cualquier umbral -- la definicion en vigor no publica ningun id de umbral para'
210
+ + ' ella, asi que esta instalacion no distingue una escalada pendiente de una declinada.');
211
+ }
212
+ }
213
+ const activeNeedingChecker = rules.filter((r) => r.state === 'active').length;
214
+ if (activeNeedingChecker > 0) {
215
+ couldNotVerify.push('con que se mide cada regla: la definicion en vigor no publica la celda del'
216
+ + ' adaptador (adapters.annex_columns es un puntero al anexo y cubre 6 reglas de 45) ni publica el'
217
+ + ' nombre del campo donde el dueno la declararia (adapters.measured_by.illustrative=true). '
218
+ + activeNeedingChecker + ' reglas activas no tienen entonces NINGUN medidor alcanzable, y esta'
219
+ + ' instalacion lo reporta en lugar de inventar uno.');
220
+ }
221
+ if (!settings) {
222
+ problems.push('este proyecto no declara nada: falta .forge/project-settings.json, asi que ningun grupo'
223
+ + ' esta declarado activo y no hay umbral, adaptador ni version de herramienta en el registro');
224
+ }
225
+ else {
226
+ for (const g of ['code_quality', 'usability']) {
227
+ if (!Object.prototype.hasOwnProperty.call(settings.switches ?? {}, g)) {
228
+ problems.push('el grupo ' + g + ' no esta declarado en switches: el metodo pide una entrada por grupo');
229
+ }
230
+ }
231
+ }
232
+ /* A ruleset is INVALID only when something was switched off without its
233
+ * record (D-046/D-047). A missing declaration is a red verdict with the
234
+ * figures still emitted; an invalid ruleset emits no figures at all. */
235
+ return {
236
+ catalog_version: String(opts.gates.catalog_version ?? opts.gates.version ?? 'unknown'),
237
+ adapter: settings?.frontend ?? null,
238
+ tools: settings?.tools ?? {},
239
+ real_users: realUsers,
240
+ rules,
241
+ thresholds,
242
+ group_off: groupOff,
243
+ validity: { ok: invalidating.length === 0, problems, invalidating },
244
+ could_not_verify: couldNotVerify,
245
+ manual_cases: await readManualCases(opts.projectRoot),
246
+ };
247
+ }
248
+ //# sourceMappingURL=heuristics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heuristics.js","sourceRoot":"","sources":["../../src/urazuke/heuristics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type ManualVerdict = 'passed' | 'failed';
2
+ export interface ManualCase {
3
+ /** The rule id the verdict is about (CQ-12, UX-22, ...). */
4
+ rule: string;
5
+ verdict: ManualVerdict;
6
+ /** The person who judged it. Never a tool, never "the agent". */
7
+ judged_by: string;
8
+ /** ISO date (YYYY-MM-DD) or a full ISO timestamp. */
9
+ at: string;
10
+ /** The profile the case was run under, when the project has profiles.
11
+ * `manual_cases_per_profile` needs one run per affected profile; this
12
+ * field is what will let that evaluator be measured without a migration. */
13
+ profile?: string;
14
+ note?: string;
15
+ }
16
+ export interface ManualCaseLedger {
17
+ version: 1;
18
+ cases: ManualCase[];
19
+ }
20
+ export declare function manualCasesPath(root: string): string;
21
+ export declare function readManualCases(root: string): Promise<ManualCaseLedger>;
22
+ /** A stored entry only counts when it still carries the four things that
23
+ * make it a verdict. A hand-edited ledger that lost a name loses the
24
+ * verdict with it -- it does not inherit a green. */
25
+ export declare function isVerdict(c: unknown): c is ManualCase;
26
+ export declare function recordManualCase(root: string, c: ManualCase): Promise<ManualCaseLedger>;
27
+ /** The verdict in force for a rule: the LAST recorded one. Undefined means
28
+ * nobody signed, which is neither a pass nor a fail and must never be
29
+ * rendered as either. */
30
+ export declare function verdictFor(led: ManualCaseLedger, rule: string, profile?: string): ManualCase | undefined;
31
+ //# sourceMappingURL=manual_cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual_cases.d.ts","sourceRoot":"","sources":["../../src/urazuke/manual_cases.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX;;iFAE6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQ7E;AAED;;sDAEsD;AACtD,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAOrD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB7F;AAED;;0BAE0B;AAC1B,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGxG"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * THE HUMAN VERDICT ON RECORD (Annex H, pieza 5).
3
+ *
4
+ * Four of the forty-five rules carry `human_red: true` in the published
5
+ * data -- CQ-12, CQ-14, UX-22 and UX-27 as of catalog 2026.10.6 -- and the
6
+ * method's `manual_case` instrument says what such a verdict IS: "passed or
7
+ * failed, with a name and a date", judged by a person. The list is read
8
+ * from the definition in force, never from this file: a rule that gains
9
+ * `human_red` in a later catalogue is picked up without an install.
10
+ *
11
+ * Why a ledger and not a boolean. Before this module the `owner` state
12
+ * existed in the gate and signed nothing: a step with nothing mechanical to
13
+ * look at came out as "the owner verifies it", and the close gate let it
14
+ * through (`orchestrator.ts` treated only `red` and `unmeasured` as
15
+ * blocking). So the strongest claim in the method -- a person looked at
16
+ * this and said yes -- was the one claim with no evidence behind it. The
17
+ * ledger makes it a record with a name and a date, or it makes it absent.
18
+ *
19
+ * What is refused on write. A verdict with an empty `judged_by` or an empty
20
+ * `at` is not a verdict with a missing field, it is not a verdict: an
21
+ * anonymous or undated signature is exactly the "green without having
22
+ * looked" this whole slice exists to remove. `recordManualCase` throws
23
+ * instead of storing it.
24
+ *
25
+ * ASCII-only.
26
+ */
27
+ import fs from 'node:fs/promises';
28
+ import path from 'node:path';
29
+ export function manualCasesPath(root) {
30
+ return path.join(root, '.forge', 'urazuke-manual-cases.json');
31
+ }
32
+ export async function readManualCases(root) {
33
+ try {
34
+ const parsed = JSON.parse(await fs.readFile(manualCasesPath(root), 'utf8'));
35
+ if (parsed && parsed.version === 1 && Array.isArray(parsed.cases)) {
36
+ return { version: 1, cases: parsed.cases.filter(isVerdict) };
37
+ }
38
+ }
39
+ catch { /* no ledger yet: that is "nobody signed", not an error */ }
40
+ return { version: 1, cases: [] };
41
+ }
42
+ /** A stored entry only counts when it still carries the four things that
43
+ * make it a verdict. A hand-edited ledger that lost a name loses the
44
+ * verdict with it -- it does not inherit a green. */
45
+ export function isVerdict(c) {
46
+ if (c == null || typeof c !== 'object')
47
+ return false;
48
+ const r = c;
49
+ return typeof r['rule'] === 'string' && String(r['rule']).trim() !== ''
50
+ && (r['verdict'] === 'passed' || r['verdict'] === 'failed')
51
+ && typeof r['judged_by'] === 'string' && String(r['judged_by']).trim() !== ''
52
+ && typeof r['at'] === 'string' && String(r['at']).trim() !== '';
53
+ }
54
+ export async function recordManualCase(root, c) {
55
+ if (!c || typeof c.rule !== 'string' || c.rule.trim() === '') {
56
+ throw new Error('a manual case needs the rule it judges');
57
+ }
58
+ if (c.verdict !== 'passed' && c.verdict !== 'failed') {
59
+ throw new Error('verdict has to be passed or failed: ' + String(c.verdict));
60
+ }
61
+ if (typeof c.judged_by !== 'string' || c.judged_by.trim() === '') {
62
+ throw new Error('judged_by is empty: an anonymous verdict is not a verdict (rule ' + c.rule + ')');
63
+ }
64
+ if (typeof c.at !== 'string' || c.at.trim() === '') {
65
+ throw new Error('at is empty: an undated verdict is not a verdict (rule ' + c.rule + ')');
66
+ }
67
+ const led = await readManualCases(root);
68
+ /* Append-only by design: the previous verdict stays visible, and the
69
+ * latest one for a (rule, profile) pair is the one that counts. The
70
+ * history is how a reviewer sees a red that turned green and when. */
71
+ led.cases.push({
72
+ rule: c.rule, verdict: c.verdict, judged_by: c.judged_by, at: c.at,
73
+ ...(c.profile ? { profile: c.profile } : {}),
74
+ ...(c.note ? { note: c.note } : {}),
75
+ });
76
+ await fs.mkdir(path.dirname(manualCasesPath(root)), { recursive: true });
77
+ await fs.writeFile(manualCasesPath(root), JSON.stringify(led, null, 2) + '\n', 'utf8');
78
+ return led;
79
+ }
80
+ /** The verdict in force for a rule: the LAST recorded one. Undefined means
81
+ * nobody signed, which is neither a pass nor a fail and must never be
82
+ * rendered as either. */
83
+ export function verdictFor(led, rule, profile) {
84
+ const matching = led.cases.filter((c) => c.rule === rule && (profile == null || c.profile === profile));
85
+ return matching.length ? matching[matching.length - 1] : undefined;
86
+ }
87
+ //# sourceMappingURL=manual_cases.js.map