ground-truth.ts 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /**
  2. * Ground truth definitions for the Python task management fixture
  3. */
  4. import { FixtureGroundTruth } from '../../types';
  5. export const pythonFixture: FixtureGroundTruth = {
  6. name: 'python-taskmanager',
  7. path: '__tests__/evaluation/fixtures/python-project',
  8. language: 'python',
  9. totalFiles: 5,
  10. approximateTokens: 1200, // Rough estimate
  11. testCases: [
  12. // =========================================================================
  13. // Search Tests
  14. // =========================================================================
  15. {
  16. id: 'py-search-auth',
  17. description: 'Search for authentication functionality',
  18. query: 'authentication login',
  19. type: 'search',
  20. expectedSymbols: ['AuthService', 'AuthService.login', 'AuthService.register', 'verify_password'],
  21. irrelevantSymbols: ['TaskService', 'validate_task_title', 'Project'],
  22. minRecall: 0.7,
  23. minPrecision: 0.5,
  24. },
  25. {
  26. id: 'py-search-task',
  27. description: 'Search for task management',
  28. query: 'task create complete',
  29. type: 'search',
  30. expectedSymbols: ['TaskService', 'TaskService.create_task', 'TaskService.complete_task', 'Task'],
  31. irrelevantSymbols: ['AuthService', 'validate_email', 'hash_password'],
  32. minRecall: 0.7,
  33. minPrecision: 0.5,
  34. },
  35. {
  36. id: 'py-search-validation',
  37. description: 'Search for validation',
  38. query: 'validate',
  39. type: 'search',
  40. expectedSymbols: ['validate_email', 'validate_password', 'validate_task_title'],
  41. irrelevantSymbols: ['hash_password', 'generate_token', 'TaskService'],
  42. minRecall: 0.8,
  43. minPrecision: 0.6,
  44. },
  45. // =========================================================================
  46. // Context Tests
  47. // =========================================================================
  48. {
  49. id: 'py-context-login-bug',
  50. description: 'Build context for fixing login issues',
  51. query: 'debug why users cannot log in',
  52. type: 'context',
  53. expectedSymbols: [
  54. 'AuthService.login',
  55. 'verify_password',
  56. 'db.get_user_by_email',
  57. 'User',
  58. 'hash_password',
  59. ],
  60. irrelevantSymbols: [
  61. 'TaskService',
  62. 'validate_task_title',
  63. 'Project',
  64. 'Task',
  65. ],
  66. minRecall: 0.8,
  67. minPrecision: 0.6,
  68. },
  69. {
  70. id: 'py-context-task-creation',
  71. description: 'Build context for task creation flow',
  72. query: 'understand how tasks are created',
  73. type: 'context',
  74. expectedSymbols: [
  75. 'TaskService.create_task',
  76. 'validate_task_title',
  77. 'auth_service.get_user_id',
  78. 'db.create_task',
  79. 'Task',
  80. 'generate_token',
  81. ],
  82. irrelevantSymbols: [
  83. 'validate_email',
  84. 'hash_password',
  85. 'AuthService.register',
  86. 'Project',
  87. ],
  88. minRecall: 0.7,
  89. minPrecision: 0.5,
  90. },
  91. {
  92. id: 'py-context-user-registration',
  93. description: 'Build context for user registration',
  94. query: 'add email confirmation to registration',
  95. type: 'context',
  96. expectedSymbols: [
  97. 'AuthService.register',
  98. 'validate_email',
  99. 'validate_password',
  100. 'hash_password',
  101. 'db.create_user',
  102. 'User',
  103. ],
  104. irrelevantSymbols: [
  105. 'TaskService',
  106. 'validate_task_title',
  107. 'Task',
  108. 'Project',
  109. ],
  110. minRecall: 0.7,
  111. minPrecision: 0.6,
  112. },
  113. // =========================================================================
  114. // Callers Tests
  115. // =========================================================================
  116. {
  117. id: 'py-callers-get_user_id',
  118. description: 'Find all callers of auth_service.get_user_id',
  119. query: 'get_user_id',
  120. type: 'callers',
  121. targetSymbol: 'get_user_id',
  122. expectedSymbols: [
  123. 'TaskService.create_task',
  124. 'TaskService.get_task',
  125. 'TaskService.get_user_tasks',
  126. ],
  127. irrelevantSymbols: [
  128. 'AuthService.login',
  129. 'validate_email',
  130. 'hash_password',
  131. ],
  132. minRecall: 1.0,
  133. minPrecision: 1.0,
  134. },
  135. {
  136. id: 'py-callers-validate_email',
  137. description: 'Find all callers of validate_email',
  138. query: 'validate_email',
  139. type: 'callers',
  140. targetSymbol: 'validate_email',
  141. expectedSymbols: [
  142. 'AuthService.register',
  143. ],
  144. irrelevantSymbols: [
  145. 'TaskService',
  146. 'validate_password',
  147. 'hash_password',
  148. ],
  149. minRecall: 1.0,
  150. minPrecision: 1.0,
  151. },
  152. {
  153. id: 'py-callers-generate_token',
  154. description: 'Find all callers of generate_token',
  155. query: 'generate_token',
  156. type: 'callers',
  157. targetSymbol: 'generate_token',
  158. expectedSymbols: [
  159. 'AuthService.register',
  160. 'AuthService.login',
  161. 'TaskService.create_task',
  162. ],
  163. irrelevantSymbols: [
  164. 'validate_email',
  165. 'validate_password',
  166. 'db.get_user',
  167. ],
  168. minRecall: 1.0,
  169. minPrecision: 1.0,
  170. },
  171. // =========================================================================
  172. // Callees Tests
  173. // =========================================================================
  174. {
  175. id: 'py-callees-login',
  176. description: 'Find what AuthService.login calls',
  177. query: 'login',
  178. type: 'callees',
  179. targetSymbol: 'login',
  180. expectedSymbols: [
  181. 'db.get_user_by_email',
  182. 'verify_password',
  183. 'generate_token',
  184. ],
  185. irrelevantSymbols: [
  186. 'validate_email',
  187. 'hash_password',
  188. 'validate_task_title',
  189. ],
  190. minRecall: 1.0,
  191. minPrecision: 1.0,
  192. },
  193. {
  194. id: 'py-callees-create_task',
  195. description: 'Find what TaskService.create_task calls',
  196. query: 'create_task',
  197. type: 'callees',
  198. targetSymbol: 'TaskService.create_task',
  199. expectedSymbols: [
  200. 'auth_service.get_user_id',
  201. 'validate_task_title',
  202. 'generate_token',
  203. 'db.create_task',
  204. ],
  205. irrelevantSymbols: [
  206. 'validate_email',
  207. 'hash_password',
  208. 'db.get_user',
  209. ],
  210. minRecall: 0.8,
  211. minPrecision: 0.8,
  212. },
  213. // =========================================================================
  214. // Impact Tests
  215. // =========================================================================
  216. {
  217. id: 'py-impact-generate_token',
  218. description: 'Impact of changing generate_token',
  219. query: 'generate_token',
  220. type: 'impact',
  221. targetSymbol: 'generate_token',
  222. expectedSymbols: [
  223. // Direct callers
  224. 'AuthService.register',
  225. 'AuthService.login',
  226. 'TaskService.create_task',
  227. ],
  228. irrelevantSymbols: [
  229. 'validate_email',
  230. 'validate_task_title',
  231. 'db.get_project',
  232. ],
  233. minRecall: 0.8,
  234. minPrecision: 0.7,
  235. },
  236. {
  237. id: 'py-impact-get_user_id',
  238. description: 'Impact of changing get_user_id',
  239. query: 'get_user_id',
  240. type: 'impact',
  241. targetSymbol: 'get_user_id',
  242. expectedSymbols: [
  243. 'TaskService.create_task',
  244. 'TaskService.get_task',
  245. 'TaskService.get_user_tasks',
  246. 'TaskService.complete_task',
  247. 'TaskService.delete_task',
  248. ],
  249. irrelevantSymbols: [
  250. 'AuthService.register',
  251. 'validate_email',
  252. 'hash_password',
  253. ],
  254. minRecall: 0.8,
  255. minPrecision: 0.7,
  256. },
  257. ],
  258. // Known call graph edges for validation
  259. callGraph: [
  260. // Auth -> Database
  261. { caller: 'AuthService.register', callee: 'db.get_user_by_email' },
  262. { caller: 'AuthService.register', callee: 'db.create_user' },
  263. { caller: 'AuthService.login', callee: 'db.get_user_by_email' },
  264. // Auth -> Crypto
  265. { caller: 'AuthService.register', callee: 'hash_password' },
  266. { caller: 'AuthService.register', callee: 'generate_token' },
  267. { caller: 'AuthService.login', callee: 'verify_password' },
  268. { caller: 'AuthService.login', callee: 'generate_token' },
  269. // Auth -> Validation
  270. { caller: 'AuthService.register', callee: 'validate_email' },
  271. { caller: 'AuthService.register', callee: 'validate_password' },
  272. // Task -> Auth
  273. { caller: 'TaskService.create_task', callee: 'auth_service.get_user_id' },
  274. { caller: 'TaskService.get_task', callee: 'auth_service.get_user_id' },
  275. { caller: 'TaskService.get_user_tasks', callee: 'auth_service.get_user_id' },
  276. // Task -> Database
  277. { caller: 'TaskService.create_task', callee: 'db.create_task' },
  278. { caller: 'TaskService.get_task', callee: 'db.get_task' },
  279. { caller: 'TaskService.get_user_tasks', callee: 'db.get_user_tasks' },
  280. { caller: 'TaskService.complete_task', callee: 'db.update_task' },
  281. { caller: 'TaskService.delete_task', callee: 'db.delete_task' },
  282. // Task -> Crypto
  283. { caller: 'TaskService.create_task', callee: 'generate_token' },
  284. // Task -> Validation
  285. { caller: 'TaskService.create_task', callee: 'validate_task_title' },
  286. // Task -> Task (internal)
  287. { caller: 'TaskService.complete_task', callee: 'TaskService.get_task' },
  288. { caller: 'TaskService.delete_task', callee: 'TaskService.get_task' },
  289. ],
  290. };