@gate-forge/core 0.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.
Files changed (242) hide show
  1. package/LICENSE +202 -0
  2. package/dist/baselines/adoption.d.ts +76 -0
  3. package/dist/baselines/adoption.d.ts.map +1 -0
  4. package/dist/baselines/adoption.js +163 -0
  5. package/dist/baselines/adoption.js.map +1 -0
  6. package/dist/baselines/index.d.ts +102 -0
  7. package/dist/baselines/index.d.ts.map +1 -0
  8. package/dist/baselines/index.js +186 -0
  9. package/dist/baselines/index.js.map +1 -0
  10. package/dist/canonical-json.d.ts +51 -0
  11. package/dist/canonical-json.d.ts.map +1 -0
  12. package/dist/canonical-json.js +112 -0
  13. package/dist/canonical-json.js.map +1 -0
  14. package/dist/classifier/bind.d.ts +64 -0
  15. package/dist/classifier/bind.d.ts.map +1 -0
  16. package/dist/classifier/bind.js +188 -0
  17. package/dist/classifier/bind.js.map +1 -0
  18. package/dist/classifier/classify.d.ts +154 -0
  19. package/dist/classifier/classify.d.ts.map +1 -0
  20. package/dist/classifier/classify.js +1207 -0
  21. package/dist/classifier/classify.js.map +1 -0
  22. package/dist/classifier/glob.d.ts +48 -0
  23. package/dist/classifier/glob.d.ts.map +1 -0
  24. package/dist/classifier/glob.js +104 -0
  25. package/dist/classifier/glob.js.map +1 -0
  26. package/dist/classifier/index.d.ts +10 -0
  27. package/dist/classifier/index.d.ts.map +1 -0
  28. package/dist/classifier/index.js +21 -0
  29. package/dist/classifier/index.js.map +1 -0
  30. package/dist/classifier/schema.d.ts +150 -0
  31. package/dist/classifier/schema.d.ts.map +1 -0
  32. package/dist/classifier/schema.js +139 -0
  33. package/dist/classifier/schema.js.map +1 -0
  34. package/dist/config/index.d.ts +259 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +523 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/fingerprints.d.ts +56 -0
  39. package/dist/fingerprints.d.ts.map +1 -0
  40. package/dist/fingerprints.js +59 -0
  41. package/dist/fingerprints.js.map +1 -0
  42. package/dist/graph/build.d.ts +16 -0
  43. package/dist/graph/build.d.ts.map +1 -0
  44. package/dist/graph/build.js +423 -0
  45. package/dist/graph/build.js.map +1 -0
  46. package/dist/graph/index.d.ts +12 -0
  47. package/dist/graph/index.d.ts.map +1 -0
  48. package/dist/graph/index.js +10 -0
  49. package/dist/graph/index.js.map +1 -0
  50. package/dist/graph/schema.d.ts +448 -0
  51. package/dist/graph/schema.d.ts.map +1 -0
  52. package/dist/graph/schema.js +237 -0
  53. package/dist/graph/schema.js.map +1 -0
  54. package/dist/graph/symbols.d.ts +129 -0
  55. package/dist/graph/symbols.d.ts.map +1 -0
  56. package/dist/graph/symbols.js +177 -0
  57. package/dist/graph/symbols.js.map +1 -0
  58. package/dist/graph/util.d.ts +40 -0
  59. package/dist/graph/util.d.ts.map +1 -0
  60. package/dist/graph/util.js +41 -0
  61. package/dist/graph/util.js.map +1 -0
  62. package/dist/index.d.ts +683 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +563 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/mapping/resolve.d.ts +177 -0
  67. package/dist/mapping/resolve.d.ts.map +1 -0
  68. package/dist/mapping/resolve.js +523 -0
  69. package/dist/mapping/resolve.js.map +1 -0
  70. package/dist/policy/coverage.d.ts +79 -0
  71. package/dist/policy/coverage.d.ts.map +1 -0
  72. package/dist/policy/coverage.js +119 -0
  73. package/dist/policy/coverage.js.map +1 -0
  74. package/dist/policy/evaluate.d.ts +275 -0
  75. package/dist/policy/evaluate.d.ts.map +1 -0
  76. package/dist/policy/evaluate.js +382 -0
  77. package/dist/policy/evaluate.js.map +1 -0
  78. package/dist/policy/index.d.ts +15 -0
  79. package/dist/policy/index.d.ts.map +1 -0
  80. package/dist/policy/index.js +14 -0
  81. package/dist/policy/index.js.map +1 -0
  82. package/dist/policy/trusted.d.ts +59 -0
  83. package/dist/policy/trusted.d.ts.map +1 -0
  84. package/dist/policy/trusted.js +96 -0
  85. package/dist/policy/trusted.js.map +1 -0
  86. package/dist/provenance.d.ts +170 -0
  87. package/dist/provenance.d.ts.map +1 -0
  88. package/dist/provenance.js +306 -0
  89. package/dist/provenance.js.map +1 -0
  90. package/dist/receipt/index.d.ts +74 -0
  91. package/dist/receipt/index.d.ts.map +1 -0
  92. package/dist/receipt/index.js +154 -0
  93. package/dist/receipt/index.js.map +1 -0
  94. package/dist/report/index.d.ts +100 -0
  95. package/dist/report/index.d.ts.map +1 -0
  96. package/dist/report/index.js +355 -0
  97. package/dist/report/index.js.map +1 -0
  98. package/dist/schemas/adoption.d.ts +40 -0
  99. package/dist/schemas/adoption.d.ts.map +1 -0
  100. package/dist/schemas/adoption.js +87 -0
  101. package/dist/schemas/adoption.js.map +1 -0
  102. package/dist/schemas/baseline.d.ts +19 -0
  103. package/dist/schemas/baseline.d.ts.map +1 -0
  104. package/dist/schemas/baseline.js +45 -0
  105. package/dist/schemas/baseline.js.map +1 -0
  106. package/dist/schemas/claim.d.ts +32 -0
  107. package/dist/schemas/claim.d.ts.map +1 -0
  108. package/dist/schemas/claim.js +34 -0
  109. package/dist/schemas/claim.js.map +1 -0
  110. package/dist/schemas/classification-policy.d.ts +84 -0
  111. package/dist/schemas/classification-policy.d.ts.map +1 -0
  112. package/dist/schemas/classification-policy.js +130 -0
  113. package/dist/schemas/classification-policy.js.map +1 -0
  114. package/dist/schemas/classification-signal.d.ts +125 -0
  115. package/dist/schemas/classification-signal.d.ts.map +1 -0
  116. package/dist/schemas/classification-signal.js +126 -0
  117. package/dist/schemas/classification-signal.js.map +1 -0
  118. package/dist/schemas/classification.d.ts +120 -0
  119. package/dist/schemas/classification.d.ts.map +1 -0
  120. package/dist/schemas/classification.js +154 -0
  121. package/dist/schemas/classification.js.map +1 -0
  122. package/dist/schemas/common.d.ts +73 -0
  123. package/dist/schemas/common.d.ts.map +1 -0
  124. package/dist/schemas/common.js +60 -0
  125. package/dist/schemas/common.js.map +1 -0
  126. package/dist/schemas/coverage-policy.d.ts +89 -0
  127. package/dist/schemas/coverage-policy.d.ts.map +1 -0
  128. package/dist/schemas/coverage-policy.js +81 -0
  129. package/dist/schemas/coverage-policy.js.map +1 -0
  130. package/dist/schemas/evidence.d.ts +65 -0
  131. package/dist/schemas/evidence.d.ts.map +1 -0
  132. package/dist/schemas/evidence.js +64 -0
  133. package/dist/schemas/evidence.js.map +1 -0
  134. package/dist/schemas/execution-result.d.ts +214 -0
  135. package/dist/schemas/execution-result.d.ts.map +1 -0
  136. package/dist/schemas/execution-result.js +240 -0
  137. package/dist/schemas/execution-result.js.map +1 -0
  138. package/dist/schemas/gate-receipt.d.ts +86 -0
  139. package/dist/schemas/gate-receipt.d.ts.map +1 -0
  140. package/dist/schemas/gate-receipt.js +193 -0
  141. package/dist/schemas/gate-receipt.js.map +1 -0
  142. package/dist/schemas/index.d.ts +22 -0
  143. package/dist/schemas/index.d.ts.map +1 -0
  144. package/dist/schemas/index.js +22 -0
  145. package/dist/schemas/index.js.map +1 -0
  146. package/dist/schemas/obligation.d.ts +37 -0
  147. package/dist/schemas/obligation.d.ts.map +1 -0
  148. package/dist/schemas/obligation.js +46 -0
  149. package/dist/schemas/obligation.js.map +1 -0
  150. package/dist/schemas/plugin.d.ts +19 -0
  151. package/dist/schemas/plugin.d.ts.map +1 -0
  152. package/dist/schemas/plugin.js +20 -0
  153. package/dist/schemas/plugin.js.map +1 -0
  154. package/dist/schemas/policy.d.ts +73 -0
  155. package/dist/schemas/policy.d.ts.map +1 -0
  156. package/dist/schemas/policy.js +46 -0
  157. package/dist/schemas/policy.js.map +1 -0
  158. package/dist/schemas/resource.d.ts +26 -0
  159. package/dist/schemas/resource.d.ts.map +1 -0
  160. package/dist/schemas/resource.js +29 -0
  161. package/dist/schemas/resource.js.map +1 -0
  162. package/dist/schemas/run-manifest.d.ts +72 -0
  163. package/dist/schemas/run-manifest.d.ts.map +1 -0
  164. package/dist/schemas/run-manifest.js +125 -0
  165. package/dist/schemas/run-manifest.js.map +1 -0
  166. package/dist/schemas/runner-adapter.d.ts +169 -0
  167. package/dist/schemas/runner-adapter.d.ts.map +1 -0
  168. package/dist/schemas/runner-adapter.js +2 -0
  169. package/dist/schemas/runner-adapter.js.map +1 -0
  170. package/dist/schemas/test-catalog.d.ts +472 -0
  171. package/dist/schemas/test-catalog.d.ts.map +1 -0
  172. package/dist/schemas/test-catalog.js +311 -0
  173. package/dist/schemas/test-catalog.js.map +1 -0
  174. package/dist/schemas/test-map.d.ts +99 -0
  175. package/dist/schemas/test-map.d.ts.map +1 -0
  176. package/dist/schemas/test-map.js +103 -0
  177. package/dist/schemas/test-map.js.map +1 -0
  178. package/dist/schemas/verdict.d.ts +73 -0
  179. package/dist/schemas/verdict.d.ts.map +1 -0
  180. package/dist/schemas/verdict.js +92 -0
  181. package/dist/schemas/verdict.js.map +1 -0
  182. package/dist/schemas/waiver.d.ts +36 -0
  183. package/dist/schemas/waiver.d.ts.map +1 -0
  184. package/dist/schemas/waiver.js +42 -0
  185. package/dist/schemas/waiver.js.map +1 -0
  186. package/dist/supervision/index.d.ts +170 -0
  187. package/dist/supervision/index.d.ts.map +1 -0
  188. package/dist/supervision/index.js +354 -0
  189. package/dist/supervision/index.js.map +1 -0
  190. package/dist/testing/clock.d.ts +50 -0
  191. package/dist/testing/clock.d.ts.map +1 -0
  192. package/dist/testing/clock.js +75 -0
  193. package/dist/testing/clock.js.map +1 -0
  194. package/dist/testing/env.d.ts +66 -0
  195. package/dist/testing/env.d.ts.map +1 -0
  196. package/dist/testing/env.js +106 -0
  197. package/dist/testing/env.js.map +1 -0
  198. package/dist/testing/gate-runner.d.ts +141 -0
  199. package/dist/testing/gate-runner.d.ts.map +1 -0
  200. package/dist/testing/gate-runner.js +173 -0
  201. package/dist/testing/gate-runner.js.map +1 -0
  202. package/dist/testing/gf19.d.ts +106 -0
  203. package/dist/testing/gf19.d.ts.map +1 -0
  204. package/dist/testing/gf19.js +282 -0
  205. package/dist/testing/gf19.js.map +1 -0
  206. package/dist/testing/index.d.ts +20 -0
  207. package/dist/testing/index.d.ts.map +1 -0
  208. package/dist/testing/index.js +14 -0
  209. package/dist/testing/index.js.map +1 -0
  210. package/dist/testing/red-probe.d.ts +138 -0
  211. package/dist/testing/red-probe.d.ts.map +1 -0
  212. package/dist/testing/red-probe.js +251 -0
  213. package/dist/testing/red-probe.js.map +1 -0
  214. package/dist/testing/temp-repo.d.ts +126 -0
  215. package/dist/testing/temp-repo.d.ts.map +1 -0
  216. package/dist/testing/temp-repo.js +214 -0
  217. package/dist/testing/temp-repo.js.map +1 -0
  218. package/dist/verdict/cause.d.ts +99 -0
  219. package/dist/verdict/cause.d.ts.map +1 -0
  220. package/dist/verdict/cause.js +206 -0
  221. package/dist/verdict/cause.js.map +1 -0
  222. package/dist/verdict/evaluate.d.ts +135 -0
  223. package/dist/verdict/evaluate.d.ts.map +1 -0
  224. package/dist/verdict/evaluate.js +1513 -0
  225. package/dist/verdict/evaluate.js.map +1 -0
  226. package/dist/verdict/index.d.ts +21 -0
  227. package/dist/verdict/index.d.ts.map +1 -0
  228. package/dist/verdict/index.js +20 -0
  229. package/dist/verdict/index.js.map +1 -0
  230. package/dist/verdict/pack-verifiers.d.ts +97 -0
  231. package/dist/verdict/pack-verifiers.d.ts.map +1 -0
  232. package/dist/verdict/pack-verifiers.js +763 -0
  233. package/dist/verdict/pack-verifiers.js.map +1 -0
  234. package/dist/verdict/registry.d.ts +180 -0
  235. package/dist/verdict/registry.d.ts.map +1 -0
  236. package/dist/verdict/registry.js +67 -0
  237. package/dist/verdict/registry.js.map +1 -0
  238. package/dist/waivers/index.d.ts +103 -0
  239. package/dist/waivers/index.d.ts.map +1 -0
  240. package/dist/waivers/index.js +192 -0
  241. package/dist/waivers/index.js.map +1 -0
  242. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/graph/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * The resource-graph symbol table (go/no-go first action #2):
3
+ * cross-module inheritance resolution so inherited tablenames stop
4
+ * being `unresolved` when statically resolvable.
5
+ *
6
+ * Detectors contribute class symbols as resources with the reserved
7
+ * {@link CLASS_SYMBOL_KIND} kind (see `ClassSymbolAttributesSchema`).
8
+ * The graph indexes them and resolves a subclass's inherited tablename
9
+ * by walking declared base names through the repo-wide table:
10
+ *
11
+ * 1. a base name matching a symbol's exact `qname` wins first;
12
+ * 2. then a unique same-file symbol whose last name segment matches
13
+ * (lexical-scope preference — function-local shadowing is legal);
14
+ * 3. then a unique repo-wide last-name match;
15
+ * 4. ambiguous or missing bases end the walk with a typed cause.
16
+ *
17
+ * The walk follows base chains in declaration order (first literal
18
+ * tablename wins, mirroring MRO-ish expectations) and is cycle-guarded.
19
+ * Resolution is purely additive: the graph only ever resolves or keeps
20
+ * the detector's typed unresolved entry — it never rewrites one.
21
+ */
22
+ import type { Resource } from '../schemas/resource.js';
23
+ import type { GraphFinding } from './schema.js';
24
+ import { type GraphUnresolved } from './schema.js';
25
+ /** A validated class symbol, extracted from a class-symbol resource. */
26
+ export interface ClassSymbol {
27
+ /** Scope-qualified class name (dotted). */
28
+ qname: string;
29
+ /** Kind used for a table materialized from this class. */
30
+ resourceKind: string;
31
+ /** Direct base names as written, in declaration order. */
32
+ baseNames: string[];
33
+ /** Literal tablename declared on the class itself, if any. */
34
+ tableName: string | null;
35
+ /** `__abstract__ = True` base — never materializes directly. */
36
+ abstract: boolean;
37
+ /** Detector assertion that this class's tablename is unresolved. */
38
+ tablenameUnresolved: boolean;
39
+ /** Repo-root-relative declaration file. */
40
+ source: string;
41
+ /** Exact declaration location. */
42
+ location: {
43
+ file: string;
44
+ line: number;
45
+ col: number;
46
+ };
47
+ /** Detector that contributed the symbol. */
48
+ detectorId: string;
49
+ /** Detector version at the handshake. */
50
+ detectorVersion: string;
51
+ }
52
+ /** The repo-wide symbol table: qname index + last-name-segment index. */
53
+ export interface SymbolTable {
54
+ /** qname → symbol (first by source order on duplicate qnames). */
55
+ byQname: Map<string, ClassSymbol>;
56
+ /** Last name segment → symbols sorted by location (may be ambiguous). */
57
+ byLastName: Map<string, ClassSymbol[]>;
58
+ }
59
+ /** Outcome of resolving one class's inherited tablename. */
60
+ export type InheritanceResolution = {
61
+ ok: true;
62
+ name: string;
63
+ baseQname: string;
64
+ } | {
65
+ ok: false;
66
+ cause: string;
67
+ };
68
+ /**
69
+ * Extracts class symbols from detector resources. Resources that claim
70
+ * the reserved class-symbol kind but carry malformed attributes are
71
+ * reported as `INVALID_RESOURCE` findings and skipped — a hostile or
72
+ * broken symbol payload degrades to "unresolved stays unresolved",
73
+ * never to a crash or silent drop.
74
+ *
75
+ * Args:
76
+ * detectors: all detector contributions (symbol table is repo-wide).
77
+ * findings: accumulator; malformed class-symbol resources append here.
78
+ *
79
+ * Returns:
80
+ * SymbolTable: qname and last-name indexes of the valid symbols.
81
+ */
82
+ export declare function buildSymbolTable(detectors: {
83
+ detectorId: string;
84
+ detectorVersion: string;
85
+ resources: Resource[];
86
+ }[], findings: GraphFinding[]): SymbolTable;
87
+ /**
88
+ * Resolves the inherited tablename of a class through the symbol
89
+ * table, following declared base names in order. Per base name:
90
+ * exact qname match, then unique same-file last-name match, then
91
+ * unique repo-wide last-name match. The first literal tablename on
92
+ * any followed chain wins; all failure causes of the first failing
93
+ * base are reported when none succeeds.
94
+ *
95
+ * Args:
96
+ * symbol: the class whose tablename is missing.
97
+ * table: the repo-wide symbol table.
98
+ *
99
+ * Returns:
100
+ * InheritanceResolution: the literal name + defining base qname on
101
+ * success, or a single-cause typed explanation on failure.
102
+ */
103
+ export declare function resolveInheritedName(symbol: ClassSymbol, table: SymbolTable): InheritanceResolution;
104
+ /**
105
+ * Builds a lookup of `file:line` → class symbol for one detector's
106
+ * symbols. Detector unresolved entries whose location points at a
107
+ * class statement are matched through this map, which is how a
108
+ * resolved symbol retires its detector's unresolved entry.
109
+ *
110
+ * Args:
111
+ * symbols: the detector's own class symbols.
112
+ *
113
+ * Returns:
114
+ * Map<string, ClassSymbol>: keyed by `${file}:${line}`.
115
+ */
116
+ export declare function locationIndex(symbols: ClassSymbol[]): Map<string, ClassSymbol>;
117
+ /**
118
+ * Sorts unresolved entries into their deterministic output order:
119
+ * location (file, line, col), then reason code, then detail, then
120
+ * detector id.
121
+ *
122
+ * Args:
123
+ * entries: unresolved entries in any order.
124
+ *
125
+ * Returns:
126
+ * GraphUnresolved[]: a new sorted array.
127
+ */
128
+ export declare function sortUnresolved(entries: GraphUnresolved[]): GraphUnresolved[];
129
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/graph/symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAkD,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnG,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,yEAAyE;IACzE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;CACxC;AAED,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;CAAE,EAAE,EACnF,QAAQ,EAAE,YAAY,EAAE,GACvB,WAAW,CAuDb;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,GACjB,qBAAqB,CAEvB;AAwDD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EAAE,GACrB,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAM1B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAU5E"}
@@ -0,0 +1,177 @@
1
+ import { CLASS_SYMBOL_KIND, ClassSymbolAttributesSchema } from './schema.js';
2
+ import { compareStrings, compareLocations } from './util.js';
3
+ /**
4
+ * Extracts class symbols from detector resources. Resources that claim
5
+ * the reserved class-symbol kind but carry malformed attributes are
6
+ * reported as `INVALID_RESOURCE` findings and skipped — a hostile or
7
+ * broken symbol payload degrades to "unresolved stays unresolved",
8
+ * never to a crash or silent drop.
9
+ *
10
+ * Args:
11
+ * detectors: all detector contributions (symbol table is repo-wide).
12
+ * findings: accumulator; malformed class-symbol resources append here.
13
+ *
14
+ * Returns:
15
+ * SymbolTable: qname and last-name indexes of the valid symbols.
16
+ */
17
+ export function buildSymbolTable(detectors, findings) {
18
+ const candidates = [];
19
+ for (const detector of detectors) {
20
+ for (const resource of detector.resources) {
21
+ if (resource.kind !== CLASS_SYMBOL_KIND)
22
+ continue;
23
+ const parsed = ClassSymbolAttributesSchema.safeParse(resource.attributes);
24
+ if (!parsed.success) {
25
+ findings.push({
26
+ code: 'INVALID_RESOURCE',
27
+ detail: `class-symbol resource from ${detector.detectorId} has malformed attributes: ${parsed.error.issues[0]?.message ?? 'unknown issue'}`,
28
+ locations: [resource.location],
29
+ detectorId: detector.detectorId,
30
+ });
31
+ continue;
32
+ }
33
+ candidates.push({
34
+ qname: parsed.data.qname,
35
+ resourceKind: parsed.data.resourceKind,
36
+ baseNames: parsed.data.baseNames ?? [],
37
+ tableName: parsed.data.tableName ?? null,
38
+ abstract: parsed.data.abstract ?? false,
39
+ tablenameUnresolved: parsed.data.tablenameUnresolved ?? false,
40
+ source: resource.source,
41
+ location: resource.location,
42
+ detectorId: detector.detectorId,
43
+ detectorVersion: detector.detectorVersion,
44
+ });
45
+ }
46
+ }
47
+ candidates.sort((a, b) => compareStrings(a.source, b.source) ||
48
+ compareLocations(a.location, b.location));
49
+ const byQname = new Map();
50
+ const byLastName = new Map();
51
+ for (const symbol of candidates) {
52
+ const existing = byQname.get(symbol.qname);
53
+ if (existing !== undefined) {
54
+ findings.push({
55
+ code: 'DUPLICATE_CLASS_QNAME',
56
+ detail: `class qname '${symbol.qname}' declared by ${symbol.detectorId} duplicates an earlier declaration from ${existing.detectorId}; the earlier symbol (sorted by source, line, col) wins`,
57
+ locations: [existing.location, symbol.location],
58
+ detectorId: symbol.detectorId,
59
+ });
60
+ continue;
61
+ }
62
+ byQname.set(symbol.qname, symbol);
63
+ const lastName = symbol.qname.split('.').at(-1) ?? symbol.qname;
64
+ const bucket = byLastName.get(lastName);
65
+ if (bucket === undefined)
66
+ byLastName.set(lastName, [symbol]);
67
+ else
68
+ bucket.push(symbol);
69
+ }
70
+ return { byQname, byLastName };
71
+ }
72
+ /**
73
+ * Resolves the inherited tablename of a class through the symbol
74
+ * table, following declared base names in order. Per base name:
75
+ * exact qname match, then unique same-file last-name match, then
76
+ * unique repo-wide last-name match. The first literal tablename on
77
+ * any followed chain wins; all failure causes of the first failing
78
+ * base are reported when none succeeds.
79
+ *
80
+ * Args:
81
+ * symbol: the class whose tablename is missing.
82
+ * table: the repo-wide symbol table.
83
+ *
84
+ * Returns:
85
+ * InheritanceResolution: the literal name + defining base qname on
86
+ * success, or a single-cause typed explanation on failure.
87
+ */
88
+ export function resolveInheritedName(symbol, table) {
89
+ return walk(symbol, new Set([symbol.qname]), table);
90
+ }
91
+ function walk(symbol, visited, table) {
92
+ let firstFailure = null;
93
+ for (const baseName of symbol.baseNames) {
94
+ const base = lookupBase(baseName, symbol, table);
95
+ if (base === undefined) {
96
+ const failure = {
97
+ ok: false,
98
+ cause: `base class '${baseName}' of '${symbol.qname}' not found in the symbol table`,
99
+ };
100
+ firstFailure ??= failure;
101
+ continue;
102
+ }
103
+ if (base.tableName !== null) {
104
+ return { ok: true, name: base.tableName, baseQname: base.qname };
105
+ }
106
+ if (visited.has(base.qname)) {
107
+ const failure = {
108
+ ok: false,
109
+ cause: `inheritance cycle at '${base.qname}' while resolving '${symbol.qname}'`,
110
+ };
111
+ firstFailure ??= failure;
112
+ continue;
113
+ }
114
+ visited.add(base.qname);
115
+ const nested = walk(base, visited, table);
116
+ if (nested.ok)
117
+ return nested;
118
+ firstFailure ??= nested;
119
+ }
120
+ return (firstFailure ?? {
121
+ ok: false,
122
+ cause: `'${symbol.qname}' declares no base carrying a literal tablename`,
123
+ });
124
+ }
125
+ function lookupBase(baseName, from, table) {
126
+ const exact = table.byQname.get(baseName);
127
+ if (exact !== undefined)
128
+ return exact;
129
+ const candidates = table.byLastName.get(baseName) ?? [];
130
+ const sameFile = candidates.filter((c) => c.source === from.source);
131
+ if (sameFile.length === 1)
132
+ return sameFile[0];
133
+ if (candidates.length === 1)
134
+ return candidates[0];
135
+ return undefined;
136
+ }
137
+ /**
138
+ * Builds a lookup of `file:line` → class symbol for one detector's
139
+ * symbols. Detector unresolved entries whose location points at a
140
+ * class statement are matched through this map, which is how a
141
+ * resolved symbol retires its detector's unresolved entry.
142
+ *
143
+ * Args:
144
+ * symbols: the detector's own class symbols.
145
+ *
146
+ * Returns:
147
+ * Map<string, ClassSymbol>: keyed by `${file}:${line}`.
148
+ */
149
+ export function locationIndex(symbols) {
150
+ const index = new Map();
151
+ for (const symbol of symbols) {
152
+ index.set(`${symbol.location.file}:${symbol.location.line}`, symbol);
153
+ }
154
+ return index;
155
+ }
156
+ /**
157
+ * Sorts unresolved entries into their deterministic output order:
158
+ * location (file, line, col), then reason code, then detail, then
159
+ * detector id.
160
+ *
161
+ * Args:
162
+ * entries: unresolved entries in any order.
163
+ *
164
+ * Returns:
165
+ * GraphUnresolved[]: a new sorted array.
166
+ */
167
+ export function sortUnresolved(entries) {
168
+ return [...entries].sort((a, b) => {
169
+ const byLocation = compareLocations(a.reason.location, b.reason.location);
170
+ if (byLocation !== 0)
171
+ return byLocation;
172
+ return (compareStrings(a.reason.code, b.reason.code) ||
173
+ compareStrings(a.reason.detail, b.reason.detail) ||
174
+ compareStrings(a.detectorId, b.detectorId));
175
+ });
176
+ }
177
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/graph/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Deterministic comparison helpers for the resource graph and policy
3
+ * engine. All orderings in gateforge MUST go through these so that
4
+ * outputs are byte-for-byte stable across locales, runtimes, and
5
+ * process runs (same inputs → identical graph + obligations).
6
+ */
7
+ /**
8
+ * Codepoint-wise string comparison (`a < b ? -1 : a > b ? 1 : 0`).
9
+ * Never use `localeCompare` — its result varies by ICU locale.
10
+ *
11
+ * Args:
12
+ * a: first string
13
+ * b: second string
14
+ *
15
+ * Returns:
16
+ * number: negative when a < b, positive when a > b, 0 when equal
17
+ */
18
+ export declare function compareStrings(a: string, b: string): number;
19
+ /**
20
+ * Total order over source locations: file (codepoints), then 1-based
21
+ * line, then 0-based col. Used to keep finding/unresolved location
22
+ * lists deterministic.
23
+ *
24
+ * Args:
25
+ * a: first location {file, line, col}
26
+ * b: second location {file, line, col}
27
+ *
28
+ * Returns:
29
+ * number: negative/zero/positive per the ordering above
30
+ */
31
+ export declare function compareLocations(a: {
32
+ file: string;
33
+ line: number;
34
+ col: number;
35
+ }, b: {
36
+ file: string;
37
+ line: number;
38
+ col: number;
39
+ }): number;
40
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/graph/util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC9C,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C,MAAM,CAKR"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Deterministic comparison helpers for the resource graph and policy
3
+ * engine. All orderings in gateforge MUST go through these so that
4
+ * outputs are byte-for-byte stable across locales, runtimes, and
5
+ * process runs (same inputs → identical graph + obligations).
6
+ */
7
+ /**
8
+ * Codepoint-wise string comparison (`a < b ? -1 : a > b ? 1 : 0`).
9
+ * Never use `localeCompare` — its result varies by ICU locale.
10
+ *
11
+ * Args:
12
+ * a: first string
13
+ * b: second string
14
+ *
15
+ * Returns:
16
+ * number: negative when a < b, positive when a > b, 0 when equal
17
+ */
18
+ export function compareStrings(a, b) {
19
+ return a < b ? -1 : a > b ? 1 : 0;
20
+ }
21
+ /**
22
+ * Total order over source locations: file (codepoints), then 1-based
23
+ * line, then 0-based col. Used to keep finding/unresolved location
24
+ * lists deterministic.
25
+ *
26
+ * Args:
27
+ * a: first location {file, line, col}
28
+ * b: second location {file, line, col}
29
+ *
30
+ * Returns:
31
+ * number: negative/zero/positive per the ordering above
32
+ */
33
+ export function compareLocations(a, b) {
34
+ const byFile = compareStrings(a.file, b.file);
35
+ if (byFile !== 0)
36
+ return byFile;
37
+ if (a.line !== b.line)
38
+ return a.line - b.line;
39
+ return a.col - b.col;
40
+ }
41
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/graph/util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IACjD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAA8C,EAC9C,CAA8C;IAE9C,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACvB,CAAC"}