@robosystems/client 0.5.7 → 0.5.8

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.
@@ -373,9 +373,16 @@ export declare class LedgerClient {
373
373
  * a forecast block's structure id = that scenario's parallel universe
374
374
  * (statement envelopes bind its latest computed month, metric
375
375
  * envelopes extend the series with "(forecast)"-labeled columns).
376
+ *
377
+ * `options.series` renders a statement block as its whole report-set
378
+ * time series — one column per period; combined with `scenarioId` the
379
+ * columns cross the actuals/forecast seam and forecast columns carry
380
+ * `periods[].forecast === true`. Non-statement block types ignore it
381
+ * (metric envelopes are always the full series).
376
382
  */
377
383
  getInformationBlock(graphId: string, id: string, options?: {
378
384
  scenarioId?: string;
385
+ series?: boolean;
379
386
  }): Promise<InformationBlock | null>;
380
387
  /**
381
388
  * List Information Block envelopes with optional block_type + category
@@ -259,9 +259,19 @@ class LedgerClient {
259
259
  * a forecast block's structure id = that scenario's parallel universe
260
260
  * (statement envelopes bind its latest computed month, metric
261
261
  * envelopes extend the series with "(forecast)"-labeled columns).
262
+ *
263
+ * `options.series` renders a statement block as its whole report-set
264
+ * time series — one column per period; combined with `scenarioId` the
265
+ * columns cross the actuals/forecast seam and forecast columns carry
266
+ * `periods[].forecast === true`. Non-statement block types ignore it
267
+ * (metric envelopes are always the full series).
262
268
  */
263
269
  async getInformationBlock(graphId, id, options) {
264
- const block = await this.gqlQuery(graphId, graphql_1.GetInformationBlockDocument, { id, scenarioId: options?.scenarioId ?? null }, 'Get information block', (data) => data.informationBlock ?? null);
270
+ const block = await this.gqlQuery(graphId, graphql_1.GetInformationBlockDocument, {
271
+ id,
272
+ scenarioId: options?.scenarioId ?? null,
273
+ series: options?.series ?? false,
274
+ }, 'Get information block', (data) => data.informationBlock ?? null);
265
275
  return block ?? null;
266
276
  }
267
277
  /**
@@ -1085,16 +1085,26 @@ export class LedgerClient {
1085
1085
  * a forecast block's structure id = that scenario's parallel universe
1086
1086
  * (statement envelopes bind its latest computed month, metric
1087
1087
  * envelopes extend the series with "(forecast)"-labeled columns).
1088
+ *
1089
+ * `options.series` renders a statement block as its whole report-set
1090
+ * time series — one column per period; combined with `scenarioId` the
1091
+ * columns cross the actuals/forecast seam and forecast columns carry
1092
+ * `periods[].forecast === true`. Non-statement block types ignore it
1093
+ * (metric envelopes are always the full series).
1088
1094
  */
1089
1095
  async getInformationBlock(
1090
1096
  graphId: string,
1091
1097
  id: string,
1092
- options?: { scenarioId?: string }
1098
+ options?: { scenarioId?: string; series?: boolean }
1093
1099
  ): Promise<InformationBlock | null> {
1094
1100
  const block = await this.gqlQuery(
1095
1101
  graphId,
1096
1102
  GetInformationBlockDocument,
1097
- { id, scenarioId: options?.scenarioId ?? null },
1103
+ {
1104
+ id,
1105
+ scenarioId: options?.scenarioId ?? null,
1106
+ series: options?.series ?? false,
1107
+ },
1098
1108
  'Get information block',
1099
1109
  (data) => data.informationBlock ?? null
1100
1110
  )
@@ -637,6 +637,8 @@ export type InformationBlockRendering = {
637
637
  /** One period column in a rendered statement. */
638
638
  export type InformationBlockRenderingPeriod = {
639
639
  end: Scalars['Date']['output'];
640
+ /** True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column. */
641
+ forecast: Maybe<Scalars['Boolean']['output']>;
640
642
  label: Maybe<Scalars['String']['output']>;
641
643
  start: Scalars['Date']['output'];
642
644
  };
@@ -1622,6 +1624,7 @@ export type QueryHoldingsArgs = {
1622
1624
  export type QueryInformationBlockArgs = {
1623
1625
  id: Scalars['ID']['input'];
1624
1626
  scenarioId?: InputMaybe<Scalars['String']['input']>;
1627
+ series?: Scalars['Boolean']['input'];
1625
1628
  };
1626
1629
  export type QueryInformationBlocksArgs = {
1627
1630
  blockType?: InputMaybe<Scalars['String']['input']>;
@@ -2773,6 +2776,7 @@ export type GetLedgerFiscalCalendarQuery = {
2773
2776
  export type GetInformationBlockQueryVariables = Exact<{
2774
2777
  id: Scalars['ID']['input'];
2775
2778
  scenarioId: InputMaybe<Scalars['String']['input']>;
2779
+ series?: Scalars['Boolean']['input'];
2776
2780
  }>;
2777
2781
  export type GetInformationBlockQuery = {
2778
2782
  informationBlock: {
@@ -2901,6 +2905,7 @@ export type GetInformationBlockQuery = {
2901
2905
  start: any;
2902
2906
  end: any;
2903
2907
  label: string | null;
2908
+ forecast: boolean | null;
2904
2909
  }>;
2905
2910
  validation: {
2906
2911
  passed: boolean;
@@ -3058,6 +3063,7 @@ export type ListInformationBlocksQuery = {
3058
3063
  start: any;
3059
3064
  end: any;
3060
3065
  label: string | null;
3066
+ forecast: boolean | null;
3061
3067
  }>;
3062
3068
  validation: {
3063
3069
  passed: boolean;
@@ -3480,6 +3486,7 @@ export type GetLedgerReportPackageQuery = {
3480
3486
  start: any;
3481
3487
  end: any;
3482
3488
  label: string | null;
3489
+ forecast: boolean | null;
3483
3490
  }>;
3484
3491
  validation: {
3485
3492
  passed: boolean;
@@ -1667,6 +1667,15 @@ exports.GetInformationBlockDocument = {
1667
1667
  variable: { kind: 'Variable', name: { kind: 'Name', value: 'scenarioId' } },
1668
1668
  type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } },
1669
1669
  },
1670
+ {
1671
+ kind: 'VariableDefinition',
1672
+ variable: { kind: 'Variable', name: { kind: 'Name', value: 'series' } },
1673
+ type: {
1674
+ kind: 'NonNullType',
1675
+ type: { kind: 'NamedType', name: { kind: 'Name', value: 'Boolean' } },
1676
+ },
1677
+ defaultValue: { kind: 'BooleanValue', value: false },
1678
+ },
1670
1679
  ],
1671
1680
  selectionSet: {
1672
1681
  kind: 'SelectionSet',
@@ -1685,6 +1694,11 @@ exports.GetInformationBlockDocument = {
1685
1694
  name: { kind: 'Name', value: 'scenarioId' },
1686
1695
  value: { kind: 'Variable', name: { kind: 'Name', value: 'scenarioId' } },
1687
1696
  },
1697
+ {
1698
+ kind: 'Argument',
1699
+ name: { kind: 'Name', value: 'series' },
1700
+ value: { kind: 'Variable', name: { kind: 'Name', value: 'series' } },
1701
+ },
1688
1702
  ],
1689
1703
  selectionSet: {
1690
1704
  kind: 'SelectionSet',
@@ -1922,6 +1936,7 @@ exports.GetInformationBlockDocument = {
1922
1936
  { kind: 'Field', name: { kind: 'Name', value: 'start' } },
1923
1937
  { kind: 'Field', name: { kind: 'Name', value: 'end' } },
1924
1938
  { kind: 'Field', name: { kind: 'Name', value: 'label' } },
1939
+ { kind: 'Field', name: { kind: 'Name', value: 'forecast' } },
1925
1940
  ],
1926
1941
  },
1927
1942
  },
@@ -2292,6 +2307,7 @@ exports.ListInformationBlocksDocument = {
2292
2307
  { kind: 'Field', name: { kind: 'Name', value: 'start' } },
2293
2308
  { kind: 'Field', name: { kind: 'Name', value: 'end' } },
2294
2309
  { kind: 'Field', name: { kind: 'Name', value: 'label' } },
2310
+ { kind: 'Field', name: { kind: 'Name', value: 'forecast' } },
2295
2311
  ],
2296
2312
  },
2297
2313
  },
@@ -3465,6 +3481,10 @@ exports.GetLedgerReportPackageDocument = {
3465
3481
  kind: 'Field',
3466
3482
  name: { kind: 'Name', value: 'label' },
3467
3483
  },
3484
+ {
3485
+ kind: 'Field',
3486
+ name: { kind: 'Name', value: 'forecast' },
3487
+ },
3468
3488
  ],
3469
3489
  },
3470
3490
  },
@@ -638,6 +638,8 @@ export type InformationBlockRendering = {
638
638
  /** One period column in a rendered statement. */
639
639
  export type InformationBlockRenderingPeriod = {
640
640
  end: Scalars['Date']['output']
641
+ /** True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column. */
642
+ forecast: Maybe<Scalars['Boolean']['output']>
641
643
  label: Maybe<Scalars['String']['output']>
642
644
  start: Scalars['Date']['output']
643
645
  }
@@ -1684,6 +1686,7 @@ export type QueryHoldingsArgs = {
1684
1686
  export type QueryInformationBlockArgs = {
1685
1687
  id: Scalars['ID']['input']
1686
1688
  scenarioId?: InputMaybe<Scalars['String']['input']>
1689
+ series?: Scalars['Boolean']['input']
1687
1690
  }
1688
1691
 
1689
1692
  export type QueryInformationBlocksArgs = {
@@ -2899,6 +2902,7 @@ export type GetLedgerFiscalCalendarQuery = {
2899
2902
  export type GetInformationBlockQueryVariables = Exact<{
2900
2903
  id: Scalars['ID']['input']
2901
2904
  scenarioId: InputMaybe<Scalars['String']['input']>
2905
+ series?: Scalars['Boolean']['input']
2902
2906
  }>
2903
2907
 
2904
2908
  export type GetInformationBlockQuery = {
@@ -3015,7 +3019,7 @@ export type GetInformationBlockQuery = {
3015
3019
  isSubtotal: boolean
3016
3020
  depth: number
3017
3021
  }>
3018
- periods: Array<{ start: any; end: any; label: string | null }>
3022
+ periods: Array<{ start: any; end: any; label: string | null; forecast: boolean | null }>
3019
3023
  validation: {
3020
3024
  passed: boolean
3021
3025
  checks: Array<string>
@@ -3157,7 +3161,7 @@ export type ListInformationBlocksQuery = {
3157
3161
  isSubtotal: boolean
3158
3162
  depth: number
3159
3163
  }>
3160
- periods: Array<{ start: any; end: any; label: string | null }>
3164
+ periods: Array<{ start: any; end: any; label: string | null; forecast: boolean | null }>
3161
3165
  validation: {
3162
3166
  passed: boolean
3163
3167
  checks: Array<string>
@@ -3566,7 +3570,7 @@ export type GetLedgerReportPackageQuery = {
3566
3570
  isSubtotal: boolean
3567
3571
  depth: number
3568
3572
  }>
3569
- periods: Array<{ start: any; end: any; label: string | null }>
3573
+ periods: Array<{ start: any; end: any; label: string | null; forecast: boolean | null }>
3570
3574
  validation: {
3571
3575
  passed: boolean
3572
3576
  checks: Array<string>
@@ -5747,6 +5751,15 @@ export const GetInformationBlockDocument = {
5747
5751
  variable: { kind: 'Variable', name: { kind: 'Name', value: 'scenarioId' } },
5748
5752
  type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } },
5749
5753
  },
5754
+ {
5755
+ kind: 'VariableDefinition',
5756
+ variable: { kind: 'Variable', name: { kind: 'Name', value: 'series' } },
5757
+ type: {
5758
+ kind: 'NonNullType',
5759
+ type: { kind: 'NamedType', name: { kind: 'Name', value: 'Boolean' } },
5760
+ },
5761
+ defaultValue: { kind: 'BooleanValue', value: false },
5762
+ },
5750
5763
  ],
5751
5764
  selectionSet: {
5752
5765
  kind: 'SelectionSet',
@@ -5765,6 +5778,11 @@ export const GetInformationBlockDocument = {
5765
5778
  name: { kind: 'Name', value: 'scenarioId' },
5766
5779
  value: { kind: 'Variable', name: { kind: 'Name', value: 'scenarioId' } },
5767
5780
  },
5781
+ {
5782
+ kind: 'Argument',
5783
+ name: { kind: 'Name', value: 'series' },
5784
+ value: { kind: 'Variable', name: { kind: 'Name', value: 'series' } },
5785
+ },
5768
5786
  ],
5769
5787
  selectionSet: {
5770
5788
  kind: 'SelectionSet',
@@ -6002,6 +6020,7 @@ export const GetInformationBlockDocument = {
6002
6020
  { kind: 'Field', name: { kind: 'Name', value: 'start' } },
6003
6021
  { kind: 'Field', name: { kind: 'Name', value: 'end' } },
6004
6022
  { kind: 'Field', name: { kind: 'Name', value: 'label' } },
6023
+ { kind: 'Field', name: { kind: 'Name', value: 'forecast' } },
6005
6024
  ],
6006
6025
  },
6007
6026
  },
@@ -6372,6 +6391,7 @@ export const ListInformationBlocksDocument = {
6372
6391
  { kind: 'Field', name: { kind: 'Name', value: 'start' } },
6373
6392
  { kind: 'Field', name: { kind: 'Name', value: 'end' } },
6374
6393
  { kind: 'Field', name: { kind: 'Name', value: 'label' } },
6394
+ { kind: 'Field', name: { kind: 'Name', value: 'forecast' } },
6375
6395
  ],
6376
6396
  },
6377
6397
  },
@@ -7554,6 +7574,10 @@ export const GetLedgerReportPackageDocument = {
7554
7574
  kind: 'Field',
7555
7575
  name: { kind: 'Name', value: 'label' },
7556
7576
  },
7577
+ {
7578
+ kind: 'Field',
7579
+ name: { kind: 'Name', value: 'forecast' },
7580
+ },
7557
7581
  ],
7558
7582
  },
7559
7583
  },
@@ -10,8 +10,8 @@ const graphql_request_1 = require("graphql-request");
10
10
  * branch. See `local/docs/specs/information-block.md` §2.
11
11
  */
12
12
  exports.GET_INFORMATION_BLOCK = (0, graphql_request_1.gql) `
13
- query GetInformationBlock($id: ID!, $scenarioId: String) {
14
- informationBlock(id: $id, scenarioId: $scenarioId) {
13
+ query GetInformationBlock($id: ID!, $scenarioId: String, $series: Boolean! = false) {
14
+ informationBlock(id: $id, scenarioId: $scenarioId, series: $series) {
15
15
  id
16
16
  blockType
17
17
  name
@@ -136,6 +136,7 @@ exports.GET_INFORMATION_BLOCK = (0, graphql_request_1.gql) `
136
136
  start
137
137
  end
138
138
  label
139
+ forecast
139
140
  }
140
141
  validation {
141
142
  passed
@@ -306,6 +307,7 @@ exports.LIST_INFORMATION_BLOCKS = (0, graphql_request_1.gql) `
306
307
  start
307
308
  end
308
309
  label
310
+ forecast
309
311
  }
310
312
  validation {
311
313
  passed
@@ -8,8 +8,8 @@ import { gql } from 'graphql-request'
8
8
  * branch. See `local/docs/specs/information-block.md` §2.
9
9
  */
10
10
  export const GET_INFORMATION_BLOCK = gql`
11
- query GetInformationBlock($id: ID!, $scenarioId: String) {
12
- informationBlock(id: $id, scenarioId: $scenarioId) {
11
+ query GetInformationBlock($id: ID!, $scenarioId: String, $series: Boolean! = false) {
12
+ informationBlock(id: $id, scenarioId: $scenarioId, series: $series) {
13
13
  id
14
14
  blockType
15
15
  name
@@ -134,6 +134,7 @@ export const GET_INFORMATION_BLOCK = gql`
134
134
  start
135
135
  end
136
136
  label
137
+ forecast
137
138
  }
138
139
  validation {
139
140
  passed
@@ -305,6 +306,7 @@ export const LIST_INFORMATION_BLOCKS = gql`
305
306
  start
306
307
  end
307
308
  label
309
+ forecast
308
310
  }
309
311
  validation {
310
312
  passed
@@ -165,6 +165,7 @@ exports.GET_REPORT_PACKAGE = (0, graphql_request_1.gql) `
165
165
  start
166
166
  end
167
167
  label
168
+ forecast
168
169
  }
169
170
  validation {
170
171
  passed
@@ -163,6 +163,7 @@ export const GET_REPORT_PACKAGE = gql`
163
163
  start
164
164
  end
165
165
  label
166
+ forecast
166
167
  }
167
168
  validation {
168
169
  passed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robosystems/client",
3
- "version": "0.5.7",
3
+ "version": "0.5.8",
4
4
  "description": "TypeScript client library for RoboSystems Financial Knowledge Graph API",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1268,6 +1268,12 @@ export type ComputeForecastResponse = {
1268
1268
  * Skipped
1269
1269
  */
1270
1270
  skipped?: Array<SkippedForecastLite>;
1271
+ /**
1272
+ * Diagnostics
1273
+ *
1274
+ * Articulation notes — a missing cash/earnings anchor, schedule contributions with no base-set landing spot, an absent cash-flow structure. Informational; the walk still computed.
1275
+ */
1276
+ diagnostics?: Array<string>;
1271
1277
  };
1272
1278
  /**
1273
1279
  * ComputeMetricsRequest
@@ -5033,15 +5039,33 @@ export type ForecastMonthLite = {
5033
5039
  /**
5034
5040
  * Balance Sheet Fact Set Id
5035
5041
  *
5036
- * Scenario BS FactSet upserted for the month (working-capital instants only in F-1 — the full BS roll is a later phase).
5042
+ * Scenario BS FactSet upserted for the month — the full roll: carry-forward, rule-driven working capital, schedule movements, RE roll, balancing cash (A = L + E by construction).
5037
5043
  */
5038
5044
  balance_sheet_fact_set_id?: string | null;
5045
+ /**
5046
+ * Cash Flow Fact Set Id
5047
+ *
5048
+ * Scenario CF FactSet upserted for the month — indirect-method, derived from BS deltas + NI, reconciled to the balancing ΔCash.
5049
+ */
5050
+ cash_flow_fact_set_id?: string | null;
5039
5051
  /**
5040
5052
  * Computed Count
5041
5053
  *
5042
- * Number of facts emitted for the month across both sets.
5054
+ * Number of facts emitted for the month across all sets.
5043
5055
  */
5044
5056
  computed_count?: number;
5057
+ /**
5058
+ * Verification Passed
5059
+ *
5060
+ * Whether every rule evaluated against the month's scenario sets passed (None = no rules ran for the month).
5061
+ */
5062
+ verification_passed?: boolean | null;
5063
+ /**
5064
+ * Verification Failures
5065
+ *
5066
+ * Failed/errored rule messages for the month (capped).
5067
+ */
5068
+ verification_failures?: Array<string>;
5045
5069
  };
5046
5070
  /**
5047
5071
  * ForgetOp
@@ -10754,6 +10778,12 @@ export type RenderingPeriodLite = {
10754
10778
  * Label
10755
10779
  */
10756
10780
  label?: string | null;
10781
+ /**
10782
+ * Forecast
10783
+ *
10784
+ * True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column.
10785
+ */
10786
+ forecast?: boolean | null;
10757
10787
  };
10758
10788
  /**
10759
10789
  * RenderingRowLite
package/sdk/types.gen.ts CHANGED
@@ -1307,6 +1307,12 @@ export type ComputeForecastResponse = {
1307
1307
  * Skipped
1308
1308
  */
1309
1309
  skipped?: Array<SkippedForecastLite>;
1310
+ /**
1311
+ * Diagnostics
1312
+ *
1313
+ * Articulation notes — a missing cash/earnings anchor, schedule contributions with no base-set landing spot, an absent cash-flow structure. Informational; the walk still computed.
1314
+ */
1315
+ diagnostics?: Array<string>;
1310
1316
  };
1311
1317
 
1312
1318
  /**
@@ -5161,15 +5167,33 @@ export type ForecastMonthLite = {
5161
5167
  /**
5162
5168
  * Balance Sheet Fact Set Id
5163
5169
  *
5164
- * Scenario BS FactSet upserted for the month (working-capital instants only in F-1 — the full BS roll is a later phase).
5170
+ * Scenario BS FactSet upserted for the month — the full roll: carry-forward, rule-driven working capital, schedule movements, RE roll, balancing cash (A = L + E by construction).
5165
5171
  */
5166
5172
  balance_sheet_fact_set_id?: string | null;
5173
+ /**
5174
+ * Cash Flow Fact Set Id
5175
+ *
5176
+ * Scenario CF FactSet upserted for the month — indirect-method, derived from BS deltas + NI, reconciled to the balancing ΔCash.
5177
+ */
5178
+ cash_flow_fact_set_id?: string | null;
5167
5179
  /**
5168
5180
  * Computed Count
5169
5181
  *
5170
- * Number of facts emitted for the month across both sets.
5182
+ * Number of facts emitted for the month across all sets.
5171
5183
  */
5172
5184
  computed_count?: number;
5185
+ /**
5186
+ * Verification Passed
5187
+ *
5188
+ * Whether every rule evaluated against the month's scenario sets passed (None = no rules ran for the month).
5189
+ */
5190
+ verification_passed?: boolean | null;
5191
+ /**
5192
+ * Verification Failures
5193
+ *
5194
+ * Failed/errored rule messages for the month (capped).
5195
+ */
5196
+ verification_failures?: Array<string>;
5173
5197
  };
5174
5198
 
5175
5199
  /**
@@ -11020,6 +11044,12 @@ export type RenderingPeriodLite = {
11020
11044
  * Label
11021
11045
  */
11022
11046
  label?: string | null;
11047
+ /**
11048
+ * Forecast
11049
+ *
11050
+ * True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column.
11051
+ */
11052
+ forecast?: boolean | null;
11023
11053
  };
11024
11054
 
11025
11055
  /**
package/types.gen.d.ts CHANGED
@@ -1268,6 +1268,12 @@ export type ComputeForecastResponse = {
1268
1268
  * Skipped
1269
1269
  */
1270
1270
  skipped?: Array<SkippedForecastLite>;
1271
+ /**
1272
+ * Diagnostics
1273
+ *
1274
+ * Articulation notes — a missing cash/earnings anchor, schedule contributions with no base-set landing spot, an absent cash-flow structure. Informational; the walk still computed.
1275
+ */
1276
+ diagnostics?: Array<string>;
1271
1277
  };
1272
1278
  /**
1273
1279
  * ComputeMetricsRequest
@@ -5033,15 +5039,33 @@ export type ForecastMonthLite = {
5033
5039
  /**
5034
5040
  * Balance Sheet Fact Set Id
5035
5041
  *
5036
- * Scenario BS FactSet upserted for the month (working-capital instants only in F-1 — the full BS roll is a later phase).
5042
+ * Scenario BS FactSet upserted for the month — the full roll: carry-forward, rule-driven working capital, schedule movements, RE roll, balancing cash (A = L + E by construction).
5037
5043
  */
5038
5044
  balance_sheet_fact_set_id?: string | null;
5045
+ /**
5046
+ * Cash Flow Fact Set Id
5047
+ *
5048
+ * Scenario CF FactSet upserted for the month — indirect-method, derived from BS deltas + NI, reconciled to the balancing ΔCash.
5049
+ */
5050
+ cash_flow_fact_set_id?: string | null;
5039
5051
  /**
5040
5052
  * Computed Count
5041
5053
  *
5042
- * Number of facts emitted for the month across both sets.
5054
+ * Number of facts emitted for the month across all sets.
5043
5055
  */
5044
5056
  computed_count?: number;
5057
+ /**
5058
+ * Verification Passed
5059
+ *
5060
+ * Whether every rule evaluated against the month's scenario sets passed (None = no rules ran for the month).
5061
+ */
5062
+ verification_passed?: boolean | null;
5063
+ /**
5064
+ * Verification Failures
5065
+ *
5066
+ * Failed/errored rule messages for the month (capped).
5067
+ */
5068
+ verification_failures?: Array<string>;
5045
5069
  };
5046
5070
  /**
5047
5071
  * ForgetOp
@@ -10754,6 +10778,12 @@ export type RenderingPeriodLite = {
10754
10778
  * Label
10755
10779
  */
10756
10780
  label?: string | null;
10781
+ /**
10782
+ * Forecast
10783
+ *
10784
+ * True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column.
10785
+ */
10786
+ forecast?: boolean | null;
10757
10787
  };
10758
10788
  /**
10759
10789
  * RenderingRowLite
package/types.gen.ts CHANGED
@@ -1307,6 +1307,12 @@ export type ComputeForecastResponse = {
1307
1307
  * Skipped
1308
1308
  */
1309
1309
  skipped?: Array<SkippedForecastLite>;
1310
+ /**
1311
+ * Diagnostics
1312
+ *
1313
+ * Articulation notes — a missing cash/earnings anchor, schedule contributions with no base-set landing spot, an absent cash-flow structure. Informational; the walk still computed.
1314
+ */
1315
+ diagnostics?: Array<string>;
1310
1316
  };
1311
1317
 
1312
1318
  /**
@@ -5161,15 +5167,33 @@ export type ForecastMonthLite = {
5161
5167
  /**
5162
5168
  * Balance Sheet Fact Set Id
5163
5169
  *
5164
- * Scenario BS FactSet upserted for the month (working-capital instants only in F-1 — the full BS roll is a later phase).
5170
+ * Scenario BS FactSet upserted for the month — the full roll: carry-forward, rule-driven working capital, schedule movements, RE roll, balancing cash (A = L + E by construction).
5165
5171
  */
5166
5172
  balance_sheet_fact_set_id?: string | null;
5173
+ /**
5174
+ * Cash Flow Fact Set Id
5175
+ *
5176
+ * Scenario CF FactSet upserted for the month — indirect-method, derived from BS deltas + NI, reconciled to the balancing ΔCash.
5177
+ */
5178
+ cash_flow_fact_set_id?: string | null;
5167
5179
  /**
5168
5180
  * Computed Count
5169
5181
  *
5170
- * Number of facts emitted for the month across both sets.
5182
+ * Number of facts emitted for the month across all sets.
5171
5183
  */
5172
5184
  computed_count?: number;
5185
+ /**
5186
+ * Verification Passed
5187
+ *
5188
+ * Whether every rule evaluated against the month's scenario sets passed (None = no rules ran for the month).
5189
+ */
5190
+ verification_passed?: boolean | null;
5191
+ /**
5192
+ * Verification Failures
5193
+ *
5194
+ * Failed/errored rule messages for the month (capped).
5195
+ */
5196
+ verification_failures?: Array<string>;
5173
5197
  };
5174
5198
 
5175
5199
  /**
@@ -11020,6 +11044,12 @@ export type RenderingPeriodLite = {
11020
11044
  * Label
11021
11045
  */
11022
11046
  label?: string | null;
11047
+ /**
11048
+ * Forecast
11049
+ *
11050
+ * True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column.
11051
+ */
11052
+ forecast?: boolean | null;
11023
11053
  };
11024
11054
 
11025
11055
  /**