- Co-Authored-By
- Claude Fable 5 <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_01RfZq5s3rc6zpnBR75pTQaU
- Closes
- #243
What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.
INVARIANTS.md
docs/taxonomy.md
lib/openagents/threads.ex
lib/openagents/threads/thread.ex
lib/openagents_web/api_error.ex
lib/openagents_web/controllers/thread_controller.ex
priv/migration_lineages/prior-2026-08-19.json
priv/repo/migrations/20260825120000_add_lane_to_threads.exs
test/openagents/threads/local_lane_test.exs
test/openagents_web/controllers/thread_controller_test.exs
10 files changed, +614 -12
@@ -1238,6 +1238,16 @@ Concretely:
| 1238 | 1238 |
|
| 1239 | 1239 |
|
| 1240 | 1240 |
|
| 1241 |
|
|
| 1242 |
|
|
| 1243 |
|
|
| 1244 |
|
|
| 1245 |
|
|
| 1246 |
|
|
| 1247 |
|
|
| 1248 |
|
|
| 1249 |
|
|
| 1250 |
|
|
| 1241 | 1251 |
|
| 1242 | 1252 |
|
| 1243 | 1253 |
|
@@ -2165,6 +2175,24 @@ conversation, and a thread is not one.
| 2165 | 2175 |
|
| 2166 | 2176 |
|
| 2167 | 2177 |
|
| 2178 |
|
|
| 2179 |
|
|
| 2180 |
|
|
| 2181 |
|
|
| 2182 |
|
|
| 2183 |
|
|
| 2184 |
|
|
| 2185 |
|
|
| 2186 |
|
|
| 2187 |
|
|
| 2188 |
|
|
| 2189 |
|
|
| 2190 |
|
|
| 2191 |
|
|
| 2192 |
|
|
| 2193 |
|
|
| 2194 |
|
|
| 2195 |
|
|
| 2168 | 2196 |
|
| 2169 | 2197 |
|
| 2170 | 2198 |
|
@@ -2295,8 +2323,10 @@ Evidence: `OpenAgents.Threads`, `OpenAgents.Threads.Thread`,
| 2295 | 2323 |
|
| 2296 | 2324 |
|
| 2297 | 2325 |
|
| 2326 |
|
|
| 2298 | 2327 |
|
| 2299 | 2328 |
|
| 2329 |
|
|
| 2300 | 2330 |
|
| 2301 | 2331 |
|
| 2302 | 2332 |
|
@@ -5303,7 +5333,7 @@ contract; the invariant prose above defines the assertion, not the filename.
| 5303 | 5333 |
|
| 5304 | 5334 |
|
| 5305 | 5335 |
|
| 5306 |
|
|
| 5336 |
|
|
| 5307 | 5337 |
|
| 5308 | 5338 |
|
| 5309 | 5339 |
|
@@ -332,7 +332,10 @@ is `OpenAgents.Threads.Thread`, and the transcript entry is
| 332 | 332 |
|
| 333 | 333 |
|
| 334 | 334 |
|
| 335 |
|
|
| 335 |
|
|
| 336 |
|
|
| 337 |
|
|
| 338 |
|
|
| 336 | 339 |
|
| 337 | 340 |
|
| 338 | 341 |
|
@@ -104,6 +104,14 @@ defmodule OpenAgents.Threads do
| 104 | 104 |
|
| 105 | 105 |
|
| 106 | 106 |
|
| 107 |
|
|
| 108 |
|
|
| 109 |
|
|
| 110 |
|
|
| 111 |
|
|
| 112 |
|
|
| 113 |
|
|
| 114 |
|
|
| 107 | 115 |
|
| 108 | 116 |
|
| 109 | 117 |
|
@@ -130,6 +138,7 @@ defmodule OpenAgents.Threads do
| 130 | 138 |
|
| 131 | 139 |
|
| 132 | 140 |
|
| 141 |
|
|
| 133 | 142 |
|
| 134 | 143 |
|
| 135 | 144 |
|
@@ -162,6 +171,7 @@ defmodule OpenAgents.Threads do
| 162 | 171 |
|
| 163 | 172 |
|
| 164 | 173 |
|
| 174 |
|
|
| 165 | 175 |
|
| 166 | 176 |
|
| 167 | 177 |
|
@@ -217,12 +227,13 @@ defmodule OpenAgents.Threads do
| 217 | 227 |
|
| 218 | 228 |
|
| 219 | 229 |
|
| 220 |
|
|
| 221 |
|
|
| 222 |
|
|
| 223 |
|
|
| 224 |
|
|
| 225 |
|
|
| 230 |
|
|
| 231 |
|
|
| 232 |
|
|
| 233 |
|
|
| 234 |
|
|
| 235 |
|
|
| 236 |
|
|
| 226 | 237 |
|
| 227 | 238 |
|
| 228 | 239 |
|
@@ -564,6 +575,13 @@ defmodule OpenAgents.Threads do
| 564 | 575 |
|
| 565 | 576 |
|
| 566 | 577 |
|
| 578 |
|
|
| 579 |
|
|
| 580 |
|
|
| 581 |
|
|
| 582 |
|
|
| 583 |
|
|
| 584 |
|
|
| 567 | 585 |
|
| 568 | 586 |
|
| 569 | 587 |
|
@@ -573,12 +591,16 @@ defmodule OpenAgents.Threads do
| 573 | 591 |
|
| 574 | 592 |
|
| 575 | 593 |
|
| 594 |
|
|
| 576 | 595 |
|
| 577 | 596 |
|
| 578 | 597 |
|
| 579 | 598 |
|
| 580 | 599 |
|
| 581 | 600 |
|
| 601 |
|
|
| 602 |
|
|
| 603 |
|
|
| 582 | 604 |
|
| 583 | 605 |
|
| 584 | 606 |
|
@@ -33,6 +33,14 @@ defmodule OpenAgents.Threads.Thread do
| 33 | 33 |
|
| 34 | 34 |
|
| 35 | 35 |
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 36 | 44 |
|
| 37 | 45 |
|
| 38 | 46 |
|
@@ -45,6 +53,7 @@ defmodule OpenAgents.Threads.Thread do
| 45 | 53 |
|
| 46 | 54 |
|
| 47 | 55 |
|
| 56 |
|
|
| 48 | 57 |
|
| 49 | 58 |
|
| 50 | 59 |
|
@@ -84,6 +93,23 @@ defmodule OpenAgents.Threads.Thread do
| 84 | 93 |
|
| 85 | 94 |
|
| 86 | 95 |
|
| 96 |
|
|
| 97 |
|
|
| 98 |
|
|
| 99 |
|
|
| 100 |
|
|
| 101 |
|
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
|
| 105 |
|
|
| 106 |
|
|
| 107 |
|
|
| 108 |
|
|
| 109 |
|
|
| 110 |
|
|
| 111 |
|
|
| 112 |
|
|
| 87 | 113 |
|
| 88 | 114 |
|
| 89 | 115 |
|
@@ -124,6 +150,7 @@ defmodule OpenAgents.Threads.Thread do
| 124 | 150 |
|
| 125 | 151 |
|
| 126 | 152 |
|
| 153 |
|
|
| 127 | 154 |
|
| 128 | 155 |
|
| 129 | 156 |
|
@@ -144,6 +171,7 @@ defmodule OpenAgents.Threads.Thread do
| 144 | 171 |
|
| 145 | 172 |
|
| 146 | 173 |
|
| 174 |
|
|
| 147 | 175 |
|
| 148 | 176 |
|
| 149 | 177 |
|
@@ -152,6 +180,7 @@ defmodule OpenAgents.Threads.Thread do
| 152 | 180 |
|
| 153 | 181 |
|
| 154 | 182 |
|
| 183 |
|
|
| 155 | 184 |
|
| 156 | 185 |
|
| 157 | 186 |
|
@@ -73,6 +73,12 @@ defmodule OpenAgentsWeb.ApiError do
| 73 | 73 |
|
| 74 | 74 |
|
| 75 | 75 |
|
| 76 |
|
|
| 77 |
|
|
| 78 |
|
|
| 79 |
|
|
| 80 |
|
|
| 81 |
|
|
| 76 | 82 |
|
| 77 | 83 |
|
| 78 | 84 |
|
@@ -31,6 +31,17 @@ defmodule OpenAgentsWeb.ThreadController do
| 31 | 31 |
|
| 32 | 32 |
|
| 33 | 33 |
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 34 | 45 |
|
| 35 | 46 |
|
| 36 | 47 |
|
@@ -45,11 +56,15 @@ defmodule OpenAgentsWeb.ThreadController do
| 45 | 56 |
|
| 46 | 57 |
|
| 47 | 58 |
|
| 48 |
|
|
| 59 |
|
|
| 60 |
|
|
| 49 | 61 |
|
| 50 | 62 |
|
| 51 |
|
|
| 52 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 53 | 68 |
|
| 54 | 69 |
|
| 55 | 70 |
|
@@ -190,6 +205,18 @@ defmodule OpenAgentsWeb.ThreadController do
| 190 | 205 |
|
| 191 | 206 |
|
| 192 | 207 |
|
| 208 |
|
|
| 209 |
|
|
| 210 |
|
|
| 211 |
|
|
| 212 |
|
|
| 213 |
|
|
| 214 |
|
|
| 215 |
|
|
| 216 |
|
|
| 217 |
|
|
| 218 |
|
|
| 219 |
|
|
| 193 | 220 |
|
| 194 | 221 |
|
| 195 | 222 |
|
@@ -302,6 +329,26 @@ defmodule OpenAgentsWeb.ThreadController do
| 302 | 329 |
|
| 303 | 330 |
|
| 304 | 331 |
|
| 332 |
|
|
| 333 |
|
|
| 334 |
|
|
| 335 |
|
|
| 336 |
|
|
| 337 |
|
|
| 338 |
|
|
| 339 |
|
|
| 340 |
|
|
| 341 |
|
|
| 342 |
|
|
| 343 |
|
|
| 344 |
|
|
| 345 |
|
|
| 346 |
|
|
| 347 |
|
|
| 348 |
|
|
| 349 |
|
|
| 350 |
|
|
| 351 |
|
|
| 305 | 352 |
|
| 306 | 353 |
|
| 307 | 354 |
|
@@ -567,6 +614,76 @@ defmodule OpenAgentsWeb.ThreadController do
| 567 | 614 |
|
| 568 | 615 |
|
| 569 | 616 |
|
| 617 |
|
|
| 618 |
|
|
| 619 |
|
|
| 620 |
|
|
| 621 |
|
|
| 622 |
|
|
| 623 |
|
|
| 624 |
|
|
| 625 |
|
|
| 626 |
|
|
| 627 |
|
|
| 628 |
|
|
| 629 |
|
|
| 630 |
|
|
| 631 |
|
|
| 632 |
|
|
| 633 |
|
|
| 634 |
|
|
| 635 |
|
|
| 636 |
|
|
| 637 |
|
|
| 638 |
|
|
| 639 |
|
|
| 640 |
|
|
| 641 |
|
|
| 642 |
|
|
| 643 |
|
|
| 644 |
|
|
| 645 |
|
|
| 646 |
|
|
| 647 |
|
|
| 648 |
|
|
| 649 |
|
|
| 650 |
|
|
| 651 |
|
|
| 652 |
|
|
| 653 |
|
|
| 654 |
|
|
| 655 |
|
|
| 656 |
|
|
| 657 |
|
|
| 658 |
|
|
| 659 |
|
|
| 660 |
|
|
| 661 |
|
|
| 662 |
|
|
| 663 |
|
|
| 664 |
|
|
| 665 |
|
|
| 666 |
|
|
| 667 |
|
|
| 668 |
|
|
| 669 |
|
|
| 670 |
|
|
| 671 |
|
|
| 672 |
|
|
| 673 |
|
|
| 674 |
|
|
| 675 |
|
|
| 676 |
|
|
| 677 |
|
|
| 678 |
|
|
| 679 |
|
|
| 680 |
|
|
| 681 |
|
|
| 682 |
|
|
| 683 |
|
|
| 684 |
|
|
| 685 |
|
|
| 686 |
|
|
| 570 | 687 |
|
| 571 | 688 |
|
| 572 | 689 |
|
@@ -0,0 +1,30 @@
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
@@ -0,0 +1,153 @@
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|
| 59 |
|
|
| 60 |
|
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
|
| 75 |
|
|
| 76 |
|
|
| 77 |
|
|
| 78 |
|
|
| 79 |
|
|
| 80 |
|
|
| 81 |
|
|
| 82 |
|
|
| 83 |
|
|
| 84 |
|
|
| 85 |
|
|
| 86 |
|
|
| 87 |
|
|
| 88 |
|
|
| 89 |
|
|
| 90 |
|
|
| 91 |
|
|
| 92 |
|
|
| 93 |
|
|
| 94 |
|
|
| 95 |
|
|
| 96 |
|
|
| 97 |
|
|
| 98 |
|
|
| 99 |
|
|
| 100 |
|
|
| 101 |
|
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
|
| 105 |
|
|
| 106 |
|
|
| 107 |
|
|
| 108 |
|
|
| 109 |
|
|
| 110 |
|
|
| 111 |
|
|
| 112 |
|
|
| 113 |
|
|
| 114 |
|
|
| 115 |
|
|
| 116 |
|
|
| 117 |
|
|
| 118 |
|
|
| 119 |
|
|
| 120 |
|
|
| 121 |
|
|
| 122 |
|
|
| 123 |
|
|
| 124 |
|
|
| 125 |
|
|
| 126 |
|
|
| 127 |
|
|
| 128 |
|
|
| 129 |
|
|
| 130 |
|
|
| 131 |
|
|
| 132 |
|
|
| 133 |
|
|
| 134 |
|
|
| 135 |
|
|
| 136 |
|
|
| 137 |
|
|
| 138 |
|
|
| 139 |
|
|
| 140 |
|
|
| 141 |
|
|
| 142 |
|
|
| 143 |
|
|
| 144 |
|
|
| 145 |
|
|
| 146 |
|
|
| 147 |
|
|
| 148 |
|
|
| 149 |
|
|
| 150 |
|
|
| 151 |
|
|
| 152 |
|
|
| 153 |
|
@@ -1025,4 +1025,215 @@ defmodule OpenAgentsWeb.ThreadControllerTest do
| 1025 | 1025 |
|
| 1026 | 1026 |
|
| 1027 | 1027 |
|
| 1028 |
|
|
| 1029 |
|
|
| 1030 |
|
|
| 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 |
|
|
| 1057 |
|
|
| 1058 |
|
|
| 1059 |
|
|
| 1060 |
|
|
| 1061 |
|
|
| 1062 |
|
|
| 1063 |
|
|
| 1064 |
|
|
| 1065 |
|
|
| 1066 |
|
|
| 1067 |
|
|
| 1068 |
|
|
| 1069 |
|
|
| 1070 |
|
|
| 1071 |
|
|
| 1072 |
|
|
| 1073 |
|
|
| 1074 |
|
|
| 1075 |
|
|
| 1076 |
|
|
| 1077 |
|
|
| 1078 |
|
|
| 1079 |
|
|
| 1080 |
|
|
| 1081 |
|
|
| 1082 |
|
|
| 1083 |
|
|
| 1084 |
|
|
| 1085 |
|
|
| 1086 |
|
|
| 1087 |
|
|
| 1088 |
|
|
| 1089 |
|
|
| 1090 |
|
|
| 1091 |
|
|
| 1092 |
|
|
| 1093 |
|
|
| 1094 |
|
|
| 1095 |
|
|
| 1096 |
|
|
| 1097 |
|
|
| 1098 |
|
|
| 1099 |
|
|
| 1100 |
|
|
| 1101 |
|
|
| 1102 |
|
|
| 1103 |
|
|
| 1104 |
|
|
| 1105 |
|
|
| 1106 |
|
|
| 1107 |
|
|
| 1108 |
|
|
| 1109 |
|
|
| 1110 |
|
|
| 1111 |
|
|
| 1112 |
|
|
| 1113 |
|
|
| 1114 |
|
|
| 1115 |
|
|
| 1116 |
|
|
| 1117 |
|
|
| 1118 |
|
|
| 1119 |
|
|
| 1120 |
|
|
| 1121 |
|
|
| 1122 |
|
|
| 1123 |
|
|
| 1124 |
|
|
| 1125 |
|
|
| 1126 |
|
|
| 1127 |
|
|
| 1128 |
|
|
| 1129 |
|
|
| 1130 |
|
|
| 1131 |
|
|
| 1132 |
|
|
| 1133 |
|
|
| 1134 |
|
|
| 1135 |
|
|
| 1136 |
|
|
| 1137 |
|
|
| 1138 |
|
|
| 1139 |
|
|
| 1140 |
|
|
| 1141 |
|
|
| 1142 |
|
|
| 1143 |
|
|
| 1144 |
|
|
| 1145 |
|
|
| 1146 |
|
|
| 1147 |
|
|
| 1148 |
|
|
| 1149 |
|
|
| 1150 |
|
|
| 1151 |
|
|
| 1152 |
|
|
| 1153 |
|
|
| 1154 |
|
|
| 1155 |
|
|
| 1156 |
|
|
| 1157 |
|
|
| 1158 |
|
|
| 1159 |
|
|
| 1160 |
|
|
| 1161 |
|
|
| 1162 |
|
|
| 1163 |
|
|
| 1164 |
|
|
| 1165 |
|
|
| 1166 |
|
|
| 1167 |
|
|
| 1168 |
|
|
| 1169 |
|
|
| 1170 |
|
|
| 1171 |
|
|
| 1172 |
|
|
| 1173 |
|
|
| 1174 |
|
|
| 1175 |
|
|
| 1176 |
|
|
| 1177 |
|
|
| 1178 |
|
|
| 1179 |
|
|
| 1180 |
|
|
| 1181 |
|
|
| 1182 |
|
|
| 1183 |
|
|
| 1184 |
|
|
| 1185 |
|
|
| 1186 |
|
|
| 1187 |
|
|
| 1188 |
|
|
| 1189 |
|
|
| 1190 |
|
|
| 1191 |
|
|
| 1192 |
|
|
| 1193 |
|
|
| 1194 |
|
|
| 1195 |
|
|
| 1196 |
|
|
| 1197 |
|
|
| 1198 |
|
|
| 1199 |
|
|
| 1200 |
|
|
| 1201 |
|
|
| 1202 |
|
|
| 1203 |
|
|
| 1204 |
|
|
| 1205 |
|
|
| 1206 |
|
|
| 1207 |
|
|
| 1208 |
|
|
| 1209 |
|
|
| 1210 |
|
|
| 1211 |
|
|
| 1212 |
|
|
| 1213 |
|
|
| 1214 |
|
|
| 1215 |
|
|
| 1216 |
|
|
| 1217 |
|
|
| 1218 |
|
|
| 1219 |
|
|
| 1220 |
|
|
| 1221 |
|
|
| 1222 |
|
|
| 1223 |
|
|
| 1224 |
|
|
| 1225 |
|
|
| 1226 |
|
|
| 1227 |
|
|
| 1228 |
|
|
| 1229 |
|
|
| 1230 |
|
|
| 1231 |
|
|
| 1232 |
|
|
| 1233 |
|
|
| 1234 |
|
|
| 1235 |
|
|
| 1236 |
|
|
| 1237 |
|
|
| 1238 |
|
|
| 1028 | 1239 |
|