@objectstack/lint 17.0.0 → 17.1.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/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { Manifest } from '@objectstack/sdui-parser';
2
+ import { SearchFieldMeta } from '@objectstack/spec/data';
2
3
  import { Options } from 'ajv';
3
4
  import { AccessMatrixParsed } from '@objectstack/spec/security';
4
- export { A as AUTHORING_COMMANDS, a as AUTHORING_RULES, b as AUTHORING_SURFACES, c as AuthoringCommand, d as AuthoringFinding, e as AuthoringRule, f as AuthoringRuleContext, g as AuthoringRuleInputTier, h as AuthoringRuleRun, i as AuthoringRuleTier, j as AuthoringSeverity, k as AuthoringSurface, E as EXPRESSION_INVALID, R as RuntimeGateResult, l as RuntimeStackContext, m as authoringRulesFor, n as buildRuntimeWriteSnapshots, r as runAuthoringRules, o as runRuntimeAuthoringRules, p as runtimeAuthoringRulesFor, q as runtimeGatedTypes, s as splitBySeverity, t as stackKeyForType } from './runtime-H-nDodRy.js';
5
+ export { A as AUTHORING_COMMANDS, a as AUTHORING_RULES, b as AUTHORING_SURFACES, c as AuthoringCommand, d as AuthoringFinding, e as AuthoringRule, f as AuthoringRuleContext, g as AuthoringRuleInputTier, h as AuthoringRuleRun, i as AuthoringRuleTier, j as AuthoringSeverity, k as AuthoringSurface, E as EXPRESSION_INVALID, R as RuntimeGateResult, l as RuntimePackageScope, m as RuntimeStackContext, n as authoringRulesFor, o as buildRuntimeWriteSnapshots, p as narrowObjectsToPackageClosure, r as runAuthoringRules, q as runRuntimeAuthoringRules, s as runtimeAuthoringRulesFor, t as runtimeGatedTypes, u as splitBySeverity, v as stackKeyForType } from './runtime-s3X9D9hm.js';
5
6
 
6
7
  /**
7
8
  * Build-time dashboard widget binding diagnostics (issues #1719, #1721).
@@ -107,7 +108,7 @@ interface WidgetBindingFinding {
107
108
  /** How to fix (or deliberately suppress) it. */
108
109
  hint: string;
109
110
  }
110
- type AnyRec$F = Record<string, unknown>;
111
+ type AnyRec$G = Record<string, unknown>;
111
112
  /**
112
113
  * Validate every dashboard widget's dataset binding. Returns the list of
113
114
  * findings (empty = clean). Caller decides how to surface them: `error`
@@ -115,7 +116,7 @@ type AnyRec$F = Record<string, unknown>;
115
116
  * should fail validate/build; `warning` findings are advisory and must
116
117
  * never fail the build on their own.
117
118
  */
118
- declare function validateWidgetBindings(stack: AnyRec$F): WidgetBindingFinding[];
119
+ declare function validateWidgetBindings(stack: AnyRec$G): WidgetBindingFinding[];
119
120
 
120
121
  interface ExprIssue {
121
122
  where: string;
@@ -128,12 +129,12 @@ interface ExprIssue {
128
129
  */
129
130
  severity?: 'error' | 'warning';
130
131
  }
131
- type AnyRec$E = Record<string, unknown>;
132
+ type AnyRec$F = Record<string, unknown>;
132
133
  /**
133
134
  * Validate every predicate in the stack. Returns the list of issues (empty =
134
135
  * clean). Caller decides how to surface / whether to fail the build.
135
136
  */
136
- declare function validateStackExpressions(stack: AnyRec$E): ExprIssue[];
137
+ declare function validateStackExpressions(stack: AnyRec$F): ExprIssue[];
137
138
 
138
139
  /**
139
140
  * The corrective sentence, lifted **verbatim** from `unevaluableRuleError` in
@@ -314,7 +315,7 @@ interface ListViewModeFinding {
314
315
  hint: string;
315
316
  }
316
317
  declare const LIST_VIEW_FILTERS_IN_VIEWS_MODE = "list-view-filters-in-views-mode";
317
- type AnyRec$D = Record<string, unknown>;
318
+ type AnyRec$E = Record<string, unknown>;
318
319
  /**
319
320
  * Flag ADR-0047 "views" mode violations on an object's built-in named views or a
320
321
  * `defineView` default `list` / named `listViews`: `quickFilters`, or a `tabs`
@@ -324,7 +325,7 @@ type AnyRec$D = Record<string, unknown>;
324
325
  *
325
326
  * Feed the PRE-parse stack (normalizeStackInput output) — see file header.
326
327
  */
327
- declare function validateListViewMode(stack: AnyRec$D): ListViewModeFinding[];
328
+ declare function validateListViewMode(stack: AnyRec$E): ListViewModeFinding[];
328
329
 
329
330
  type FunctionalCompletenessSeverity = 'error' | 'warning';
330
331
  interface FunctionalCompletenessFinding {
@@ -439,7 +440,7 @@ declare const FLOW_TIME_RELATIVE_DESCRIPTOR_UNROUTABLE = "flow-time-relative-des
439
440
  * call sites that each skip it.
440
441
  */
441
442
  declare const FLOW_TRIGGER_UNROUTABLE = "flow-trigger-unroutable";
442
- type AnyRec$C = Record<string, unknown>;
443
+ type AnyRec$D = Record<string, unknown>;
443
444
  /**
444
445
  * Validate auto-launched flow trigger wiring against the stack definition.
445
446
  *
@@ -448,7 +449,7 @@ type AnyRec$C = Record<string, unknown>;
448
449
  * owns the `timeRelative` descriptor's contract, which is the point: the rule
449
450
  * ASKS that schema rather than restating it.
450
451
  */
451
- declare function validateFlowTriggerReadiness(stack: AnyRec$C): FlowTriggerReadinessFinding[];
452
+ declare function validateFlowTriggerReadiness(stack: AnyRec$D): FlowTriggerReadinessFinding[];
452
453
 
453
454
  type FlowTemplatePathSeverity = 'error' | 'warning';
454
455
  interface FlowTemplatePathFinding {
@@ -464,12 +465,12 @@ interface FlowTemplatePathFinding {
464
465
  declare const FLOW_TEMPLATE_UNKNOWN_FIELD = "flow-template-unknown-field";
465
466
  declare const FLOW_TEMPLATE_LOOKUP_TRAVERSAL = "flow-template-lookup-traversal";
466
467
  declare const FLOW_TEMPLATE_FIELD_UNPROVISIONED = "flow-template-field-unprovisioned";
467
- type AnyRec$B = Record<string, unknown>;
468
+ type AnyRec$C = Record<string, unknown>;
468
469
  /**
469
470
  * Validate `{record.<path>}` template references across every record-change
470
471
  * flow. Pure and dependency-free; safe on pre- or post-parse stacks.
471
472
  */
472
- declare function validateFlowTemplatePaths(stack: AnyRec$B): FlowTemplatePathFinding[];
473
+ declare function validateFlowTemplatePaths(stack: AnyRec$C): FlowTemplatePathFinding[];
473
474
 
474
475
  type ReadonlyFlowWriteSeverity = 'error' | 'warning';
475
476
  interface ReadonlyFlowWriteFinding {
@@ -484,12 +485,12 @@ interface ReadonlyFlowWriteFinding {
484
485
  }
485
486
  declare const FLOW_UPDATE_READONLY_FIELD = "flow-update-readonly-field";
486
487
  declare const FLOW_UPDATE_READONLY_WHEN_FIELD = "flow-update-readonly-when-field";
487
- type AnyRec$A = Record<string, unknown>;
488
+ type AnyRec$B = Record<string, unknown>;
488
489
  /**
489
490
  * Validate flow `update_record` writes against target-object readonly
490
491
  * declarations. Pure and dependency-free; safe on pre- or post-parse stacks.
491
492
  */
492
- declare function validateReadonlyFlowWrites(stack: AnyRec$A): ReadonlyFlowWriteFinding[];
493
+ declare function validateReadonlyFlowWrites(stack: AnyRec$B): ReadonlyFlowWriteFinding[];
493
494
 
494
495
  type ViewContainerSeverity = 'error' | 'warning';
495
496
  interface ViewContainerFinding {
@@ -526,14 +527,14 @@ declare const STYLE_CLASSNAME_TAILWIND = "style-classname-tailwind";
526
527
  declare const STYLE_RESPONSIVE_NO_BASE = "style-responsive-no-base";
527
528
  declare const STYLE_UNKNOWN_CSS_PROPERTY = "style-unknown-css-property";
528
529
  declare const STYLE_UNKNOWN_TOKEN = "style-unknown-token";
529
- type AnyRec$z = Record<string, unknown>;
530
+ type AnyRec$A = Record<string, unknown>;
530
531
  /**
531
532
  * Validate every page's component tree for SDUI styling correctness (ADR-0065).
532
533
  * Returns findings (empty = clean). `error` findings describe styles that are
533
534
  * silently dropped and should fail validate/build; `warning` findings are
534
535
  * advisory (typos, drift, footguns).
535
536
  */
536
- declare function validateResponsiveStyles(stack: AnyRec$z): StyleFinding[];
537
+ declare function validateResponsiveStyles(stack: AnyRec$A): StyleFinding[];
537
538
 
538
539
  type JsxPageSeverity = 'error' | 'warning';
539
540
  interface JsxPageFinding {
@@ -546,8 +547,8 @@ interface JsxPageFinding {
546
547
  message: string;
547
548
  hint: string;
548
549
  }
549
- type AnyRec$y = Record<string, unknown>;
550
- declare function validateJsxPages(stack: AnyRec$y, opts?: {
550
+ type AnyRec$z = Record<string, unknown>;
551
+ declare function validateJsxPages(stack: AnyRec$z, opts?: {
551
552
  manifest?: Manifest;
552
553
  }): JsxPageFinding[];
553
554
 
@@ -560,8 +561,8 @@ interface ReactPageFinding {
560
561
  message: string;
561
562
  hint: string;
562
563
  }
563
- type AnyRec$x = Record<string, unknown>;
564
- declare function validateReactPages(stack: AnyRec$x): ReactPageFinding[];
564
+ type AnyRec$y = Record<string, unknown>;
565
+ declare function validateReactPages(stack: AnyRec$y): ReactPageFinding[];
565
566
 
566
567
  type ReactPropSeverity = 'error' | 'warning';
567
568
  interface ReactPropFinding {
@@ -572,14 +573,14 @@ interface ReactPropFinding {
572
573
  message: string;
573
574
  hint: string;
574
575
  }
575
- type AnyRec$w = Record<string, unknown>;
576
+ type AnyRec$x = Record<string, unknown>;
576
577
  declare const REACT_CHART_FIELD_UNKNOWN = "react-chart-field-unknown";
577
578
  declare const REACT_CHART_FIELD_UNPROVISIONED = "react-chart-field-unprovisioned";
578
579
  declare const REACT_CHART_AGGREGATE_INVALID = "react-chart-aggregate-invalid";
579
580
  declare const REACT_CHART_AXIS_UNKNOWN = "react-chart-axis-unknown";
580
581
  declare const REACT_CHART_DRILLDOWN_INVALID = "react-chart-drilldown-invalid";
581
582
  declare const REACT_BLOCK_NEEDS_RECORD_CONTEXT = "react-block-needs-record-context";
582
- declare function validateReactPageProps(stack: AnyRec$w): ReactPropFinding[];
583
+ declare function validateReactPageProps(stack: AnyRec$x): ReactPropFinding[];
583
584
 
584
585
  type SourceStyleSeverity = 'error' | 'warning';
585
586
  interface SourceStyleFinding {
@@ -591,8 +592,8 @@ interface SourceStyleFinding {
591
592
  hint: string;
592
593
  }
593
594
  declare const PAGE_SOURCE_CLASSNAME = "page-source-className-tailwind";
594
- type AnyRec$v = Record<string, unknown>;
595
- declare function validatePageSourceStyling(stack: AnyRec$v): SourceStyleFinding[];
595
+ type AnyRec$w = Record<string, unknown>;
596
+ declare function validatePageSourceStyling(stack: AnyRec$w): SourceStyleFinding[];
596
597
 
597
598
  /**
598
599
  * Build-time record-title diagnostics (ADR-0079).
@@ -636,14 +637,14 @@ interface RecordTitleFinding {
636
637
  /** How to fix it. */
637
638
  hint: string;
638
639
  }
639
- type AnyRec$u = Record<string, unknown>;
640
+ type AnyRec$v = Record<string, unknown>;
640
641
  /**
641
642
  * Validate every object's record-title declaration. Returns the list of
642
643
  * findings (empty = clean). Both rules are advisory (`warning`): the caller
643
644
  * must never fail the build on them alone — auto-provision + the `Record #<id>`
644
645
  * floor guarantee a resolvable title at runtime.
645
646
  */
646
- declare function validateRecordTitle(stack: AnyRec$u): RecordTitleFinding[];
647
+ declare function validateRecordTitle(stack: AnyRec$v): RecordTitleFinding[];
647
648
 
648
649
  declare const FIELD_GROUP_UNDECLARED = "field-group-undeclared";
649
650
  declare const FIELD_GROUP_EMPTY = "field-group-empty";
@@ -665,13 +666,13 @@ interface SemanticRoleFinding {
665
666
  /** How to fix it. */
666
667
  hint: string;
667
668
  }
668
- type AnyRec$t = Record<string, unknown>;
669
+ type AnyRec$u = Record<string, unknown>;
669
670
  /**
670
671
  * Validate every object's semantic-role pointers. Returns the list of
671
672
  * findings (empty = clean). Advisory only — the caller must never fail the
672
673
  * build on these alone.
673
674
  */
674
- declare function validateSemanticRoles(stack: AnyRec$t): SemanticRoleFinding[];
675
+ declare function validateSemanticRoles(stack: AnyRec$u): SemanticRoleFinding[];
675
676
 
676
677
  declare const FORM_FIELD_UNKNOWN = "form-field-unknown";
677
678
  declare const FORM_COLSPAN_ABSOLUTE = "absolute-colspan-discouraged";
@@ -690,12 +691,12 @@ interface FormLayoutFinding {
690
691
  /** How to fix it. */
691
692
  hint: string;
692
693
  }
693
- type AnyRec$s = Record<string, unknown>;
694
+ type AnyRec$t = Record<string, unknown>;
694
695
  /**
695
696
  * Validate authored form-view layout. Returns findings (empty = clean).
696
697
  * Advisory only — the caller must never fail the build on these alone.
697
698
  */
698
- declare function validateFormLayout(stack: AnyRec$s): FormLayoutFinding[];
699
+ declare function validateFormLayout(stack: AnyRec$t): FormLayoutFinding[];
699
700
 
700
701
  declare const VISIBILITY_ROOT_MISLAYERED = "visibility-root-mislayered";
701
702
  declare const VISIBILITY_BARE_IDENTIFIER = "visibility-bare-identifier";
@@ -751,7 +752,7 @@ interface VisibilityFinding {
751
752
  /** How to fix it. */
752
753
  hint: string;
753
754
  }
754
- type AnyRec$r = Record<string, unknown>;
755
+ type AnyRec$s = Record<string, unknown>;
755
756
  /**
756
757
  * Validate conditional-visibility predicates across authored views and pages.
757
758
  *
@@ -776,7 +777,7 @@ type AnyRec$r = Record<string, unknown>;
776
777
  * bare-identifier checks are layer-agnostic — but the ROOT their hints prescribe
777
778
  * is not, which is the second half of what #7815 fixes.
778
779
  */
779
- declare function validateVisibilityPredicates(stack: AnyRec$r, opts?: VisibilityOptions): VisibilityFinding[];
780
+ declare function validateVisibilityPredicates(stack: AnyRec$s, opts?: VisibilityOptions): VisibilityFinding[];
780
781
 
781
782
  declare const PREDICATE_PATH_UNRESOLVED = "predicate-path-unresolved";
782
783
  declare const PREDICATE_PATH_UNROOTED = "predicate-path-unrooted";
@@ -819,7 +820,7 @@ interface PredicatePathOptions {
819
820
  */
820
821
  resolveSchema?: (schemaId: string) => unknown;
821
822
  }
822
- type AnyRec$q = Record<string, unknown>;
823
+ type AnyRec$r = Record<string, unknown>;
823
824
  /**
824
825
  * Refuse a metadata-form predicate that names a path the target schema does not
825
826
  * declare (#7010).
@@ -848,7 +849,7 @@ type AnyRec$q = Record<string, unknown>;
848
849
  *
849
850
  * Returns findings (empty = clean).
850
851
  */
851
- declare function validatePredicatePathRefs(stack: AnyRec$q, opts?: PredicatePathOptions): PredicatePathFinding[];
852
+ declare function validatePredicatePathRefs(stack: AnyRec$r, opts?: PredicatePathOptions): PredicatePathFinding[];
852
853
 
853
854
  declare const CAPABILITY_REFERENCE_UNKNOWN = "capability-reference-unknown";
854
855
  type CapabilityRefSeverity = 'error' | 'warning';
@@ -866,12 +867,12 @@ interface CapabilityRefFinding {
866
867
  /** How to fix it. */
867
868
  hint: string;
868
869
  }
869
- type AnyRec$p = Record<string, unknown>;
870
+ type AnyRec$q = Record<string, unknown>;
870
871
  /**
871
872
  * Validate every capability reference in a stack. Returns findings (empty =
872
873
  * clean). Advisory only — callers must not fail the build on these alone.
873
874
  */
874
- declare function validateCapabilityReferences(stack: AnyRec$p): CapabilityRefFinding[];
875
+ declare function validateCapabilityReferences(stack: AnyRec$q): CapabilityRefFinding[];
875
876
 
876
877
  declare const APPROVAL_APPROVER_NOT_MEMBERSHIP_TIER = "approval-approver-not-membership-tier";
877
878
  declare const APPROVAL_APPROVER_TYPE_DEPRECATED = "approval-approver-type-deprecated";
@@ -897,12 +898,12 @@ interface ApprovalApproverFinding {
897
898
  /** How to fix it. */
898
899
  hint: string;
899
900
  }
900
- type AnyRec$o = Record<string, unknown>;
901
+ type AnyRec$p = Record<string, unknown>;
901
902
  /**
902
903
  * Validate the approvers of every Approval node in the stack's flows.
903
904
  * Returns findings (empty = clean).
904
905
  */
905
- declare function validateApprovalApprovers(stack: AnyRec$o): ApprovalApproverFinding[];
906
+ declare function validateApprovalApprovers(stack: AnyRec$p): ApprovalApproverFinding[];
906
907
 
907
908
  type SeedReplaySafetySeverity = 'error' | 'warning';
908
909
  interface SeedReplaySafetyFinding {
@@ -916,7 +917,7 @@ interface SeedReplaySafetyFinding {
916
917
  hint: string;
917
918
  }
918
919
  declare const SEED_INSERT_MODE_DUPLICATES_ON_REPLAY = "seed-insert-mode-duplicates-on-replay";
919
- type AnyRec$n = Record<string, unknown>;
920
+ type AnyRec$o = Record<string, unknown>;
920
921
  /**
921
922
  * Flag every seed dataset declared with `mode: 'insert'` — the one non-idempotent
922
923
  * mode, which duplicates its rows on every replay boot (framework#3434). Returns
@@ -926,7 +927,7 @@ type AnyRec$n = Record<string, unknown>;
926
927
  * Reads `stack.data` (the `SeedSchema[]` fixtures). Safe on any shape — a stack
927
928
  * with no `data` array yields no findings.
928
929
  */
929
- declare function validateSeedReplaySafety(stack: AnyRec$n): SeedReplaySafetyFinding[];
930
+ declare function validateSeedReplaySafety(stack: AnyRec$o): SeedReplaySafetyFinding[];
930
931
 
931
932
  type SeedStateMachineSeverity = 'warning';
932
933
  interface SeedStateMachineFinding {
@@ -940,7 +941,7 @@ interface SeedStateMachineFinding {
940
941
  hint: string;
941
942
  }
942
943
  declare const SEED_VALUE_OUTSIDE_STATE_MACHINE = "seed-value-outside-state-machine";
943
- type AnyRec$m = Record<string, unknown>;
944
+ type AnyRec$n = Record<string, unknown>;
944
945
  /**
945
946
  * Flag every seed record whose `state_machine`-governed field carries a value
946
947
  * the machine does not declare (framework#3433 follow-up). Returns the findings
@@ -953,7 +954,7 @@ type AnyRec$m = Record<string, unknown>;
953
954
  * unresolved `cel` Expression envelope, a number) is skipped: it cannot be
954
955
  * statically compared to the declared-state set.
955
956
  */
956
- declare function validateSeedStateMachine(stack: AnyRec$m): SeedStateMachineFinding[];
957
+ declare function validateSeedStateMachine(stack: AnyRec$n): SeedStateMachineFinding[];
957
958
 
958
959
  declare const SECURITY_OWD_UNSET = "security-owd-unset";
959
960
  declare const SECURITY_OWD_ALIAS = "security-owd-alias";
@@ -982,7 +983,7 @@ interface SecurityFinding {
982
983
  /** How to fix it. */
983
984
  hint: string;
984
985
  }
985
- type AnyRec$l = Record<string, unknown>;
986
+ type AnyRec$m = Record<string, unknown>;
986
987
  /**
987
988
  * Validate the security posture of a stack. Returns findings (empty = clean).
988
989
  * `error` findings gate the build in `os compile`; `info` is advisory.
@@ -990,7 +991,7 @@ type AnyRec$l = Record<string, unknown>;
990
991
  * `opts.nowMs` injects the clock for the ADR-0091 authoring-time expiry rule
991
992
  * (tests); production callers omit it.
992
993
  */
993
- declare function validateSecurityPosture(stack: AnyRec$l, opts?: {
994
+ declare function validateSecurityPosture(stack: AnyRec$m, opts?: {
994
995
  nowMs?: number;
995
996
  }): SecurityFinding[];
996
997
  /**
@@ -1021,7 +1022,7 @@ declare function validateSecurityPosture(stack: AnyRec$l, opts?: {
1021
1022
  * carries `positions`/`apps` and both types are gated — at which point it
1022
1023
  * crosses whole, in one edit, as its own entry.
1023
1024
  */
1024
- declare function validateSecurityRoleWord(stack: AnyRec$l): SecurityFinding[];
1025
+ declare function validateSecurityRoleWord(stack: AnyRec$m): SecurityFinding[];
1025
1026
 
1026
1027
  /**
1027
1028
  * [ADR-0105 D6] The two organization-axis red lines, enforced at authoring time.
@@ -1134,6 +1135,10 @@ declare function validateOrgAxisRedLines(stack: unknown): OrgAxisFinding[];
1134
1135
  declare const SHARING_RULE_UNLOWERABLE_CONDITION = "sharing-rule-unlowerable-condition";
1135
1136
  /** A `condition` reading `current_user.*` — unresolvable when grants are materialized. */
1136
1137
  declare const SHARING_RULE_RUNTIME_VARIABLE_CONDITION = "sharing-rule-runtime-variable-condition";
1138
+ /** The anchor object's OWD is already the widest — sharing has nothing to widen. */
1139
+ declare const SHARING_RULE_OBJECT_NOT_SHAREABLE = "sharing-rule-object-not-shareable";
1140
+ /** The anchor object is a master-detail DETAIL — its shares belong to its master. */
1141
+ declare const SHARING_RULE_OBJECT_CONTROLLED_BY_PARENT = "sharing-rule-object-controlled-by-parent";
1137
1142
  type SharingRuleEnforceabilitySeverity = 'error' | 'warning';
1138
1143
  interface SharingRuleEnforceabilityFinding {
1139
1144
  severity: SharingRuleEnforceabilitySeverity;
@@ -1149,8 +1154,9 @@ interface SharingRuleEnforceabilityFinding {
1149
1154
  hint: string;
1150
1155
  }
1151
1156
  /**
1152
- * Gate stack-declared sharing rules on the ONE thing their runtime consumer
1153
- * does with `condition`: lower it to a `criteria_json` filter.
1157
+ * Gate stack-declared sharing rules on the two things their runtime consumers
1158
+ * do with them: lower the `condition` to a `criteria_json` filter, and write a
1159
+ * `sys_record_share` row on the `object` the rule is anchored to.
1154
1160
  *
1155
1161
  * Pure `(stack) => Finding[]`; tolerates the normalized and the parsed tier.
1156
1162
  */
@@ -1223,19 +1229,27 @@ declare function validateRlsPredicateEnforceability(stack: unknown): RlsPredicat
1223
1229
  * in `@objectstack/spec` 17.0.0, so authoring one is a `tsc` error and a parse
1224
1230
  * error carrying the prescription. There is no widget target left to resolve.
1225
1231
  *
1226
- * Resolution mirrors the objectui runtime dispatch (`DashboardRenderer` +
1227
- * `DashboardView`) so the lint flags exactly what would fail to resolve at
1228
- * runtime:
1232
+ * Resolution mirrors the objectui runtime dispatch (`DashboardRenderer`
1233
+ * hands the target to the SHARED `useActionModal` since objectui#4782) so the
1234
+ * lint flags exactly what would fail to resolve at runtime:
1229
1235
  *
1230
1236
  * actionType 'script' → `actionUrl` must name a DEFINED action (`stack.actions`
1231
1237
  * or any `object.actions`, by `name`). A script target that names no
1232
1238
  * defined action fails open at runtime ("action not found"). → ERROR.
1233
1239
  *
1234
- * actionType 'modal' → `actionUrl` resolves if it names a defined action, OR
1235
- * matches the runtime `<verb>_<object>` convention the modalHandler
1236
- * implements (create_/new_/add_/edit_/update_ + a defined object), OR is a
1237
- * bare defined object name (the handler falls back to that object's create
1238
- * form). Otherwise ERROR.
1240
+ * actionType 'modal' → `actionUrl` names a declared PAGE (`stack.pages`), and
1241
+ * only a page maintainer ruling objectstack#6739-A (2026-08-09). This
1242
+ * rule used to accept a defined action name, a bare object name, and the
1243
+ * `<verb>_<object>` convention (create_/new_/add_/edit_/update_ + object),
1244
+ * on the claim that it mirrored `DashboardView`'s own modal handler. That
1245
+ * handler — the convention's last live copy — was deleted by objectui#4782
1246
+ * (after objectui#4764 retired the object fallback in `useActionModal`):
1247
+ * the runtime resolves a string modal target against page metadata and
1248
+ * REFUSES everything else, so each retired limb here blessed a button that
1249
+ * dispatches to a named refusal at runtime. The ruling explicitly declined
1250
+ * the middle shape (keep the prefix, reject bare object names): a target
1251
+ * names the page `create_opportunity`, or it names nothing. Opening an
1252
+ * object's form is `actionType: 'form'`. Otherwise → ERROR.
1239
1253
  *
1240
1254
  * actionType 'url' → a relative in-app path. WARN when a recognizable
1241
1255
  * `<collection>/<name>` segment (objects/reports/dashboards/pages/views)
@@ -1274,13 +1288,13 @@ interface DashboardActionRefFinding {
1274
1288
  /** How to fix it. */
1275
1289
  hint: string;
1276
1290
  }
1277
- type AnyRec$k = Record<string, unknown>;
1291
+ type AnyRec$l = Record<string, unknown>;
1278
1292
  /**
1279
1293
  * Validate every dashboard header action reference in a stack. Returns
1280
1294
  * findings (empty = clean). `script`/`modal` dead targets are errors; `url`
1281
1295
  * unresolved routes are warnings.
1282
1296
  */
1283
- declare function validateDashboardActionRefs(stack: AnyRec$k): DashboardActionRefFinding[];
1297
+ declare function validateDashboardActionRefs(stack: AnyRec$l): DashboardActionRefFinding[];
1284
1298
 
1285
1299
  /**
1286
1300
  * Build-time filter-placeholder diagnostics (issue #3574).
@@ -1364,6 +1378,85 @@ interface FilterTokenFinding {
1364
1378
  */
1365
1379
  declare function validateFilterTokens(stack: Record<string, unknown> | undefined | null): FilterTokenFinding[];
1366
1380
 
1381
+ /**
1382
+ * Build-time refusal of a bare dashboard date-range PRESET name in an ordering
1383
+ * comparand (#8793 — the ruled C half of #8690).
1384
+ *
1385
+ * `last_7_days` / `last_30_days` / `last_90_days` and their ten calendar
1386
+ * siblings are REAL declared names (`DATE_RANGE_PRESETS`,
1387
+ * `@objectstack/spec/data`) — but only for the dashboard date-filter positions,
1388
+ * where the console lowers them to `{date-macro}` bounds before any query is
1389
+ * sent. Authored as a bare filter comparand, nothing resolves them. Measured
1390
+ * end to end on #8690 (51 rows seeded / 38 in-window):
1391
+ *
1392
+ * ```
1393
+ * $gte "last_30_days" HTTP 200 count=0 <- silent zero (the defect)
1394
+ * $gte "{30_days_ago}" HTTP 200 count=38 <- the spelling that works
1395
+ * ```
1396
+ *
1397
+ * The engine now refuses the bare name on a declared temporal field at QUERY
1398
+ * time (`INVALID_FILTER` / 400, PR #8808 — the B half). This rule is the
1399
+ * AUTHORING-time half the ruling shipped alongside it: the error reaches the
1400
+ * author — an AI author in particular, whose correction loop only sees what
1401
+ * can fail the build or the publish — instead of the first viewer of an empty
1402
+ * chart. The same refusal exists in the schema door
1403
+ * (`data/filter.zod.ts`, Mongo-shape carriers only); this rule additionally
1404
+ * reaches the shapes no `FilterConditionSchema` parse touches — view filter
1405
+ * rules (`{ field, operator, value }`) and filter-array triples
1406
+ * (`['created_at', '>=', …]`) — and reports with the located `where` / `path`
1407
+ * the CLI commands render.
1408
+ *
1409
+ * ## The boundary — ordering positions only, in all three shapes
1410
+ *
1411
+ * This rule is field-agnostic, so the judgement rides on POSITION, exactly as
1412
+ * the schema door's #8793 note lays out at length:
1413
+ *
1414
+ * - **Judged:** `$gt` / `$gte` / `$lt` / `$lte` comparands and `$between`
1415
+ * endpoints (Mongo shape); `>` / `>=` / `<` / `<=` / `between` triples and
1416
+ * every alias `canonicalAstOperator` folds onto them (`gt`, `after`, …);
1417
+ * `greater_than` / `less_than` / `greater_than_or_equal` /
1418
+ * `less_than_or_equal` / `before` / `after` / `between` view filter rules
1419
+ * and every alias `normalizeFilterOperator` folds onto them. An ORDERED
1420
+ * comparison against a declared preset name has no legitimate reading.
1421
+ * - **Not judged:** equality and membership (`=`, `equals`, `$eq`, `$ne`,
1422
+ * `$in`, `$nin`, …). A select/picklist column legitimately stores values
1423
+ * that collide with preset names (`GlobalFilterSchema`'s own pins protect
1424
+ * `type: 'select', defaultValue: 'this_quarter'`), and on a declared
1425
+ * temporal field the engine door still refuses these at query time with the
1426
+ * field's type in hand.
1427
+ * - **Only the 13 declared names.** A near-miss (`last_60_days`) is not this
1428
+ * rule's business — on a temporal field the engine's field-typed door
1429
+ * catches it; judging undeclared strings here would be a guessed superset.
1430
+ *
1431
+ * Both vocabularies' `{placeholder}` spellings never collide with a preset
1432
+ * name (a preset carries no braces), so this rule and `validate-filter-tokens`
1433
+ * cannot double-report one value.
1434
+ */
1435
+ declare const FILTER_PRESET_COMPARAND = "filter-preset-comparand";
1436
+ type PresetComparandSeverity = 'error' | 'warning';
1437
+ interface PresetComparandFinding {
1438
+ /** Always `error` — the runtime refuses the query, or silently returns zero rows. */
1439
+ severity: PresetComparandSeverity;
1440
+ /** Diagnostic rule id. */
1441
+ rule: string;
1442
+ /** Human-readable location, e.g. `dashboard "sales" · widget "my_deals"`. */
1443
+ where: string;
1444
+ /** Config path, e.g. `dashboards[0].widgets[2].filter.created_at.$gte`. */
1445
+ path: string;
1446
+ /** What is wrong. */
1447
+ message: string;
1448
+ /** How to fix it. */
1449
+ hint: string;
1450
+ }
1451
+ /**
1452
+ * Validate every authored filter across a stack for bare preset comparands.
1453
+ *
1454
+ * Pure `(stack) => Finding[]`; no I/O. Needs no resolution context — the
1455
+ * judgement is on the filter literal alone — which is what qualifies it for
1456
+ * the runtime publish gate's per-write snapshot.
1457
+ */
1458
+ declare function validatePresetComparands(stack: Record<string, unknown> | undefined | null): PresetComparandFinding[];
1459
+
1367
1460
  /** A literal `$and: []` / `$or: []` / `$not: {}` — a combinator with no operands. */
1368
1461
  declare const FILTER_EMPTY_COMBINATOR = "filter-empty-combinator";
1369
1462
  /** A literal `{}` where a filter node is authored — the whole filter, or a branch. */
@@ -1410,12 +1503,12 @@ interface ObjectRefFinding {
1410
1503
  /** How to fix it. */
1411
1504
  hint: string;
1412
1505
  }
1413
- type AnyRec$j = Record<string, unknown>;
1506
+ type AnyRec$k = Record<string, unknown>;
1414
1507
  /**
1415
1508
  * Validate every object-name reference on the surfaces listed in the module
1416
1509
  * header. Returns findings (empty = clean).
1417
1510
  */
1418
- declare function validateObjectReferences(stack: AnyRec$j): ObjectRefFinding[];
1511
+ declare function validateObjectReferences(stack: AnyRec$k): ObjectRefFinding[];
1419
1512
 
1420
1513
  type ReferenceIntegritySeverity = 'error' | 'warning';
1421
1514
  /**
@@ -1621,6 +1714,21 @@ declare function validateNavObjectServability(stack: unknown): NavObjectServabil
1621
1714
  * the runtime would refuse — `created_by` in a view's narrowing — is a
1622
1715
  * missed finding, not a wrong one.)
1623
1716
  *
1717
+ * Skip 3 answers EXISTENCE, and since #8404 it no longer ends the matter. On an
1718
+ * ADR-0015 `external` object the platform registers its injected anchors and
1719
+ * provisions no storage behind them (#7865 / #8116), so `owner_id` there is
1720
+ * addressable and empty on every record. Existence rightly stays silent —
1721
+ * PROVENANCE is a second question, asked only of the names skip 3 already
1722
+ * decided not to flag, and answered by the per-object index
1723
+ * ({@link indexUnprovisionedAnchors}) rather than the object-independent union.
1724
+ * A declared anchor survives into the resolved allow-list and the view's
1725
+ * `$searchFields` narrowing, so it reads as search coverage and scans a column
1726
+ * that can never match — #4830's own failure mode reached by a different route.
1727
+ * WARNING, never gating, for #4330's cost asymmetry: the remote schema is not
1728
+ * visible to this pass, so the finding describes a degradation, not a refusal
1729
+ * (the same call `warnUnprovisionedAnchors` makes in `validate-expressions.ts`
1730
+ * and the four filter/binding rules #8340 wired).
1731
+ *
1624
1732
  * Dotted paths are NOT skipped here, unlike every sibling rule. Elsewhere
1625
1733
  * `owner_id.name` is left alone because the query engine resolves the traversal;
1626
1734
  * search does not — `resolveSearchFields` matches the field map by exact string,
@@ -1630,6 +1738,7 @@ declare function validateNavObjectServability(stack: unknown): NavObjectServabil
1630
1738
 
1631
1739
  declare const SEARCHABLE_FIELD_UNKNOWN = "searchable-field-unknown";
1632
1740
  declare const SEARCHABLE_FIELD_UNSEARCHABLE = "searchable-field-unsearchable";
1741
+ declare const SEARCHABLE_FIELD_UNPROVISIONED = "searchable-field-unprovisioned";
1633
1742
  type SearchableFieldSeverity = 'error' | 'warning';
1634
1743
  interface SearchableFieldFinding {
1635
1744
  /** Always `error` — a stale entry narrows, widens or refuses the search (see module note). */
@@ -1658,7 +1767,24 @@ interface SearchableFieldFinding {
1658
1767
  * runtime would refuse are flagged (#4830).
1659
1768
  */
1660
1769
  type SearchableFieldRole = 'canonical' | 'narrowing';
1661
- type AnyRec$i = Record<string, unknown>;
1770
+ type AnyRec$j = Record<string, unknown>;
1771
+ /**
1772
+ * The slice of an object the search checks resolve against: the authored
1773
+ * field map (existence + the `type`/`hidden` meta search resolution reads),
1774
+ * plus the object's own declarations the runtime's resolution consumes.
1775
+ * `null` when the object declares no readable field map (external /
1776
+ * introspected — nothing to judge against).
1777
+ */
1778
+ interface ObjectSearchTarget {
1779
+ /** Authored field names, for the existence check. */
1780
+ names: Set<string>;
1781
+ /** name → the metadata slice `resolveSearchFieldResolution` reads. */
1782
+ fields: Record<string, SearchFieldMeta>;
1783
+ /** The object's own `searchableFields`, when declared as an array. */
1784
+ searchableFields?: string[];
1785
+ /** `nameField` / `displayNameField` — ordering only, passed for parity. */
1786
+ displayField?: string;
1787
+ }
1662
1788
  /**
1663
1789
  * Validate every `searchableFields` declaration in the stack — the object's own
1664
1790
  * (the canonical set, ADR-0061) and the list views that narrow it. Returns
@@ -1669,7 +1795,49 @@ type AnyRec$i = Record<string, unknown>;
1669
1795
  * `validate-react-page-props` — the gate that already parses that source —
1670
1796
  * runs the same `checkSearchableFieldList` core on it (#4329).
1671
1797
  */
1672
- declare function validateSearchableFields(stack: AnyRec$i): SearchableFieldFinding[];
1798
+ declare function validateSearchableFields(stack: AnyRec$j): SearchableFieldFinding[];
1799
+
1800
+ declare const SORT_FIELD_UNKNOWN = "sort-field-unknown";
1801
+ declare const SORT_FIELD_UNSORTABLE = "sort-field-unsortable";
1802
+ type SortableFieldSeverity = 'error' | 'warning';
1803
+ interface SortableFieldFinding {
1804
+ /** Always `error` — both verdicts are a `400 INVALID_SORT` at request time. */
1805
+ severity: SortableFieldSeverity;
1806
+ /** Diagnostic rule id. */
1807
+ rule: string;
1808
+ /** Human-readable location, e.g. `object "crm_opportunity" › listViews.pipeline`. */
1809
+ where: string;
1810
+ /** Config path, e.g. `objects[0].listViews.pipeline.sort[1]`. */
1811
+ path: string;
1812
+ /** What is wrong. */
1813
+ message: string;
1814
+ /** How to fix it. */
1815
+ hint: string;
1816
+ }
1817
+ type AnyRec$i = Record<string, unknown>;
1818
+ /**
1819
+ * Check ONE authored `sort` declaration against the object it is bound to —
1820
+ * the shared core behind every list-view surface that declares an ordering.
1821
+ *
1822
+ * `fieldsByObject` is {@link indexObjectSearchTargets}' index, reused rather
1823
+ * than rebuilt: the SEARCH and SORT doors must agree about which fields an
1824
+ * object has and what type each one is, and two hand-written readers of the
1825
+ * same field map is the drift `system-fields.ts` and `view-walk.ts` were both
1826
+ * created to end. `subject` names the declaration for the message; the parsed
1827
+ * key's position is appended to `path` so the author can go straight to it.
1828
+ */
1829
+ declare function checkSortDeclaration(declared: unknown, objectName: string | undefined, fieldsByObject: ReadonlyMap<string, ObjectSearchTarget | null>, where: string, path: string, subject: string): SortableFieldFinding[];
1830
+ /**
1831
+ * Validate every list-view `sort` declaration in the stack — the object's
1832
+ * built-in named list views and the `defineView` aggregates that declare one.
1833
+ * Returns findings (empty = clean).
1834
+ *
1835
+ * The surfaces walked here are exactly `validateSearchableFields`', for the
1836
+ * same reason: these are the declarations that lower into an engine `orderBy`
1837
+ * over the bound object's own columns. See the module note for the four
1838
+ * sort-carrying surfaces that were checked and deliberately left out.
1839
+ */
1840
+ declare function validateSortableFields(stack: AnyRec$i): SortableFieldFinding[];
1673
1841
 
1674
1842
  declare const ACTION_NAME_UNDEFINED = "action-name-undefined";
1675
1843
  type ActionNameRefSeverity = 'error' | 'warning';
@@ -2304,6 +2472,18 @@ interface HookBodyWriteFinding {
2304
2472
  hint: string;
2305
2473
  }
2306
2474
  declare const HOOK_BODY_WRITE_UNKNOWN_FIELD = "hook-body-write-unknown-field";
2475
+ /**
2476
+ * [#8663] The write-axis twin of `flow-template-field-unprovisioned` (#8340):
2477
+ * the body writes a field {@link IMPLICIT_FIELDS} exempts, but on THIS target
2478
+ * the platform registered that anchor without provisioning storage for it.
2479
+ *
2480
+ * A separate id at `warning` severity rather than a reclassification of
2481
+ * {@link HOOK_BODY_WRITE_UNKNOWN_FIELD}, matching #8340's precedent exactly:
2482
+ * the existence verdict is unchanged (the name IS addressable), and what is
2483
+ * added is a second, independently suppressible finding on the path where the
2484
+ * existence check stays silent.
2485
+ */
2486
+ declare const HOOK_BODY_WRITE_UNPROVISIONED_ANCHOR = "hook-body-write-unprovisioned-anchor";
2307
2487
  /** One syntactic write shape the extractor recognizes. */
2308
2488
  interface HookBodyWritePattern {
2309
2489
  /** Stable pattern id, carried on every extracted write. */
@@ -2402,6 +2582,12 @@ interface ActionBodyWriteFinding {
2402
2582
  }
2403
2583
  declare const ACTION_BODY_WRITE_UNKNOWN_FIELD = "action-body-write-unknown-field";
2404
2584
  declare const ACTION_RECORD_WRITE_DISCARDED = "action-record-write-discarded";
2585
+ /**
2586
+ * [#8663] The action-surface twin of `hook-body-write-unprovisioned-anchor`.
2587
+ * Same question, same wording, same `warning` severity — this rule and the hook
2588
+ * rule share {@link IMPLICIT_FIELDS}, so they shared its blind spot too.
2589
+ */
2590
+ declare const ACTION_BODY_WRITE_UNPROVISIONED_ANCHOR = "action-body-write-unprovisioned-anchor";
2405
2591
  /** @deprecated alias — the exclusion shape is shared with the hook rule. */
2406
2592
  type ActionBodyWriteExclusion = BodyWritePatternExclusion;
2407
2593
  /**
@@ -2435,9 +2621,17 @@ type AnyRec$6 = Record<string, unknown>;
2435
2621
  */
2436
2622
  declare function validateActionBodyWrites(stack: AnyRec$6): ActionBodyWriteFinding[];
2437
2623
 
2438
- type FlowNodeWriteSeverity = 'error';
2624
+ /**
2625
+ * `error` for the existence verdict — a literal key against a literal object is
2626
+ * a certainty (see the module note). [#8663] `warning` for the provenance one:
2627
+ * the same widening `validateFlowTemplatePaths` carries, for the same reason.
2628
+ * The two questions have different certainties, so they cannot share a
2629
+ * severity; the suite that runs this rule is severity-agnostic by contract and
2630
+ * carries each finding's own value through.
2631
+ */
2632
+ type FlowNodeWriteSeverity = 'error' | 'warning';
2439
2633
  interface FlowNodeWriteFinding {
2440
- /** Always `error` a literal key against a literal object is a certainty (see module note). */
2634
+ /** Per-findingsee {@link FlowNodeWriteSeverity}, which says why it is not a constant. */
2441
2635
  severity: FlowNodeWriteSeverity;
2442
2636
  rule: string;
2443
2637
  /** Human-readable location, e.g. `flow "close_deal" › node "Mark won"`. */
@@ -2448,6 +2642,20 @@ interface FlowNodeWriteFinding {
2448
2642
  hint: string;
2449
2643
  }
2450
2644
  declare const FLOW_NODE_WRITE_UNKNOWN_FIELD = "flow-node-write-unknown-field";
2645
+ /**
2646
+ * [#8663] The flow-node twin of `hook-body-write-unprovisioned-anchor`. This
2647
+ * rule reached the same blind spot from the same direction: it imports
2648
+ * {@link IMPLICIT_FIELDS} from the hook rule, so it inherited the set's
2649
+ * object-independence along with its contents.
2650
+ *
2651
+ * ⚠️ `warning`, NOT this rule's usual `error`. The existence verdict gates
2652
+ * because a literal key against a literal object is a certainty; the provenance
2653
+ * verdict is a claim about a REMOTE schema this repo cannot see, so it advises.
2654
+ * Reclassifying it upward would convert a silent case straight into a build
2655
+ * break — the shape ADR-0072 D1 forbids, at the one severity where it cannot be
2656
+ * ignored.
2657
+ */
2658
+ declare const FLOW_NODE_WRITE_UNPROVISIONED_ANCHOR = "flow-node-write-unprovisioned-anchor";
2451
2659
  /** Flow node types whose `config.fields` keys this rule resolves. */
2452
2660
  declare const FLOW_WRITE_NODE_TYPES: readonly string[];
2453
2661
  /** A `fields`-bearing node type this rule does NOT cover yet, and why. */
@@ -2646,6 +2854,42 @@ interface LintIssue {
2646
2854
  path: string;
2647
2855
  fix?: string;
2648
2856
  }
2857
+ /**
2858
+ * A {@link LintIssue} that also states the HUMAN-READABLE location, for rules
2859
+ * that are adapted into `AuthoringFinding` (`packages/lint/src/authoring-rules.ts`).
2860
+ *
2861
+ * `AuthoringFinding` declares two location slots with different jobs — `where`
2862
+ * ("human-readable location", e.g. `object "leave_request"`) and `path` ("config
2863
+ * path", e.g. `objects[3].sharingModel`) — and every CLI command renders the
2864
+ * first as the line's prefix: `os validate` prints
2865
+ * `• ${where}: ${message}` and then `rule: ${rule} at ${path}`.
2866
+ *
2867
+ * `LintIssue` carries only the positional `path`, so the three ADR-0120
2868
+ * uniqueness rules' registry adapters had nothing else to map and set
2869
+ * `where: f.path`. Measured on `origin/main`: an author saw
2870
+ * `• objects[44].indexes[1]: "sys_account" declares index … at objects[44].indexes[1]`
2871
+ * — the same positional string twice, and an index into the MERGED object array
2872
+ * that appears in no file the author wrote (44 objects from
2873
+ * `@objectstack/platform-objects` plus one from `@objectstack/metadata-core`).
2874
+ * No information was lost — the object's name is in the message — but the
2875
+ * location slot said nothing the `at` clause did not already say, and every
2876
+ * other rule in the table spells it `object "sys_account"`.
2877
+ *
2878
+ * Stating `where` at the PRODUCER rather than reconstructing it in the adapter
2879
+ * is deliberate: only the rule still holds the object it walked. Making it
2880
+ * REQUIRED here (rather than adding `where?` to `LintIssue` and writing
2881
+ * `f.where ?? f.path` at the adapter) is the same discipline — a consumer-side
2882
+ * fallback would let the next rule ship the positional spelling again, silently.
2883
+ *
2884
+ * `path` is unchanged and stays positional: it is the slot that is SUPPOSED to
2885
+ * be a config path, `os validate` prints it after `at`, and the runtime gate's
2886
+ * `fingerprint` reads `where` and `path` together (making `where` more specific
2887
+ * cannot merge two findings that were distinct).
2888
+ */
2889
+ interface LocatedLintIssue extends LintIssue {
2890
+ /** Human-readable location, e.g. `object "sys_account" · index 'uniq_org_email'`. */
2891
+ where: string;
2892
+ }
2649
2893
  declare const UNIQUE_DOUBLE_DECLARATION = "unique/double-declaration";
2650
2894
  declare const UNIQUE_UNSCOPED_DECLARED_INDEX = "unique/unscoped-declared-index";
2651
2895
  declare const UNIQUE_LEGACY_ORGANIZATION_COMPOSITE = "unique/legacy-organization-composite";
@@ -2671,7 +2915,7 @@ declare const UNIQUE_LEGACY_ORGANIZATION_COMPOSITE = "unique/legacy-organization
2671
2915
  * Wiring: own AUTHORING_RULES entry (validate/build), and `lintDataModel`
2672
2916
  * calls it for `os lint` — each command reports each finding exactly once.
2673
2917
  */
2674
- declare function lintUnscopedDeclaredIndexes(objects: any[]): LintIssue[];
2918
+ declare function lintUnscopedDeclaredIndexes(objects: any[]): LocatedLintIssue[];
2675
2919
  /**
2676
2920
  * R10 (ADR-0120 D5b) — the same single column carries BOTH a field-level
2677
2921
  * `unique` and a declared single-column unique index (#3991), judged in the
@@ -2701,7 +2945,7 @@ declare function lintUnscopedDeclaredIndexes(objects: any[]): LintIssue[];
2701
2945
  * Advisory. The resulting stack is well-defined — the cost is an intent that
2702
2946
  * never takes effect, not a broken artifact — so this never fails a build.
2703
2947
  */
2704
- declare function lintUniqueDeclarations(objects: any[]): LintIssue[];
2948
+ declare function lintUniqueDeclarations(objects: any[]): LocatedLintIssue[];
2705
2949
  /**
2706
2950
  * R12 (ADR-0120 D5c) — a declared unique index whose column list CONTAINS the
2707
2951
  * organization column: the hand-written per-organization composite (S6),
@@ -2728,7 +2972,7 @@ declare function lintUniqueDeclarations(objects: any[]): LintIssue[];
2728
2972
  * unique declared on the organization column ALONE, which is not a composite and
2729
2973
  * has no per-organization reading to recover.
2730
2974
  */
2731
- declare function lintLegacyOrganizationComposites(objects: any[]): LintIssue[];
2975
+ declare function lintLegacyOrganizationComposites(objects: any[]): LocatedLintIssue[];
2732
2976
  /**
2733
2977
  * Lint the relationship / data-modeling conventions across the full object set.
2734
2978
  * Pure and deterministic — safe to call from both the `lint` command and the
@@ -2736,4 +2980,4 @@ declare function lintLegacyOrganizationComposites(objects: any[]): LintIssue[];
2736
2980
  */
2737
2981
  declare function lintDataModel(objects: any[]): LintIssue[];
2738
2982
 
2739
- export { ACTION_BODY_WRITE_EXCLUSIONS, ACTION_BODY_WRITE_PATTERNS, ACTION_BODY_WRITE_PATTERN_IDS, ACTION_BODY_WRITE_UNKNOWN_FIELD, ACTION_NAME_UNDEFINED, ACTION_NO_PLACEMENT, ACTION_RECORD_WRITE_DISCARDED, ACTION_RECORD_WRITE_PATTERNS, ACTION_RECORD_WRITE_PATTERN_IDS, AGENT_AUTHORING_WITHDRAWN, AI_SKILL_SURFACE_MISMATCH, AI_SKILL_TOOL_UNRESOLVED, APPROVAL_APPROVERS_MAY_RESOLVE_EMPTY, APPROVAL_APPROVER_CROSS_ORG_UNSUPPORTED, APPROVAL_APPROVER_NOT_MEMBERSHIP_TIER, APPROVAL_APPROVER_TYPE_DEPRECATED, APPROVAL_APPROVER_TYPE_UNKNOWN, APPROVAL_APPROVER_TYPE_UNSUPPORTED, APPROVAL_DECISION_OUTPUTS_RESERVED, APPROVAL_ESCALATION_REASSIGN_NO_TARGET, APPROVAL_EXPRESSION_INVALID, APPROVAL_EXPRESSION_NO_EMPTY_POLICY, AUTONUMBER_LITERAL_TOKEN, AUTONUMBER_OPTIONAL_FIELD, AUTONUMBER_SELF_REFERENCE, AUTONUMBER_UNKNOWN_FIELD, type ActionBodyWriteExclusion, type ActionBodyWriteFinding, type ActionBodyWriteSeverity, type ActionLocationsFinding, type ActionLocationsSeverity, type ActionNameRefFinding, type ActionNameRefSeverity, type AiAgentAuthoringFinding, type AiAgentAuthoringSeverity, type AiSurfaceAffinityFinding, type AiSurfaceAffinitySeverity, type AiToolRefFinding, type AiToolRefSeverity, type ApprovalApproverFinding, type ApprovalApproverSeverity, type AutonumberLintFinding, type BodyWritePatternExclusion, CAPABILITY_REFERENCE_UNKNOWN, CHART_AXIS_NOT_SELECTED, CHART_CONFIG_MISSING, CHART_DATASET_UNKNOWN, CHART_DIMENSION_UNKNOWN, CHART_FIELD_UNKNOWN, CHART_MEASURE_UNKNOWN, COMPONENT_PROPS_INVALID, COMPONENT_PROPS_UNKNOWN_KEY, type CapabilityRefFinding, type CapabilityRefSeverity, type ChartBindingFinding, type ChartBindingSeverity, type ComponentPropsFinding, type ComponentPropsSeverity, DASHBOARD_ACTION_ROUTE_UNRESOLVED, DASHBOARD_ACTION_TARGET_UNDEFINED, DASHBOARD_FILTER_FIELD_UNKNOWN, DASHBOARD_FILTER_FIELD_UNPROVISIONED, DEFAULT_AGENT_OUTSIDE_ROSTER, type DashboardActionRefFinding, type DashboardActionRefSeverity, type EmptyCombinatorFinding, type EmptyCombinatorSeverity, type ExprIssue, type ExtractedHookBodyWrite, type ExtractedHookBodyWriteSet, FIELD_GROUP_EMPTY, FIELD_GROUP_SHADOWED, FIELD_GROUP_UNDECLARED, FILTER_EMPTY_COMBINATOR, FILTER_EMPTY_NODE, FILTER_TOKEN_UNKNOWN, FLOW_APPROVAL_REVISE_DEAD_END, FLOW_APPROVAL_REVISE_DISABLED, FLOW_APPROVAL_REVISE_TARGET_NOT_SERVICE_OWNED, FLOW_APPROVAL_REVISE_UNMARKED_BACKEDGE, FLOW_BARE_DOLLAR_REF, FLOW_BRANCH_LABEL_UNMATCHED, FLOW_DATE_EQUALITY_FILTER, FLOW_DECISION_UNCONDITIONAL_BRANCH, FLOW_DEFAULT_EDGE_WITH_CONDITION, FLOW_DOUBLE_BRACE_INTERP, FLOW_DRAFT_STATUS_AMBIGUOUS, FLOW_ERROR_LABEL_NOT_FAULT, FLOW_INERT_NODE_CONDITION, FLOW_MULTIPLE_DEFAULT_EDGES, FLOW_MULTI_WRITE_UNFILTERED, FLOW_NODE_WRITE_UNKNOWN_FIELD, FLOW_PHANTOM_AGGREGATION, FLOW_RUNAS_UNSCOPED, FLOW_TEMPLATE_FIELD_UNPROVISIONED, FLOW_TEMPLATE_LOOKUP_TRAVERSAL, FLOW_TEMPLATE_UNKNOWN_FIELD, FLOW_TIME_RELATIVE_ANTIPATTERN, FLOW_TIME_RELATIVE_DESCRIPTOR_INVALID, FLOW_TIME_RELATIVE_DESCRIPTOR_UNROUTABLE, FLOW_TRIGGER_UNKNOWN_EVENT, FLOW_TRIGGER_UNKNOWN_OBJECT, FLOW_TRIGGER_UNROUTABLE, FLOW_UPDATE_READONLY_FIELD, FLOW_UPDATE_READONLY_WHEN_FIELD, FLOW_WRITE_NODE_TYPES, FLOW_WRITE_NODE_TYPES_DEFERRED, FORM_COLSPAN_ABSOLUTE, FORM_FIELD_UNKNOWN, type FilterTokenFinding, type FilterTokenSeverity, type FlowLintFinding, type FlowNodeWriteFinding, type FlowNodeWriteSeverity, type FlowTemplatePathFinding, type FlowTemplatePathSeverity, type FlowTriggerReadinessFinding, type FlowTriggerReadinessSeverity, type FlowWriteNodeDeferral, type FormLayoutFinding, type FormLayoutSeverity, type FunctionalCompletenessFinding, type FunctionalCompletenessSeverity, HOOK_BODY_WRITE_EXCLUSIONS, HOOK_BODY_WRITE_PATTERNS, HOOK_BODY_WRITE_PATTERN_IDS, HOOK_BODY_WRITE_UNKNOWN_FIELD, type HookBodyWriteFinding, type HookBodyWritePattern, type HookBodyWriteSeverity, type JsxPageFinding, type JsxPageSeverity, LIST_VIEW_FILTERS_IN_VIEWS_MODE, LIVENESS_DEAD_PROPERTY, LIVENESS_EXPERIMENTAL_PROPERTY, type LintIssue, type ListViewModeFinding, type ListViewModeSeverity, type LivenessLintFinding, MANAGED_API_METHOD_UNAFFORDABLE, MAX_SCHEMA_WALK_DEPTH, MEASURE_AGGREGATE_INCOHERENT, type ManagedApiMethodFinding, NAV_OBJECT_UNGRANTED, NAV_OBJECT_UNSERVABLE, NAV_TARGET_UNRESOLVED, NULL_GUARD_HINT, type NavAccessFinding, type NavAccessSeverity, type NavObjectServabilityFinding, type NavTargetRefFinding, type NavTargetRefSeverity, type NullGuardFinding, type NullGuardOptions, OBJECT_REFERENCE_UNKNOWN, OBJECT_REFERENCE_UNREGISTERED_PLATFORM, OPEN_VOCABULARY_PROBES, ORG_AXIS_CROSS_ORG_BU_GRANT, ORG_AXIS_PERMISSION_INHERITANCE, type ObjectRefFinding, type ObjectRefSeverity, type OrgAxisFinding, type OrgAxisSeverity, PAGE_FIELD_UNKNOWN, PAGE_FIELD_UNPROVISIONED, PAGE_SOURCE_CLASSNAME, PREDICATE_PATH_UNRESOLVED, PREDICATE_PATH_UNROOTED, PREDICATE_RHS_PATH_SHAPED, PRE_SEAL_PHASES, type PageFieldFinding, type PageFieldSeverity, type PredicatePathFinding, type PredicatePathOptions, type PredicatePathSeverity, REACT_BLOCK_NEEDS_RECORD_CONTEXT, REACT_CHART_AGGREGATE_INVALID, REACT_CHART_AXIS_UNKNOWN, REACT_CHART_DRILLDOWN_INVALID, REACT_CHART_FIELD_UNKNOWN, REACT_CHART_FIELD_UNPROVISIONED, REFERENCE_INTEGRITY_RULES, RLS_PREDICATE_OVER_BUDGET, RLS_PREDICATE_UNENFORCEABLE, RLS_PREDICATE_UNPARSEABLE, RUNTIME_AJV_OPTIONS, type ReactPageFinding, type ReactPageSeverity, type ReactPropFinding, type ReactPropSeverity, type ReadonlyFlowWriteFinding, type ReadonlyFlowWriteSeverity, type RecordTitleFinding, type RecordTitleSeverity, type ReferenceIntegrityFinding, type ReferenceIntegrityRule, type ReferenceIntegritySeverity, type RlsPredicateFinding, type RlsPredicateSeverity, type RuleCompilabilityFinding, type RuleCompilabilitySeverity, type RuleSchemaFormatFinding, type RuleSchemaFormatSeverity, SEAL_MARKERS, SEARCHABLE_FIELD_UNKNOWN, SEARCHABLE_FIELD_UNSEARCHABLE, SECURITY_ANCHOR_HIGH_PRIVILEGE, SECURITY_BOOK_AUDIENCE_UNKNOWN_SET, SECURITY_CBP_NO_RELATION, SECURITY_DELEGATION_MISSING_REASON, SECURITY_EXTERNAL_WIDER, SECURITY_FLS_UNQUALIFIED_KEY, SECURITY_GRANT_EXPIRED_AT_AUTHORING, SECURITY_MASTER_DETAIL_UNGRANTED, SECURITY_OWD_ALIAS, SECURITY_OWD_UNSET, SECURITY_PRIVATE_NO_READSCOPE, SECURITY_ROLE_WORD, SECURITY_WILDCARD_VAMA, SEED_INSERT_MODE_DUPLICATES_ON_REPLAY, SEED_VALUE_OUTSIDE_STATE_MACHINE, SEMANTIC_ROLE_FIELD_UNKNOWN, SEMANTIC_ROLE_FIELD_UNPROVISIONED, SHARING_RULE_RUNTIME_VARIABLE_CONDITION, SHARING_RULE_UNLOWERABLE_CONDITION, STARTUP_OPEN_VOCABULARY_VERDICT, STARTUP_VERDICT_ASSERTIVE_WORDING, STARTUP_VERDICT_HINT, STYLE_CLASSNAME_TAILWIND, STYLE_NODE_MISSING_ID, STYLE_RESPONSIVE_NO_BASE, STYLE_UNKNOWN_CSS_PROPERTY, STYLE_UNKNOWN_TOKEN, type SearchableFieldFinding, type SearchableFieldRole, type SearchableFieldSeverity, type SecurityFinding, type SecuritySeverity, type SeedReplaySafetyFinding, type SeedReplaySafetySeverity, type SeedStateMachineFinding, type SeedStateMachineSeverity, type SemanticRoleFinding, type SemanticRoleSeverity, type Severity, type SharingRuleEnforceabilityFinding, type SharingRuleEnforceabilitySeverity, type SourceStyleFinding, type SourceStyleSeverity, type StartupRegistryVerdictFinding, type StartupRegistryVerdictOptions, type StartupRegistryVerdictSeverity, type StyleFinding, type StyleSeverity, TABLE_COUNT_ONLY, TITLE_FORMAT_RETIRED, TITLE_UNRESOLVABLE, TRANSLATION_OPTION_KEY_UNKNOWN, TRANSLATION_SECTION_NAME_MISSING, TRANSLATION_TARGET_UNKNOWN, type TranslatableSectionFinding, type TranslatableSectionSeverity, type TranslationRefFinding, type TranslationRefSeverity, UNIQUE_DOUBLE_DECLARATION, UNIQUE_LEGACY_ORGANIZATION_COMPOSITE, UNIQUE_UNSCOPED_DECLARED_INDEX, VALIDATION_RULE_REGEX_UNCOMPILABLE, VALIDATION_RULE_SCHEMA_UNCOMPILABLE, VALIDATION_RULE_SCHEMA_UNKNOWN_FORMAT, VIEW_CONTAINER_SHAPE, VIEW_KEY_COLLISION, VIEW_REF_FORM_TARGET_KIND, VIEW_REF_FORM_TARGET_MISSING, VISIBILITY_BARE_IDENTIFIER, VISIBILITY_PREDICATE_OVER_BUDGET, VISIBILITY_PREDICATE_SYNTAX, VISIBILITY_ROOT_MISLAYERED, type ViewContainerFinding, type ViewContainerSeverity, type ViewRefFinding, type VisibilityFinding, type VisibilityLayer, type VisibilityOptions, type VisibilitySeverity, WIDGET_DATASET_UNKNOWN, WIDGET_DIMENSION_UNKNOWN, WIDGET_LEGACY_ANALYTICS_SHAPE, WIDGET_LEGACY_ANALYTICS_UNRENDERABLE, WIDGET_MEASURE_UNKNOWN, type WalkedComponent, type WalkedValidationRule, type WidgetBindingFinding, type WidgetBindingSeverity, buildAccessMatrix, diffAccessMatrix, extractHookBodyWriteSet, extractHookBodyWrites, findStartupRegistryVerdicts, findUnguardedNullableOperands, isSourceAuthoredPage, lintAutonumberFormats, lintDataModel, lintFlowPatterns, lintLegacyOrganizationComposites, lintLivenessProperties, lintUniqueDeclarations, lintUnscopedDeclaredIndexes, lintViewRefs, nearestRegisteredFormat, nullGuardMessage, validateActionBodyWrites, validateActionLocations, validateActionNameRefs, validateAiAgentAuthoring, validateAiSurfaceAffinity, validateAiToolReferences, validateApprovalApprovers, validateCapabilityReferences, validateChartBindings, validateComponentProps, validateDashboardActionRefs, validateEmptyCombinators, validateFilterTokens, validateFlowNodeWrites, validateFlowTemplatePaths, validateFlowTriggerReadiness, validateFormLayout, validateFunctionalCompleteness, validateHookBodyWrites, validateJsxPages, validateListViewMode, validateManagedApiMethods, validateNavAccess, validateNavObjectServability, validateNavTargetRefs, validateObjectReferences, validateOrgAxisRedLines, validatePageFieldBindings, validatePageSourceStyling, validatePredicatePathRefs, validateReactPageProps, validateReactPages, validateReadonlyFlowWrites, validateRecordTitle, validateReferenceIntegrity, validateResponsiveStyles, validateRlsPredicateEnforceability, validateRuleCompilability, validateRuleSchemaFormats, validateSearchableFields, validateSecurityPosture, validateSecurityRoleWord, validateSeedReplaySafety, validateSeedStateMachine, validateSemanticRoles, validateSharingRuleEnforceability, validateStackExpressions, validateTranslatableSections, validateTranslationReferences, validateViewContainers, validateVisibilityPredicates, validateWidgetBindings, walkPageComponents };
2983
+ export { ACTION_BODY_WRITE_EXCLUSIONS, ACTION_BODY_WRITE_PATTERNS, ACTION_BODY_WRITE_PATTERN_IDS, ACTION_BODY_WRITE_UNKNOWN_FIELD, ACTION_BODY_WRITE_UNPROVISIONED_ANCHOR, ACTION_NAME_UNDEFINED, ACTION_NO_PLACEMENT, ACTION_RECORD_WRITE_DISCARDED, ACTION_RECORD_WRITE_PATTERNS, ACTION_RECORD_WRITE_PATTERN_IDS, AGENT_AUTHORING_WITHDRAWN, AI_SKILL_SURFACE_MISMATCH, AI_SKILL_TOOL_UNRESOLVED, APPROVAL_APPROVERS_MAY_RESOLVE_EMPTY, APPROVAL_APPROVER_CROSS_ORG_UNSUPPORTED, APPROVAL_APPROVER_NOT_MEMBERSHIP_TIER, APPROVAL_APPROVER_TYPE_DEPRECATED, APPROVAL_APPROVER_TYPE_UNKNOWN, APPROVAL_APPROVER_TYPE_UNSUPPORTED, APPROVAL_DECISION_OUTPUTS_RESERVED, APPROVAL_ESCALATION_REASSIGN_NO_TARGET, APPROVAL_EXPRESSION_INVALID, APPROVAL_EXPRESSION_NO_EMPTY_POLICY, AUTONUMBER_LITERAL_TOKEN, AUTONUMBER_OPTIONAL_FIELD, AUTONUMBER_SELF_REFERENCE, AUTONUMBER_UNKNOWN_FIELD, type ActionBodyWriteExclusion, type ActionBodyWriteFinding, type ActionBodyWriteSeverity, type ActionLocationsFinding, type ActionLocationsSeverity, type ActionNameRefFinding, type ActionNameRefSeverity, type AiAgentAuthoringFinding, type AiAgentAuthoringSeverity, type AiSurfaceAffinityFinding, type AiSurfaceAffinitySeverity, type AiToolRefFinding, type AiToolRefSeverity, type ApprovalApproverFinding, type ApprovalApproverSeverity, type AutonumberLintFinding, type BodyWritePatternExclusion, CAPABILITY_REFERENCE_UNKNOWN, CHART_AXIS_NOT_SELECTED, CHART_CONFIG_MISSING, CHART_DATASET_UNKNOWN, CHART_DIMENSION_UNKNOWN, CHART_FIELD_UNKNOWN, CHART_MEASURE_UNKNOWN, COMPONENT_PROPS_INVALID, COMPONENT_PROPS_UNKNOWN_KEY, type CapabilityRefFinding, type CapabilityRefSeverity, type ChartBindingFinding, type ChartBindingSeverity, type ComponentPropsFinding, type ComponentPropsSeverity, DASHBOARD_ACTION_ROUTE_UNRESOLVED, DASHBOARD_ACTION_TARGET_UNDEFINED, DASHBOARD_FILTER_FIELD_UNKNOWN, DASHBOARD_FILTER_FIELD_UNPROVISIONED, DEFAULT_AGENT_OUTSIDE_ROSTER, type DashboardActionRefFinding, type DashboardActionRefSeverity, type EmptyCombinatorFinding, type EmptyCombinatorSeverity, type ExprIssue, type ExtractedHookBodyWrite, type ExtractedHookBodyWriteSet, FIELD_GROUP_EMPTY, FIELD_GROUP_SHADOWED, FIELD_GROUP_UNDECLARED, FILTER_EMPTY_COMBINATOR, FILTER_EMPTY_NODE, FILTER_PRESET_COMPARAND, FILTER_TOKEN_UNKNOWN, FLOW_APPROVAL_REVISE_DEAD_END, FLOW_APPROVAL_REVISE_DISABLED, FLOW_APPROVAL_REVISE_TARGET_NOT_SERVICE_OWNED, FLOW_APPROVAL_REVISE_UNMARKED_BACKEDGE, FLOW_BARE_DOLLAR_REF, FLOW_BRANCH_LABEL_UNMATCHED, FLOW_DATE_EQUALITY_FILTER, FLOW_DECISION_UNCONDITIONAL_BRANCH, FLOW_DEFAULT_EDGE_WITH_CONDITION, FLOW_DOUBLE_BRACE_INTERP, FLOW_DRAFT_STATUS_AMBIGUOUS, FLOW_ERROR_LABEL_NOT_FAULT, FLOW_INERT_NODE_CONDITION, FLOW_MULTIPLE_DEFAULT_EDGES, FLOW_MULTI_WRITE_UNFILTERED, FLOW_NODE_WRITE_UNKNOWN_FIELD, FLOW_NODE_WRITE_UNPROVISIONED_ANCHOR, FLOW_PHANTOM_AGGREGATION, FLOW_RUNAS_UNSCOPED, FLOW_TEMPLATE_FIELD_UNPROVISIONED, FLOW_TEMPLATE_LOOKUP_TRAVERSAL, FLOW_TEMPLATE_UNKNOWN_FIELD, FLOW_TIME_RELATIVE_ANTIPATTERN, FLOW_TIME_RELATIVE_DESCRIPTOR_INVALID, FLOW_TIME_RELATIVE_DESCRIPTOR_UNROUTABLE, FLOW_TRIGGER_UNKNOWN_EVENT, FLOW_TRIGGER_UNKNOWN_OBJECT, FLOW_TRIGGER_UNROUTABLE, FLOW_UPDATE_READONLY_FIELD, FLOW_UPDATE_READONLY_WHEN_FIELD, FLOW_WRITE_NODE_TYPES, FLOW_WRITE_NODE_TYPES_DEFERRED, FORM_COLSPAN_ABSOLUTE, FORM_FIELD_UNKNOWN, type FilterTokenFinding, type FilterTokenSeverity, type FlowLintFinding, type FlowNodeWriteFinding, type FlowNodeWriteSeverity, type FlowTemplatePathFinding, type FlowTemplatePathSeverity, type FlowTriggerReadinessFinding, type FlowTriggerReadinessSeverity, type FlowWriteNodeDeferral, type FormLayoutFinding, type FormLayoutSeverity, type FunctionalCompletenessFinding, type FunctionalCompletenessSeverity, HOOK_BODY_WRITE_EXCLUSIONS, HOOK_BODY_WRITE_PATTERNS, HOOK_BODY_WRITE_PATTERN_IDS, HOOK_BODY_WRITE_UNKNOWN_FIELD, HOOK_BODY_WRITE_UNPROVISIONED_ANCHOR, type HookBodyWriteFinding, type HookBodyWritePattern, type HookBodyWriteSeverity, type JsxPageFinding, type JsxPageSeverity, LIST_VIEW_FILTERS_IN_VIEWS_MODE, LIVENESS_DEAD_PROPERTY, LIVENESS_EXPERIMENTAL_PROPERTY, type LintIssue, type ListViewModeFinding, type ListViewModeSeverity, type LivenessLintFinding, type LocatedLintIssue, MANAGED_API_METHOD_UNAFFORDABLE, MAX_SCHEMA_WALK_DEPTH, MEASURE_AGGREGATE_INCOHERENT, type ManagedApiMethodFinding, NAV_OBJECT_UNGRANTED, NAV_OBJECT_UNSERVABLE, NAV_TARGET_UNRESOLVED, NULL_GUARD_HINT, type NavAccessFinding, type NavAccessSeverity, type NavObjectServabilityFinding, type NavTargetRefFinding, type NavTargetRefSeverity, type NullGuardFinding, type NullGuardOptions, OBJECT_REFERENCE_UNKNOWN, OBJECT_REFERENCE_UNREGISTERED_PLATFORM, OPEN_VOCABULARY_PROBES, ORG_AXIS_CROSS_ORG_BU_GRANT, ORG_AXIS_PERMISSION_INHERITANCE, type ObjectRefFinding, type ObjectRefSeverity, type OrgAxisFinding, type OrgAxisSeverity, PAGE_FIELD_UNKNOWN, PAGE_FIELD_UNPROVISIONED, PAGE_SOURCE_CLASSNAME, PREDICATE_PATH_UNRESOLVED, PREDICATE_PATH_UNROOTED, PREDICATE_RHS_PATH_SHAPED, PRE_SEAL_PHASES, type PageFieldFinding, type PageFieldSeverity, type PredicatePathFinding, type PredicatePathOptions, type PredicatePathSeverity, type PresetComparandFinding, type PresetComparandSeverity, REACT_BLOCK_NEEDS_RECORD_CONTEXT, REACT_CHART_AGGREGATE_INVALID, REACT_CHART_AXIS_UNKNOWN, REACT_CHART_DRILLDOWN_INVALID, REACT_CHART_FIELD_UNKNOWN, REACT_CHART_FIELD_UNPROVISIONED, REFERENCE_INTEGRITY_RULES, RLS_PREDICATE_OVER_BUDGET, RLS_PREDICATE_UNENFORCEABLE, RLS_PREDICATE_UNPARSEABLE, RUNTIME_AJV_OPTIONS, type ReactPageFinding, type ReactPageSeverity, type ReactPropFinding, type ReactPropSeverity, type ReadonlyFlowWriteFinding, type ReadonlyFlowWriteSeverity, type RecordTitleFinding, type RecordTitleSeverity, type ReferenceIntegrityFinding, type ReferenceIntegrityRule, type ReferenceIntegritySeverity, type RlsPredicateFinding, type RlsPredicateSeverity, type RuleCompilabilityFinding, type RuleCompilabilitySeverity, type RuleSchemaFormatFinding, type RuleSchemaFormatSeverity, SEAL_MARKERS, SEARCHABLE_FIELD_UNKNOWN, SEARCHABLE_FIELD_UNPROVISIONED, SEARCHABLE_FIELD_UNSEARCHABLE, SECURITY_ANCHOR_HIGH_PRIVILEGE, SECURITY_BOOK_AUDIENCE_UNKNOWN_SET, SECURITY_CBP_NO_RELATION, SECURITY_DELEGATION_MISSING_REASON, SECURITY_EXTERNAL_WIDER, SECURITY_FLS_UNQUALIFIED_KEY, SECURITY_GRANT_EXPIRED_AT_AUTHORING, SECURITY_MASTER_DETAIL_UNGRANTED, SECURITY_OWD_ALIAS, SECURITY_OWD_UNSET, SECURITY_PRIVATE_NO_READSCOPE, SECURITY_ROLE_WORD, SECURITY_WILDCARD_VAMA, SEED_INSERT_MODE_DUPLICATES_ON_REPLAY, SEED_VALUE_OUTSIDE_STATE_MACHINE, SEMANTIC_ROLE_FIELD_UNKNOWN, SEMANTIC_ROLE_FIELD_UNPROVISIONED, SHARING_RULE_OBJECT_CONTROLLED_BY_PARENT, SHARING_RULE_OBJECT_NOT_SHAREABLE, SHARING_RULE_RUNTIME_VARIABLE_CONDITION, SHARING_RULE_UNLOWERABLE_CONDITION, SORT_FIELD_UNKNOWN, SORT_FIELD_UNSORTABLE, STARTUP_OPEN_VOCABULARY_VERDICT, STARTUP_VERDICT_ASSERTIVE_WORDING, STARTUP_VERDICT_HINT, STYLE_CLASSNAME_TAILWIND, STYLE_NODE_MISSING_ID, STYLE_RESPONSIVE_NO_BASE, STYLE_UNKNOWN_CSS_PROPERTY, STYLE_UNKNOWN_TOKEN, type SearchableFieldFinding, type SearchableFieldRole, type SearchableFieldSeverity, type SecurityFinding, type SecuritySeverity, type SeedReplaySafetyFinding, type SeedReplaySafetySeverity, type SeedStateMachineFinding, type SeedStateMachineSeverity, type SemanticRoleFinding, type SemanticRoleSeverity, type Severity, type SharingRuleEnforceabilityFinding, type SharingRuleEnforceabilitySeverity, type SortableFieldFinding, type SortableFieldSeverity, type SourceStyleFinding, type SourceStyleSeverity, type StartupRegistryVerdictFinding, type StartupRegistryVerdictOptions, type StartupRegistryVerdictSeverity, type StyleFinding, type StyleSeverity, TABLE_COUNT_ONLY, TITLE_FORMAT_RETIRED, TITLE_UNRESOLVABLE, TRANSLATION_OPTION_KEY_UNKNOWN, TRANSLATION_SECTION_NAME_MISSING, TRANSLATION_TARGET_UNKNOWN, type TranslatableSectionFinding, type TranslatableSectionSeverity, type TranslationRefFinding, type TranslationRefSeverity, UNIQUE_DOUBLE_DECLARATION, UNIQUE_LEGACY_ORGANIZATION_COMPOSITE, UNIQUE_UNSCOPED_DECLARED_INDEX, VALIDATION_RULE_REGEX_UNCOMPILABLE, VALIDATION_RULE_SCHEMA_UNCOMPILABLE, VALIDATION_RULE_SCHEMA_UNKNOWN_FORMAT, VIEW_CONTAINER_SHAPE, VIEW_KEY_COLLISION, VIEW_REF_FORM_TARGET_KIND, VIEW_REF_FORM_TARGET_MISSING, VISIBILITY_BARE_IDENTIFIER, VISIBILITY_PREDICATE_OVER_BUDGET, VISIBILITY_PREDICATE_SYNTAX, VISIBILITY_ROOT_MISLAYERED, type ViewContainerFinding, type ViewContainerSeverity, type ViewRefFinding, type VisibilityFinding, type VisibilityLayer, type VisibilityOptions, type VisibilitySeverity, WIDGET_DATASET_UNKNOWN, WIDGET_DIMENSION_UNKNOWN, WIDGET_LEGACY_ANALYTICS_SHAPE, WIDGET_LEGACY_ANALYTICS_UNRENDERABLE, WIDGET_MEASURE_UNKNOWN, type WalkedComponent, type WalkedValidationRule, type WidgetBindingFinding, type WidgetBindingSeverity, buildAccessMatrix, checkSortDeclaration, diffAccessMatrix, extractHookBodyWriteSet, extractHookBodyWrites, findStartupRegistryVerdicts, findUnguardedNullableOperands, isSourceAuthoredPage, lintAutonumberFormats, lintDataModel, lintFlowPatterns, lintLegacyOrganizationComposites, lintLivenessProperties, lintUniqueDeclarations, lintUnscopedDeclaredIndexes, lintViewRefs, nearestRegisteredFormat, nullGuardMessage, validateActionBodyWrites, validateActionLocations, validateActionNameRefs, validateAiAgentAuthoring, validateAiSurfaceAffinity, validateAiToolReferences, validateApprovalApprovers, validateCapabilityReferences, validateChartBindings, validateComponentProps, validateDashboardActionRefs, validateEmptyCombinators, validateFilterTokens, validateFlowNodeWrites, validateFlowTemplatePaths, validateFlowTriggerReadiness, validateFormLayout, validateFunctionalCompleteness, validateHookBodyWrites, validateJsxPages, validateListViewMode, validateManagedApiMethods, validateNavAccess, validateNavObjectServability, validateNavTargetRefs, validateObjectReferences, validateOrgAxisRedLines, validatePageFieldBindings, validatePageSourceStyling, validatePredicatePathRefs, validatePresetComparands, validateReactPageProps, validateReactPages, validateReadonlyFlowWrites, validateRecordTitle, validateReferenceIntegrity, validateResponsiveStyles, validateRlsPredicateEnforceability, validateRuleCompilability, validateRuleSchemaFormats, validateSearchableFields, validateSecurityPosture, validateSecurityRoleWord, validateSeedReplaySafety, validateSeedStateMachine, validateSemanticRoles, validateSharingRuleEnforceability, validateSortableFields, validateStackExpressions, validateTranslatableSections, validateTranslationReferences, validateViewContainers, validateVisibilityPredicates, validateWidgetBindings, walkPageComponents };