Commit c9ea4ab
fix(cost): close only latest open run per project on end_experiment (#537)
The cost schema allows multiple ``runs`` rows per ``project_id``
(retries, repeated traversals — ``run_id`` is the PK, project views
group/list runs). The bulk close in
``close_open_runs_for_project`` stamped every historical open row
for the project with the just-finished experiment's ``ended_at``
and final counters, corrupting older runs.
Replace with ``close_latest_open_run_for_project``: scope to the
``MAX(started_at)`` open run only. Older open rows are left to the
periodic ``backfill_run_close_state.py`` script, which derives
``ended_at`` from each row's own ``MAX(token_events.timestamp)`` —
the on-disk approximation that's correct per-run rather than a
batch-overwrite from the live hook.
Return type tightened from ``int`` (count) to ``Optional[str]``
(the closed run_id) so callers can log which row was touched.
Caught by Codex P2 on PR #538.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent a4ac295 commit c9ea4ab
3 files changed
Lines changed: 92 additions & 47 deletions
File tree
- src
- cost_tracking
- marcus_mcp/tools
- tests/unit/cost_tracking
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
992 | 992 | | |
993 | 993 | | |
994 | 994 | | |
995 | | - | |
| 995 | + | |
996 | 996 | | |
997 | 997 | | |
998 | 998 | | |
| |||
1001 | 1001 | | |
1002 | 1002 | | |
1003 | 1003 | | |
1004 | | - | |
1005 | | - | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
1006 | 1012 | | |
1007 | | - | |
1008 | | - | |
1009 | | - | |
1010 | | - | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
1011 | 1018 | | |
1012 | 1019 | | |
1013 | 1020 | | |
1014 | 1021 | | |
1015 | 1022 | | |
1016 | 1023 | | |
1017 | | - | |
1018 | | - | |
| 1024 | + | |
| 1025 | + | |
1019 | 1026 | | |
1020 | 1027 | | |
1021 | 1028 | | |
1022 | | - | |
1023 | | - | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
1024 | 1032 | | |
1025 | 1033 | | |
1026 | 1034 | | |
1027 | 1035 | | |
1028 | | - | |
1029 | | - | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
1030 | 1043 | | |
1031 | | - | |
1032 | | - | |
1033 | | - | |
1034 | | - | |
1035 | | - | |
1036 | | - | |
1037 | | - | |
1038 | | - | |
1039 | | - | |
1040 | | - | |
1041 | | - | |
1042 | | - | |
1043 | | - | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
1044 | 1057 | | |
1045 | 1058 | | |
1046 | 1059 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | | - | |
| 255 | + | |
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
262 | 262 | | |
263 | | - | |
| 263 | + | |
264 | 264 | | |
265 | | - | |
266 | | - | |
| 265 | + | |
| 266 | + | |
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1034 | 1034 | | |
1035 | 1035 | | |
1036 | 1036 | | |
1037 | | - | |
1038 | | - | |
| 1037 | + | |
| 1038 | + | |
1039 | 1039 | | |
1040 | | - | |
1041 | | - | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
1042 | 1049 | | |
1043 | 1050 | | |
1044 | | - | |
| 1051 | + | |
1045 | 1052 | | |
1046 | 1053 | | |
1047 | 1054 | | |
1048 | 1055 | | |
1049 | 1056 | | |
1050 | 1057 | | |
1051 | 1058 | | |
1052 | | - | |
| 1059 | + | |
1053 | 1060 | | |
1054 | 1061 | | |
1055 | 1062 | | |
| |||
1058 | 1065 | | |
1059 | 1066 | | |
1060 | 1067 | | |
1061 | | - | |
| 1068 | + | |
1062 | 1069 | | |
1063 | 1070 | | |
1064 | 1071 | | |
1065 | 1072 | | |
1066 | 1073 | | |
1067 | 1074 | | |
1068 | 1075 | | |
1069 | | - | |
1070 | | - | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
1071 | 1099 | | |
1072 | | - | |
1073 | | - | |
1074 | | - | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
1075 | 1109 | | |
1076 | | - | |
1077 | | - | |
1078 | | - | |
| 1110 | + | |
1079 | 1111 | | |
1080 | 1112 | | |
1081 | 1113 | | |
| |||
1103 | 1135 | | |
1104 | 1136 | | |
1105 | 1137 | | |
1106 | | - | |
1107 | | - | |
| 1138 | + | |
| 1139 | + | |
1108 | 1140 | | |
1109 | 1141 | | |
1110 | 1142 | | |
| |||
0 commit comments