@uwmd/core 2.6.1 → 2.7.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 (67) hide show
  1. package/dist/block-roles.d.ts +20 -0
  2. package/dist/block-roles.d.ts.map +1 -0
  3. package/dist/block-roles.js +54 -0
  4. package/dist/block-roles.js.map +1 -0
  5. package/dist/browser.d.ts +6 -2
  6. package/dist/browser.d.ts.map +1 -1
  7. package/dist/browser.js +3 -1
  8. package/dist/browser.js.map +1 -1
  9. package/dist/calc/dependencies.d.ts +3 -0
  10. package/dist/calc/dependencies.d.ts.map +1 -1
  11. package/dist/calc/dependencies.js +14 -1
  12. package/dist/calc/dependencies.js.map +1 -1
  13. package/dist/calc/errors.d.ts +1 -1
  14. package/dist/calc/errors.d.ts.map +1 -1
  15. package/dist/calc/errors.js.map +1 -1
  16. package/dist/calc/evaluator.d.ts +1 -1
  17. package/dist/calc/evaluator.d.ts.map +1 -1
  18. package/dist/calc/evaluator.js +10 -0
  19. package/dist/calc/evaluator.js.map +1 -1
  20. package/dist/calc/parser.d.ts +10 -0
  21. package/dist/calc/parser.d.ts.map +1 -1
  22. package/dist/calc/parser.js +25 -1
  23. package/dist/calc/parser.js.map +1 -1
  24. package/dist/editor.d.ts.map +1 -1
  25. package/dist/editor.js +23 -1
  26. package/dist/editor.js.map +1 -1
  27. package/dist/index.d.ts +6 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/packs/excel-emit.d.ts.map +1 -1
  32. package/dist/packs/excel-emit.js +2 -0
  33. package/dist/packs/excel-emit.js.map +1 -1
  34. package/dist/parser.d.ts.map +1 -1
  35. package/dist/parser.js +12 -3
  36. package/dist/parser.js.map +1 -1
  37. package/dist/period-path.d.ts +20 -0
  38. package/dist/period-path.d.ts.map +1 -0
  39. package/dist/period-path.js +70 -0
  40. package/dist/period-path.js.map +1 -0
  41. package/dist/period-validation.d.ts +4 -0
  42. package/dist/period-validation.d.ts.map +1 -0
  43. package/dist/period-validation.js +84 -0
  44. package/dist/period-validation.js.map +1 -0
  45. package/dist/periods.d.ts +17 -0
  46. package/dist/periods.d.ts.map +1 -0
  47. package/dist/periods.js +92 -0
  48. package/dist/periods.js.map +1 -0
  49. package/dist/protocol.d.ts +40 -3
  50. package/dist/protocol.d.ts.map +1 -1
  51. package/dist/protocol.js +84 -36
  52. package/dist/protocol.js.map +1 -1
  53. package/dist/refinement.d.ts.map +1 -1
  54. package/dist/refinement.js +4 -1
  55. package/dist/refinement.js.map +1 -1
  56. package/dist/runner.d.ts.map +1 -1
  57. package/dist/runner.js +5 -0
  58. package/dist/runner.js.map +1 -1
  59. package/dist/types.d.ts +9 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/types.js.map +1 -1
  62. package/dist/validator.d.ts.map +1 -1
  63. package/dist/validator.js +96 -36
  64. package/dist/validator.js.map +1 -1
  65. package/dist/version.d.ts +1 -1
  66. package/dist/version.js +1 -1
  67. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"period-validation.d.ts","sourceRoot":"","sources":["../src/period-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAW,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQ3E,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CA6BzF"}
@@ -0,0 +1,84 @@
1
+ import { PERIOD_SERIES } from './protocol.js';
2
+ import { getPathSegment } from './parser.js';
3
+ import { parseExpression, periodReferencePath } from './calc/parser.js';
4
+ import { getPeriodReferences } from './calc/dependencies.js';
5
+ import { parsePeriodSelector, periodKindMatches, scanPeriodSeries } from './periods.js';
6
+ import { periodPayload, periodSection } from './period-path.js';
7
+ /** Structural inspection covers every active variant, not only the selected statement. */
8
+ export function checkPeriodSeries(parsed, issues) {
9
+ for (const entry of PERIOD_SERIES) {
10
+ const [section, ...segments] = entry.path.split('.');
11
+ const stored = parsed.sections[section];
12
+ if (!stored)
13
+ continue;
14
+ const blocks = 'annotation' in stored ? [stored] : Object.values(stored);
15
+ for (const block of blocks) {
16
+ const payload = periodPayload(block);
17
+ let series = payload;
18
+ for (const segment of segments)
19
+ series = getPathSegment(series, segment);
20
+ if (series === undefined || series === null)
21
+ continue;
22
+ const scan = scanPeriodSeries(entry, series, payload);
23
+ const label = `${entry.path}${block.annotation.variant ? ` variant=${block.annotation.variant}` : ''}`;
24
+ for (const position of scan.invalid)
25
+ issues.push({
26
+ code: 'PS-01', severity: 'warning', section: section, field: segments.join('.'),
27
+ message: `PS-01: ${label} has a malformed period or row at ${position}.`, value: position,
28
+ });
29
+ for (const identity of scan.duplicates)
30
+ issues.push({
31
+ code: 'PS-02', severity: 'error', section: section, field: segments.join('.'),
32
+ message: `PS-02: ${label} states duplicate period ${identity}.`, value: identity,
33
+ });
34
+ }
35
+ }
36
+ for (const section of ['custom_calculations', 'custom_scenarios']) {
37
+ for (const block of parsed[section]) {
38
+ if (block.meta?.superseded || block.annotation.superseded === true)
39
+ continue;
40
+ inspectStaticReferences(block.content, section, parsed, issues, new Set(), 0);
41
+ }
42
+ }
43
+ }
44
+ function inspectStaticReferences(value, section, parsed, issues, seen, depth) {
45
+ if (!value || typeof value !== 'object' || depth > 64 || seen.has(value))
46
+ return;
47
+ seen.add(value);
48
+ for (const [field, child] of Object.entries(value)) {
49
+ if (field.startsWith('_'))
50
+ continue;
51
+ if ((field === 'formula' || field === 'base_formula') && typeof child === 'string') {
52
+ let refs;
53
+ try {
54
+ refs = getPeriodReferences(parseExpression(child));
55
+ }
56
+ catch {
57
+ continue;
58
+ }
59
+ for (const ref of refs) {
60
+ const path = [ref.head, ...ref.series].join('.');
61
+ const entry = PERIOD_SERIES.find(candidate => candidate.path === path);
62
+ const key = parsePeriodSelector(ref.selector);
63
+ if (!entry || !key)
64
+ continue;
65
+ let payload;
66
+ try {
67
+ const block = periodSection(parsed, ref.head);
68
+ payload = block ? periodPayload(block) : undefined;
69
+ }
70
+ catch {
71
+ continue;
72
+ } // A static reference cannot choose an ambiguous runtime variant.
73
+ if (!periodKindMatches(entry, key, payload))
74
+ issues.push({
75
+ code: 'PS-03', severity: 'warning', section, field,
76
+ message: `PS-03: ${periodReferencePath(ref)} uses a period kind incompatible with ${entry.path}.`,
77
+ });
78
+ }
79
+ }
80
+ else
81
+ inspectStaticReferences(child, section, parsed, issues, seen, depth + 1);
82
+ }
83
+ }
84
+ //# sourceMappingURL=period-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"period-validation.js","sourceRoot":"","sources":["../src/period-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { PeriodKey, PeriodSeriesEntry } from './protocol.js';
2
+ /** Gregorian calendar identities; no row positions or implicit holding-year conversions. */
3
+ export declare function parsePeriodSelector(value: string): PeriodKey | null;
4
+ export declare function canonicalPeriod(entry: PeriodSeriesEntry, value: unknown): PeriodKey | null;
5
+ export declare function periodKeyIdentity(key: PeriodKey): string;
6
+ export interface PeriodSeriesScan {
7
+ rows: ReadonlyMap<string, {
8
+ key: PeriodKey;
9
+ value: unknown;
10
+ }>;
11
+ invalid: string[];
12
+ duplicates: string[];
13
+ }
14
+ /** Inspect a whole series before choosing a row; validation is not a prerequisite. */
15
+ export declare function scanPeriodSeries(entry: PeriodSeriesEntry, value: unknown, payload: unknown): PeriodSeriesScan;
16
+ export declare function periodKindMatches(entry: PeriodSeriesEntry, key: PeriodKey, payload?: unknown): boolean;
17
+ //# sourceMappingURL=periods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"periods.d.ts","sourceRoot":"","sources":["../src/periods.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlE,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAa1F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAOxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CA4B7G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAMtG"}
@@ -0,0 +1,92 @@
1
+ import { getPathSegment } from './parser.js';
2
+ import { parseISODate } from './calc/day-count.js';
3
+ function positiveYear(value) {
4
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 1 ? { kind: 'year', index: value } : null;
5
+ }
6
+ /** Gregorian calendar identities; no row positions or implicit holding-year conversions. */
7
+ export function parsePeriodSelector(value) {
8
+ if (/^Y[1-9][0-9]*$/.test(value))
9
+ return positiveYear(Number(value.slice(1)));
10
+ let match = /^([0-9]{4})-Q([1-4])$/.exec(value);
11
+ if (match)
12
+ return { kind: 'quarter', year: Number(match[1]), quarter: Number(match[2]) };
13
+ match = /^([0-9]{4})-(0[1-9]|1[0-2])$/.exec(value);
14
+ if (match)
15
+ return { kind: 'month', year: Number(match[1]), month: Number(match[2]) };
16
+ if (parseISODate(value))
17
+ return { kind: 'date', date: value };
18
+ return null;
19
+ }
20
+ export function canonicalPeriod(entry, value) {
21
+ if (entry.grammar === 'year_index') {
22
+ if (entry.shape === 'keyed' && typeof value === 'string') {
23
+ const match = /^year_([0-9]+)$/.exec(value);
24
+ return match ? positiveYear(Number(match[1])) : null;
25
+ }
26
+ return positiveYear(value);
27
+ }
28
+ if (typeof value !== 'string')
29
+ return null;
30
+ const key = parsePeriodSelector(value);
31
+ if (!key)
32
+ return null;
33
+ if (entry.grammar === 'iso_date')
34
+ return key.kind === 'date' ? key : null;
35
+ return key.kind === 'quarter' || key.kind === 'month' ? key : null;
36
+ }
37
+ export function periodKeyIdentity(key) {
38
+ switch (key.kind) {
39
+ case 'year': return `year:${key.index}`;
40
+ case 'quarter': return `quarter:${key.year}:${key.quarter}`;
41
+ case 'month': return `month:${key.year}:${key.month}`;
42
+ case 'date': return `date:${key.date}`;
43
+ }
44
+ }
45
+ /** Inspect a whole series before choosing a row; validation is not a prerequisite. */
46
+ export function scanPeriodSeries(entry, value, payload) {
47
+ const rows = new Map();
48
+ const invalid = [];
49
+ const duplicates = [];
50
+ if (value === null || value === undefined)
51
+ return { rows, invalid, duplicates };
52
+ const pairs = [];
53
+ if (entry.shape === 'rows') {
54
+ if (!Array.isArray(value))
55
+ return { rows, invalid: ['series must be an array'], duplicates };
56
+ for (let i = 0; i < value.length; i++)
57
+ pairs.push([String(i), getPathSegment(value, String(i))]);
58
+ }
59
+ else {
60
+ if (typeof value !== 'object' || Array.isArray(value))
61
+ return { rows, invalid: ['series must be a keyed object'], duplicates };
62
+ pairs.push(...Object.entries(value));
63
+ }
64
+ const cadence = entry.cadence_field ? getPathSegment(payload, entry.cadence_field) : undefined;
65
+ if (entry.grammar === 'calendar_period' && cadence !== 'monthly' && cadence !== 'quarterly')
66
+ invalid.push('period_granularity must be monthly or quarterly');
67
+ for (const [position, row] of pairs) {
68
+ const raw = entry.shape === 'keyed' ? position : getPathSegment(row, entry.period_field);
69
+ const key = canonicalPeriod(entry, raw);
70
+ if (!key || row === null || typeof row !== 'object' || Array.isArray(row)
71
+ || (entry.grammar === 'calendar_period' && ((cadence === 'monthly' && key.kind !== 'month') || (cadence === 'quarterly' && key.kind !== 'quarter')))) {
72
+ invalid.push(position);
73
+ continue;
74
+ }
75
+ const identity = periodKeyIdentity(key);
76
+ if (rows.has(identity))
77
+ duplicates.push(identity);
78
+ else
79
+ rows.set(identity, { key, value: row });
80
+ }
81
+ return { rows, invalid, duplicates: [...new Set(duplicates)].sort() };
82
+ }
83
+ export function periodKindMatches(entry, key, payload) {
84
+ if (entry.grammar === 'year_index')
85
+ return key.kind === 'year';
86
+ if (entry.grammar === 'iso_date')
87
+ return key.kind === 'date';
88
+ const cadence = getPathSegment(payload, entry.cadence_field ?? 'period_granularity');
89
+ return cadence === 'monthly' ? key.kind === 'month' : cadence === 'quarterly' ? key.kind === 'quarter'
90
+ : key.kind === 'month' || key.kind === 'quarter';
91
+ }
92
+ //# sourceMappingURL=periods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"periods.js","sourceRoot":"","sources":["../src/periods.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { AssetClass, ConfidenceLevel, DealStage, FinancialThresholds, ParsedUWFile, PipelineStatus, UWBlock, UWMeta, UWSignatureAlgorithm, ValidationMessage, ValidationSeverity } from './types.js';
1
+ import type { AssetClass, BlockRole, ConfidenceLevel, DealStage, FinancialThresholds, ParsedUWFile, PipelineStatus, UWBlock, UWMeta, UWSignatureAlgorithm, ValidationMessage, ValidationSeverity } from './types.js';
2
2
  /** Semver of this protocol. Bumped independently of @uwmd/core's npm version. */
3
- export declare const PROTOCOL_VERSION: "2.6.0";
3
+ export declare const PROTOCOL_VERSION: "2.8.0";
4
4
  /**
5
5
  * The format version this implementation *authors* — what a fresh scaffold
6
6
  * declares. Reading is wider: see {@link SUPPORTED_FORMAT_VERSIONS}.
@@ -22,7 +22,7 @@ export declare const SUPPORTED_FORMAT_VERSIONS: readonly ["1.0", "1.1", "2.0"];
22
22
  * v2 §1.3), so a module written against the 1.x protocol line still loads:
23
23
  * its `requires_protocol` range is satisfied against any member of this set.
24
24
  */
25
- export declare const SUPPORTED_PROTOCOL_VERSIONS: readonly ["1.14.0", "2.0.0", "2.1.0", "2.2.0", "2.6.0"];
25
+ export declare const SUPPORTED_PROTOCOL_VERSIONS: readonly ["1.14.0", "2.0.0", "2.1.0", "2.2.0", "2.8.0"];
26
26
  /** The four conformance tiers defined in UW_PROTOCOL_v1.md Part II. */
27
27
  export type ViewerTier = 'tier-1-reader' | 'tier-2-editor' | 'tier-3-calc-host' | 'tier-4-agent-host';
28
28
  /** What kind of actor the implementation serves. Informational. */
@@ -454,12 +454,16 @@ export type EditOperation = {
454
454
  variant?: string;
455
455
  content: Record<string, unknown>;
456
456
  meta: Partial<UWMeta>;
457
+ /** Trusted host assignment: undefined preserves, null removes. Never copy from model content. */
458
+ role?: BlockRole | null;
457
459
  } | {
458
460
  kind: 'section_supersede';
459
461
  section_id: string;
460
462
  variant?: string;
461
463
  content: Record<string, unknown>;
462
464
  meta: Partial<UWMeta>;
465
+ /** Trusted host assignment: undefined preserves, null removes. Never copy from model content. */
466
+ role?: BlockRole | null;
463
467
  } | {
464
468
  kind: 'pipeline_log_append';
465
469
  entry: Record<string, unknown>;
@@ -482,7 +486,36 @@ export interface IssueRemediation {
482
486
  * Variables made available to a custom_calculation expression. The host
483
487
  * resolves `parsed` paths via parser.deepGet semantics.
484
488
  */
489
+ /** Exact period identity; holding years and calendar identities never convert implicitly. */
490
+ export type PeriodKey = {
491
+ kind: 'year';
492
+ index: number;
493
+ } | {
494
+ kind: 'quarter';
495
+ year: number;
496
+ quarter: number;
497
+ } | {
498
+ kind: 'month';
499
+ year: number;
500
+ month: number;
501
+ } | {
502
+ kind: 'date';
503
+ date: string;
504
+ };
505
+ export interface PeriodSeriesEntry {
506
+ readonly path: string;
507
+ readonly shape: 'rows' | 'keyed';
508
+ readonly period_field?: string;
509
+ readonly key_pattern?: string;
510
+ readonly grammar: 'year_index' | 'calendar_period' | 'iso_date';
511
+ readonly cadence_field?: string;
512
+ readonly spec_ref: string;
513
+ }
514
+ /** Standard registry only; module-defined series are deferred (RFC 0041). */
515
+ export declare const PERIOD_SERIES: readonly PeriodSeriesEntry[];
485
516
  export interface CalcEvaluationContext {
517
+ /** Exact section variants for period references only; no fallback when supplied. */
518
+ sectionVariants?: Readonly<Record<string, string>>;
486
519
  parsed: ParsedUWFile;
487
520
  /** Result map of previously-evaluated calculations in the same batch. */
488
521
  prior_results: Readonly<Record<string, number | string | boolean | null>>;
@@ -899,6 +932,10 @@ export declare const CROSS_CHECK_RULE_IDS: readonly string[];
899
932
  * first; a lone variant is taken last; anything else is unresolvable.
900
933
  */
901
934
  export declare const CROSS_CHECK_VARIANT_PREFERENCE: readonly string[];
935
+ /** Closed, scalar vocabulary for the signed `_role` block annotation. */
936
+ export declare const BLOCK_ROLES: readonly BlockRole[];
937
+ /** Per-check role preference, consulted before generic primary/default/base. */
938
+ export declare const CROSS_CHECK_ROLE_PREFERENCE: Readonly<Record<string, Readonly<Record<string, BlockRole>>>>;
902
939
  /** The closed set for `dcf.returns.tax_basis` (format §4.9, RFC 0038). */
903
940
  export declare const RETURN_TAX_BASES: readonly ["pre_tax", "after_tax"];
904
941
  /** The basis a `returns` object carries when it states none (RFC 0038). */
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/protocol.js CHANGED
@@ -13,7 +13,7 @@ import { deepGet, getSection, getSectionVariant } from './parser.js';
13
13
  import { CORE_VERSION } from './version.js';
14
14
  // ─── Versioning ───────────────────────────────────────────────────────────────
15
15
  /** Semver of this protocol. Bumped independently of @uwmd/core's npm version. */
16
- export const PROTOCOL_VERSION = '2.6.0';
16
+ export const PROTOCOL_VERSION = '2.8.0';
17
17
  /**
18
18
  * The format version this implementation *authors* — what a fresh scaffold
19
19
  * declares. Reading is wider: see {@link SUPPORTED_FORMAT_VERSIONS}.
@@ -528,6 +528,14 @@ export function lookupStageContract(stage, section, field_path, assetClass) {
528
528
  }
529
529
  return best;
530
530
  }
531
+ /** Standard registry only; module-defined series are deferred (RFC 0041). */
532
+ export const PERIOD_SERIES = Object.freeze([
533
+ Object.freeze({ path: 'dcf.annual_cash_flows', shape: 'rows', period_field: 'year', grammar: 'year_index', spec_ref: 'UW_FORMAT_SPEC_v1.md §4.9' }),
534
+ Object.freeze({ path: 'noi_model.projections', shape: 'keyed', key_pattern: '^year_(\\d+)$', grammar: 'year_index', spec_ref: 'UW_FORMAT_SPEC_v1.md §4.5' }),
535
+ Object.freeze({ path: 'lease_up_schedule.schedule', shape: 'rows', period_field: 'period', grammar: 'calendar_period', cadence_field: 'period_granularity', spec_ref: 'UW_FORMAT_SPEC_v1.md §4.25' }),
536
+ Object.freeze({ path: 'cash_flow_series.series', shape: 'rows', period_field: 'date', grammar: 'iso_date', spec_ref: 'UW_FORMAT_SPEC_v1.md §4.26' }),
537
+ Object.freeze({ path: 'distribution_waterfall.stated_schedule', shape: 'rows', period_field: 'date', grammar: 'iso_date', spec_ref: 'UW_FORMAT_SPEC_v1.md §4.27' }),
538
+ ]);
531
539
  // ─── Standard section registry (FORMAT_SPEC Part IV) ─────────────────────────
532
540
  /**
533
541
  * The section ids the format registers in `UW_FORMAT_SPEC_v1.md` Part IV: the
@@ -1098,6 +1106,8 @@ export const VALIDATOR_CODE_FAMILIES = Object.freeze([
1098
1106
  { prefix: 'WF', description: 'Distribution waterfall (RFC 0035)', capabilities: ['validate'] },
1099
1107
  { prefix: 'RT', description: 'Return-metric declarations — dcf.returns basis fields (RFC 0038)', capabilities: ['validate'] },
1100
1108
  { prefix: 'LOC', description: 'Display locale (RFC 0001)', capabilities: ['validate'] },
1109
+ { prefix: 'PS', description: 'Period series identity (RFC 0041)', capabilities: ['validate'] },
1110
+ { prefix: 'ROLE', description: 'Signed block role (RFC 0040)', capabilities: ['validate'] },
1101
1111
  { prefix: 'META', description: '_meta shape by uw_version (RFC 0009)', capabilities: ['validate'] },
1102
1112
  {
1103
1113
  prefix: 'INVALID-ASSET-CLASS',
@@ -1151,6 +1161,16 @@ export const CROSS_CHECK_RULE_IDS = Object.freeze([
1151
1161
  * first; a lone variant is taken last; anything else is unresolvable.
1152
1162
  */
1153
1163
  export const CROSS_CHECK_VARIANT_PREFERENCE = Object.freeze(['default', 'base']);
1164
+ /** Closed, scalar vocabulary for the signed `_role` block annotation. */
1165
+ export const BLOCK_ROLES = Object.freeze(['primary', 'senior', 'junior', 'summary', 'detail', 'component']);
1166
+ /** Per-check role preference, consulted before generic primary/default/base. */
1167
+ export const CROSS_CHECK_ROLE_PREFERENCE = Object.freeze({
1168
+ 'CC-01': Object.freeze({ rent_roll: 'detail' }),
1169
+ 'CC-02': Object.freeze({ debt_structure: 'senior' }),
1170
+ 'CC-03': Object.freeze({ debt_structure: 'senior' }),
1171
+ 'CC-05': Object.freeze({ debt_structure: 'senior' }),
1172
+ 'CC-09': Object.freeze({ debt_structure: 'senior' }),
1173
+ });
1154
1174
  /** The closed set for `dcf.returns.tax_basis` (format §4.9, RFC 0038). */
1155
1175
  export const RETURN_TAX_BASES = ['pre_tax', 'after_tax'];
1156
1176
  /** The basis a `returns` object carries when it states none (RFC 0038). */
@@ -1162,74 +1182,78 @@ export const DEFAULT_RETURN_TAX_BASIS = 'pre_tax';
1162
1182
  * every conforming implementation.
1163
1183
  */
1164
1184
  export const BUILTIN_REMEDIATIONS = Object.freeze([
1165
- {
1166
- code: 'CC-01', severity: 'error',
1167
- title: 'NOI mismatch',
1168
- description: 'noi_model.net_operating_income disagrees with quick_metrics.noi_underwritten.',
1169
- remediation: 'Recompute NOI from the noi_model section and update frontmatter.quick_metrics.noi_underwritten.',
1185
+ // CC-01..CC-10 mirror the §5.3 table and the rules in validator.ts: the same
1186
+ // sections, the same tolerance, the same default severity. Until 2.6.2 these
1187
+ // ten entries described an earlier quick_metrics-reconciliation draft that
1188
+ // never shipped, and the validator attached that copy to real issues.
1189
+ {
1190
+ code: 'CC-01', severity: 'warning',
1191
+ title: 'Rent roll GPR does not match the operating statement',
1192
+ description: 'rent_roll.gross_potential_rent differs from operating_statement.gross_potential_rent by more than 3%.',
1193
+ remediation: 'Re-tie the rent roll to the operating statement — recompute gross potential rent from the current rent roll and restate it in the operating statement (the t12 variant when present).',
1170
1194
  spec_ref: '§5.3 CC-01',
1171
1195
  },
1172
1196
  {
1173
- code: 'CC-02', severity: 'error',
1174
- title: 'DSCR mismatch',
1175
- description: 'debt_structure.dscr disagrees with quick_metrics.dscr.',
1176
- remediation: 'Recompute DSCR = NOI / annual_debt_service and update both surfaces.',
1197
+ code: 'CC-02', severity: 'warning',
1198
+ title: 'Stated LTV does not match the underwritten value',
1199
+ description: 'debt_structure.ltv differs from debt_structure.loan_amount / valuation.underwritten_value (falling back to purchase_price) by more than 0.5 points.',
1200
+ remediation: 'Recompute LTV = loan_amount / underwritten value and restate debt_structure.ltv, or correct the value in valuation that the LTV was struck against.',
1177
1201
  spec_ref: '§5.3 CC-02',
1178
1202
  },
1179
1203
  {
1180
1204
  code: 'CC-03', severity: 'error',
1181
- title: 'LTV mismatch',
1182
- description: 'debt_structure.ltv disagrees with quick_metrics.ltv.',
1183
- remediation: 'Recompute LTV = loan_amount / purchase_price and update both surfaces.',
1205
+ title: 'Senior loan does not reconcile',
1206
+ description: 'sources_uses.sources.loan_amount, debt_structure.loan_amount and (when present) the capital_stack senior_debt tranche do not agree within $100.',
1207
+ remediation: 'State the senior loan once and make every surface agree — sources_uses, debt_structure and the capital_stack senior_debt tranche MUST carry the same amount (RFC 0026 §4.24).',
1184
1208
  spec_ref: '§5.3 CC-03',
1185
1209
  },
1186
1210
  {
1187
1211
  code: 'CC-04', severity: 'error',
1188
1212
  title: 'Sources & Uses imbalance',
1189
- description: 'sources_uses.total_sources does not equal total_uses.',
1190
- remediation: 'Reconcile capital stack — equity + debt proceeds + other sources MUST equal price + closing + reserves.',
1213
+ description: 'sources_uses.total_sources does not equal sources_uses.total_uses (within $1).',
1214
+ remediation: 'Reconcile the capital stack — equity + debt proceeds + other sources MUST equal price + closing + reserves.',
1191
1215
  spec_ref: '§5.3 CC-04',
1192
1216
  },
1193
1217
  {
1194
- code: 'CC-05', severity: 'error',
1195
- title: 'Cap rate mismatch',
1196
- description: 'valuation.going_in_cap_rate disagrees with quick_metrics.cap_rate.',
1197
- remediation: 'Recompute cap rate = NOI / purchase_price and align both surfaces.',
1218
+ code: 'CC-05', severity: 'warning',
1219
+ title: 'DSCR NOI does not match the NOI model',
1220
+ description: 'debt_structure.underwritten_noi (the NOI used for DSCR) differs from noi_model.net_operating_income by more than 1%.',
1221
+ remediation: 'Recompute DSCR from noi_model.net_operating_income and restate debt_structure.underwritten_noi, or correct the NOI model.',
1198
1222
  spec_ref: '§5.3 CC-05',
1199
1223
  },
1200
1224
  {
1201
1225
  code: 'CC-06', severity: 'warning',
1202
- title: 'Debt yield mismatch',
1203
- description: 'debt_structure.debt_yield disagrees with quick_metrics.debt_yield.',
1204
- remediation: 'Recompute debt yield = NOI / loan_amount and align both surfaces.',
1226
+ title: 'DCF Year 1 NOI does not match the NOI model',
1227
+ description: 'dcf.annual_cash_flows[0].noi differs from noi_model.net_operating_income by more than 2%.',
1228
+ remediation: 'Re-run the DCF from the current noi_model projection so Year 1 NOI agrees, or correct the NOI model.',
1205
1229
  spec_ref: '§5.3 CC-06',
1206
1230
  },
1207
1231
  {
1208
1232
  code: 'CC-07', severity: 'warning',
1209
- title: 'IRR / equity multiple mismatch',
1210
- description: 'dcf.levered_irr disagrees with quick_metrics.irr_projected.',
1211
- remediation: 'Re-run the DCF and update quick_metrics.irr_projected from dcf.levered_irr.',
1233
+ title: 'Exit cap rate differs between DCF and stress tests',
1234
+ description: 'dcf.assumptions.exit_cap_rate differs from stress_tests.base_case.exit_cap_rate by more than 0.5 points.',
1235
+ remediation: 'Align the stress-test base case with the DCF exit cap rate the base case MUST be the DCF assumption set before any expansion scenario is applied.',
1212
1236
  spec_ref: '§5.3 CC-07',
1213
1237
  },
1214
1238
  {
1215
- code: 'CC-08', severity: 'error',
1216
- title: 'Equity required mismatch',
1217
- description: 'sources_uses-derived equity disagrees with quick_metrics.equity_required.',
1218
- remediation: 'Set quick_metrics.equity_required = sources_uses.sources.equity.',
1239
+ code: 'CC-08', severity: 'warning',
1240
+ title: 'Appraised value differs between due diligence and valuation',
1241
+ description: 'due_diligence.appraisal.appraised_value differs from valuation.appraised_value by more than $1,000.',
1242
+ remediation: 'Restate valuation.appraised_value from the appraisal recorded in due_diligence (the appraisal variant when present), or update the appraisal record.',
1219
1243
  spec_ref: '§5.3 CC-08',
1220
1244
  },
1221
1245
  {
1222
1246
  code: 'CC-09', severity: 'warning',
1223
- title: 'Stage readiness gap',
1224
- description: 'A required section for the declared deal_stage is missing or low-confidence.',
1225
- remediation: 'Either complete the required sections for this stage or downgrade frontmatter.deal_stage.',
1247
+ title: 'Annual debt service differs between stress tests and debt structure',
1248
+ description: 'stress_tests.base_case.annual_debt_service differs from debt_structure.annual_debt_service by more than $500.',
1249
+ remediation: 'Restate the stress-test base case from debt_structure.annual_debt_service — the base case MUST carry the underwritten debt service.',
1226
1250
  spec_ref: '§5.3 CC-09',
1227
1251
  },
1228
1252
  {
1229
- code: 'CC-10', severity: 'info',
1230
- title: 'Stale provenance',
1231
- description: 'A section\'s _meta.timestamp is older than the file last_modified by more than 30 days.',
1232
- remediation: 'Refresh the section, supersede with a new agent/manual write, or mark deliberate stale.',
1253
+ code: 'CC-10', severity: 'error',
1254
+ title: 'Purchase price differs between Sources & Uses and valuation',
1255
+ description: 'sources_uses.uses.purchase_price does not match valuation.purchase_price (within $100).',
1256
+ remediation: 'State the purchase price once sources_uses.uses.purchase_price and valuation.purchase_price MUST agree.',
1233
1257
  spec_ref: '§5.3 CC-10',
1234
1258
  },
1235
1259
  {
@@ -1267,6 +1291,30 @@ export const BUILTIN_REMEDIATIONS = Object.freeze([
1267
1291
  remediation: 'Reconcile the trajectory endpoint with the stabilized-year model, or document why they diverge. The 2% tolerance is deliberate — the two are independent models of stabilization and exact agreement is not the goal (RFC 0008).',
1268
1292
  spec_ref: '§5.3 CC-15',
1269
1293
  },
1294
+ {
1295
+ code: 'PS-01', severity: 'warning', title: 'Malformed period series',
1296
+ description: 'A registered series has an invalid shape or period identity.',
1297
+ remediation: 'State valid periods in the registered grammar; do not infer dates or years.',
1298
+ spec_ref: 'UW_PROTOCOL_v1.md §VIII.2a',
1299
+ },
1300
+ {
1301
+ code: 'PS-02', severity: 'error', title: 'Duplicate period identity',
1302
+ description: 'A registered series states the same canonical period more than once.',
1303
+ remediation: 'Resolve the duplicate statements with the responsible producer; do not choose by row order.',
1304
+ spec_ref: 'UW_PROTOCOL_v1.md §VIII.2a',
1305
+ },
1306
+ {
1307
+ code: 'PS-03', severity: 'warning', title: 'Period kind mismatch',
1308
+ description: 'A static selector uses a different period kind from its registered series.',
1309
+ remediation: 'Use the series period kind; calendar dates and holding years do not convert implicitly.',
1310
+ spec_ref: 'UW_PROTOCOL_v1.md §VIII.2a',
1311
+ },
1312
+ {
1313
+ code: 'ROLE-01', severity: 'error', title: 'Invalid block role',
1314
+ description: 'A block declares a role outside the closed scalar vocabulary.',
1315
+ remediation: 'Have the responsible host correct or remove _role; do not infer a role from financial values.',
1316
+ spec_ref: 'UW_FORMAT_SPEC_v1.md §2.8',
1317
+ },
1270
1318
  {
1271
1319
  code: 'CC-16', severity: 'info',
1272
1320
  title: 'Section unresolvable for cross-checking',