-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathtest_output.log
More file actions
9569 lines (9085 loc) · 536 KB
/
test_output.log
File metadata and controls
9569 lines (9085 loc) · 536 KB
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
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
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
============================= test session starts ==============================
platform linux -- Python 3.13.3, pytest-8.4.2, pluggy-1.6.0 -- /home/frankbria/projects/codeframe/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /home/frankbria/projects/codeframe
configfile: pytest.ini
plugins: cov-7.0.0, anyio-4.11.0, asyncio-1.2.0
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 1852 items
tests/agents/test_agent_factory.py::TestAgentFactory::test_factory_initialization PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_list_available_agents PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_backend_worker_agent PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_backend_architect_agent PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_frontend_specialist_agent PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_test_engineer_agent PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_code_reviewer_agent PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_get_agent_capabilities PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_get_agent_capabilities_unknown_type PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_agent_unknown_type PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_create_agent_with_custom_maturity PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_get_agent_definition PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_get_agents_by_type PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_backward_compatibility_with_existing_code PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_agent_has_system_prompt PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_agent_has_capabilities_attribute PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_agent_has_tools_attribute PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_agent_has_constraints_attribute PASSED [ 0%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_reload_definitions PASSED [ 1%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_worker_agent_maintains_backward_compatibility PASSED [ 1%]
tests/agents/test_agent_factory.py::TestAgentFactory::test_worker_agent_with_system_prompt PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentEndpoint::test_start_agent_endpoint_returns_202_accepted FAILED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentEndpoint::test_start_agent_endpoint_handles_nonexistent_project PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentEndpoint::test_start_agent_endpoint_handles_already_running FAILED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentEndpoint::test_start_agent_endpoint_triggers_background_task PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentFunction::test_start_agent_creates_lead_agent_instance PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentFunction::test_start_agent_updates_project_status_to_running PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentFunction::test_start_agent_saves_greeting_to_database PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestStartAgentFunction::test_start_agent_broadcasts_via_websocket PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestWebSocketMessageProtocol::test_broadcast_message_formats_status_update PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestWebSocketMessageProtocol::test_broadcast_message_formats_chat_message PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestWebSocketMessageProtocol::test_broadcast_message_formats_agent_started PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestAgentLifecycleIntegration::test_complete_start_workflow_end_to_end PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestRunningAgentsDictionary::test_running_agents_dictionary_stores_agent_reference PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestRunningAgentsDictionary::test_running_agents_dictionary_handles_multiple_projects PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestRunningAgentsDictionary::test_running_agents_dictionary_allows_agent_removal PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestAgentLifecycleErrorHandling::test_start_agent_handles_database_error_gracefully PASSED [ 1%]
tests/agents/test_agent_lifecycle.py::TestAgentLifecycleErrorHandling::test_start_agent_handles_lead_agent_initialization_error PASSED [ 2%]
tests/agents/test_agent_lifecycle.py::TestAgentLifecycleErrorHandling::test_start_agent_handles_websocket_broadcast_failure PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentPoolManagerInitialization::test_initialization_with_defaults PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentPoolManagerInitialization::test_initialization_with_custom_max PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentCreation::test_create_backend_agent PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentCreation::test_create_frontend_agent PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentCreation::test_create_test_agent PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentCreation::test_create_multiple_agents_increments_number PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentCreation::test_create_agent_invalid_type PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentPoolLimits::test_create_agent_at_max_limit_raises_error PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentPoolLimits::test_create_agent_after_retirement_succeeds PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentStatusManagement::test_mark_agent_busy PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentStatusManagement::test_mark_agent_idle PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentStatusManagement::test_mark_agent_blocked PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentRetirement::test_retire_agent_removes_from_pool PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentRetirement::test_retire_nonexistent_agent_raises_error PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestAgentRetirement::test_retire_all_agents PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestEdgeCases::test_mark_busy_nonexistent_agent PASSED [ 2%]
tests/agents/test_agent_pool_manager.py::TestEdgeCases::test_mark_idle_nonexistent_agent PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestEdgeCases::test_double_retirement_raises_error PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestTasksCompletedTracking::test_increment_tasks_completed PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestTasksCompletedTracking::test_tasks_completed_resets_on_new_agent PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestSDKModeInitialization::test_initialization_with_use_sdk_false PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestSDKModeInitialization::test_initialization_with_use_sdk_true PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestSDKModeInitialization::test_initialization_with_model PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestSDKModeInitialization::test_initialization_with_cwd PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestHybridAgentCreation::test_create_hybrid_agent_when_use_sdk_true PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestHybridAgentCreation::test_create_traditional_agent_when_use_sdk_false PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestHybridAgentCreation::test_create_agent_with_use_sdk_override PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestAgentStatusWithSDKFields::test_get_agent_status_includes_hybrid_field PASSED [ 3%]
tests/agents/test_agent_pool_manager.py::TestAgentStatusWithSDKFields::test_get_agent_status_includes_session_id PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentInitialization::test_init_with_required_parameters PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentInitialization::test_init_with_default_provider PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentInitialization::test_init_with_custom_provider PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentInitialization::test_init_with_api_key PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskFetching::test_fetch_next_task_returns_pending_task PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskFetching::test_fetch_next_task_returns_none_when_no_tasks PASSED [ 3%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskFetching::test_fetch_next_task_respects_priority_ordering PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskFetching::test_fetch_next_task_respects_workflow_step_ordering PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskFetching::test_fetch_next_task_filters_by_project_id PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskFetching::test_fetch_next_task_skips_non_pending_tasks PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentContextBuilding::test_build_context_with_related_symbols PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentContextBuilding::test_build_context_with_issue_data PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentContextBuilding::test_build_context_with_related_files PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentContextBuilding::test_build_context_handles_empty_codebase_index PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentContextBuilding::test_build_context_handles_missing_issue_id PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentCodeGeneration::test_generate_code_creates_single_file PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentCodeGeneration::test_generate_code_modifies_multiple_files PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentCodeGeneration::test_generate_code_handles_api_error PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentCodeGeneration::test_generate_code_handles_malformed_response PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_creates_new_file PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_modifies_existing_file PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_deletes_file PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_creates_parent_directories PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_handles_multiple_files PASSED [ 4%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_prevents_path_traversal PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_handles_absolute_paths PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_handles_file_not_found_for_modify PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentFileOperations::test_apply_file_changes_handles_file_not_found_for_delete PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskStatus::test_update_task_status_to_in_progress PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskStatus::test_update_task_status_to_completed PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTaskStatus::test_update_task_status_to_failed PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentExecution::test_execute_task_success PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentExecution::test_execute_task_handles_api_failure PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentExecution::test_execute_task_handles_file_operation_failure PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTestRunnerIntegration::test_execute_task_runs_tests_after_code_generation PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTestRunnerIntegration::test_execute_task_handles_test_failures PASSED [ 5%]
tests/agents/test_backend_worker_agent.py::TestBackendWorkerAgentTestRunnerIntegration::test_execute_task_handles_test_runner_errors PASSED [ 5%]
tests/agents/test_backend_worker_auto_commit.py::test_backend_worker_commits_after_successful_task PASSED [ 5%]
tests/agents/test_backend_worker_auto_commit.py::test_backend_worker_no_commit_on_failure PASSED [ 5%]
tests/agents/test_backend_worker_auto_commit.py::test_backend_worker_graceful_commit_failure PASSED [ 5%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_test_worker_agent_uses_sdk_for_pytest PASSED [ 5%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_test_worker_agent_sdk_bash_tool_pattern PASSED [ 5%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_test_worker_agent_bash_tool_error_handling PASSED [ 5%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_backend_worker_agent_already_uses_sdk PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_backend_worker_agent_sdk_allowed_tools PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_backend_worker_agent_sdk_bash_usage PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_test_runner_still_uses_subprocess PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_test_runner_unchanged_import PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_git_status_via_sdk_bash_tool PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_git_add_via_sdk_bash_tool PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_git_commit_via_sdk_bash_tool PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_ruff_check_via_sdk_bash_tool PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_black_format_via_sdk_bash_tool PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_npm_install_via_sdk_bash_tool PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsMigration::test_bash_tool_error_code_handling PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsIntegration::test_full_workflow_with_sdk_bash PASSED [ 6%]
tests/agents/test_bash_operations_migration.py::TestBashOperationsIntegration::test_sdk_client_wrapper_bash_tool_enabled PASSED [ 6%]
tests/agents/test_file_operations_migration.py::test_backend_agent_sdk_initialization PASSED [ 6%]
tests/agents/test_file_operations_migration.py::test_backend_agent_no_sdk_initialization PASSED [ 6%]
tests/agents/test_file_operations_migration.py::test_generate_code_with_sdk PASSED [ 6%]
tests/agents/test_file_operations_migration.py::test_generate_code_without_sdk PASSED [ 6%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_with_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_without_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_modify_action_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_delete_action_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_rejects_absolute_path_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_rejects_absolute_path_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_rejects_path_traversal_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_rejects_path_traversal_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_multiple_files_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_modify_nonexistent_file_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_apply_file_changes_delete_nonexistent_file_no_sdk PASSED [ 7%]
tests/agents/test_file_operations_migration.py::test_build_system_prompt_includes_tool_instructions PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestFrontendWorkerAgentInitialization::test_initialization_with_defaults PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestFrontendWorkerAgentInitialization::test_initialization_with_custom_maturity PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestFrontendWorkerAgentInitialization::test_initialization_with_api_key PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestFrontendWorkerAgentInitialization::test_initialization_sets_project_paths PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestComponentSpecParsing::test_parse_json_spec PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestComponentSpecParsing::test_parse_plain_text_with_component_keyword PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestComponentSpecParsing::test_parse_plain_text_with_create_pattern PASSED [ 7%]
tests/agents/test_frontend_worker_agent.py::TestComponentSpecParsing::test_parse_minimal_spec PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestComponentGeneration::test_generate_basic_component_template PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestComponentGeneration::test_generate_component_with_api_success PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestComponentGeneration::test_generate_component_api_fallback PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestFileCreation::test_create_component_file PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestFileCreation::test_create_component_with_types PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestFileCreation::test_create_component_file_conflict PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestImportExportUpdates::test_create_index_file_if_not_exists PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestImportExportUpdates::test_append_to_existing_index_file PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestImportExportUpdates::test_skip_duplicate_export PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestTaskExecution::test_execute_task_success PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestTaskExecution::test_execute_task_with_websocket_broadcasts PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestTaskExecution::test_execute_task_json_spec PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestTaskExecution::test_execute_task_error_handling PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestWebSocketIntegration::test_broadcast_task_started PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestWebSocketIntegration::test_broadcast_task_completed PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestErrorHandling::test_handle_file_already_exists PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestErrorHandling::test_handle_missing_api_key PASSED [ 8%]
tests/agents/test_frontend_worker_agent.py::TestProjectConventions::test_generated_component_uses_tailwind PASSED [ 9%]
tests/agents/test_frontend_worker_agent.py::TestProjectConventions::test_generated_component_is_functional PASSED [ 9%]
tests/agents/test_frontend_worker_agent.py::TestProjectConventions::test_generated_component_has_typescript_types PASSED [ 9%]
tests/agents/test_frontend_worker_auto_commit.py::test_frontend_worker_commits_after_successful_task PASSED [ 9%]
tests/agents/test_frontend_worker_auto_commit.py::test_frontend_worker_no_commit_on_component_conflict PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestHybridWorkerInitialization::test_init_with_required_params PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestHybridWorkerInitialization::test_init_with_all_params PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestHybridWorkerInitialization::test_inherits_from_worker_agent PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTaskExecution::test_execute_task_success PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTaskExecution::test_execute_task_sets_current_task PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTaskExecution::test_execute_task_loads_context PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTaskExecution::test_execute_task_saves_result_to_context PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTaskExecution::test_execute_task_extracts_changed_files PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTaskExecution::test_execute_task_handles_sdk_error PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestContextManagement::test_load_context_hot_tier PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestContextManagement::test_save_context_item PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestContextManagement::test_flash_save_checks_threshold PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTokenTracking::test_records_token_usage PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestTokenTracking::test_token_tracking_failure_doesnt_break_execution PASSED [ 9%]
tests/agents/test_hybrid_worker.py::TestPromptBuilding::test_build_prompt_includes_task_info PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestPromptBuilding::test_build_prompt_includes_context PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestPromptBuilding::test_build_prompt_truncates_long_context PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestPromptBuilding::test_build_prompt_includes_dependencies PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestFileExtraction::test_extract_created_file PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestFileExtraction::test_extract_modified_file PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestFileExtraction::test_extract_multiple_files PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestFileExtraction::test_empty_content_returns_empty_list PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestSessionManagement::test_get_session_info PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestSessionManagement::test_session_id_in_execution_result PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestSessionManagement::test_session_id_returned_in_result PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestStreamingExecution::test_streaming_yields_chunks PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestStreamingExecution::test_streaming_returns_final_result PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestResultSummary::test_summarize_short_content PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestResultSummary::test_summarize_long_content PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestResultSummary::test_summarize_empty_content PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestResultSummary::test_summarize_takes_first_paragraph PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestIntegration::test_full_execution_flow PASSED [ 10%]
tests/agents/test_hybrid_worker.py::TestIntegration::test_quality_gates_inherited PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentInitialization::test_lead_agent_initialization_with_database PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentInitialization::test_lead_agent_initialization_without_api_key_raises_error PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentInitialization::test_lead_agent_loads_existing_conversation PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentChat::test_chat_sends_message_to_provider PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentChat::test_chat_saves_user_message_to_database PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentChat::test_chat_saves_assistant_response_to_database PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentChat::test_chat_maintains_conversation_history PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentChat::test_chat_handles_provider_error PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentChat::test_chat_with_empty_message_raises_error PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentConversationPersistence::test_conversation_persists_across_agent_instances PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentConversationPersistence::test_conversation_handles_long_history PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentTokenUsageTracking::test_chat_logs_token_usage PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentTokenUsageTracking::test_chat_tracks_total_tokens PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentErrorHandling::test_chat_handles_database_error PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentErrorHandling::test_chat_logs_errors_with_context PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentIntegration::test_complete_conversation_workflow PASSED [ 11%]
tests/agents/test_lead_agent.py::TestLeadAgentIntegration::test_agent_restart_maintains_context PASSED [ 11%]
tests/agents/test_lead_agent_blocker_handling.py::TestLeadAgentSyncBlockerHandling::test_sync_blocker_pauses_dependent_tasks PASSED [ 11%]
tests/agents/test_lead_agent_blocker_handling.py::TestLeadAgentSyncBlockerHandling::test_sync_blocker_blocks_all_dependent_tasks PASSED [ 12%]
tests/agents/test_lead_agent_blocker_handling.py::TestLeadAgentSyncBlockerHandling::test_sync_blocker_does_not_block_independent_tasks PASSED [ 12%]
tests/agents/test_lead_agent_blocker_handling.py::TestLeadAgentAsyncBlockerHandling::test_async_blocker_allows_dependent_tasks_to_continue PASSED [ 12%]
tests/agents/test_lead_agent_blocker_handling.py::TestLeadAgentAsyncBlockerHandling::test_async_blocker_allows_all_work_to_continue PASSED [ 12%]
tests/agents/test_lead_agent_blocker_handling.py::TestLeadAgentBlockerHandlingIntegration::test_multi_agent_execution_pauses_for_sync_blocker PASSED [ 12%]
tests/agents/test_lead_agent_debug.py::test_lead_agent_creation PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentStartIssueWork::test_start_issue_work_creates_feature_branch PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentStartIssueWork::test_start_issue_work_with_nonexistent_issue PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentStartIssueWork::test_start_issue_work_with_existing_active_branch PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentStartIssueWork::test_start_issue_work_returns_correct_structure PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentStartIssueWork::test_start_issue_work_git_branch_created_in_repo PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentCompleteIssue::test_complete_issue_merges_when_all_tasks_done PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentCompleteIssue::test_complete_issue_fails_when_tasks_incomplete PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentCompleteIssue::test_complete_issue_fails_without_active_branch PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentCompleteIssue::test_complete_issue_updates_database PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentCompleteIssue::test_complete_issue_nonexistent_issue PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentCompleteIssue::test_complete_issue_with_multiple_completed_tasks PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentGitWorkflowIntegration::test_full_workflow_start_to_merge PASSED [ 12%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentGitWorkflowIntegration::test_workflow_with_no_tasks_fails PASSED [ 13%]
tests/agents/test_lead_agent_git_integration.py::TestLeadAgentGitWorkflowIntegration::test_multiple_issues_separate_branches PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestSessionManager::test_save_session_creates_file PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestSessionManager::test_load_session_returns_dict PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestSessionManager::test_load_session_returns_none_missing_file PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestSessionManager::test_load_session_handles_corrupted_json PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestSessionManager::test_clear_session_removes_file PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestSessionManager::test_clear_session_no_error_when_file_missing PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_session_summary PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_session_summary_no_tasks PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_completed_task_ids PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_format_time_ago_minutes PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_format_time_ago_hours PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_format_time_ago_days PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_format_time_ago_invalid PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_pending_actions PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_blocker_summaries PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_progress_percentage PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionHelpers::test_get_progress_percentage_zero_tasks PASSED [ 13%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionLifecycle::test_on_session_start_no_state PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionLifecycle::test_on_session_end_saves_state PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSessionLifecycle::test_session_lifecycle_integration PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_init_with_use_sdk_parameter PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_init_with_project_root_parameter PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_sdk_sessions_initialized_empty PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_get_sdk_sessions_returns_empty_dict PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_get_sdk_sessions_with_hybrid_agents PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_get_sdk_sessions_excludes_non_hybrid_agents PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_get_sdk_sessions_excludes_agents_without_session_id PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_get_sdk_sessions_handles_error PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_on_session_end_includes_sdk_sessions PASSED [ 14%]
tests/agents/test_lead_agent_session.py::TestLeadAgentSDKCoordination::test_agent_pool_manager_created_with_use_sdk PASSED [ 14%]
tests/agents/test_multi_agent_integration.py::TestMinimalIntegration::test_single_task_execution_minimal PASSED [ 14%]
tests/agents/test_multi_agent_integration.py::TestThreeAgentParallelExecution::test_parallel_execution_three_agents PASSED [ 14%]
tests/agents/test_multi_agent_integration.py::TestDependencyBlocking::test_task_waits_for_dependency PASSED [ 14%]
tests/agents/test_multi_agent_integration.py::TestDependencyUnblocking::test_task_starts_when_unblocked PASSED [ 14%]
tests/agents/test_multi_agent_integration.py::TestComplexDependencyGraph::test_complex_dependency_graph_ten_tasks PASSED [ 14%]
tests/agents/test_multi_agent_integration.py::TestAgentReuse::test_agent_reuse_same_type_tasks PASSED [ 15%]
tests/agents/test_multi_agent_integration.py::TestErrorRecovery::test_task_retry_after_failure PASSED [ 15%]
tests/agents/test_multi_agent_integration.py::TestErrorRecovery::test_task_fails_after_max_retries PASSED [ 15%]
tests/agents/test_multi_agent_integration.py::TestCompletionDetection::test_completion_detection_all_tasks_done PASSED [ 15%]
tests/agents/test_multi_agent_integration.py::TestConcurrentDatabaseAccess::test_concurrent_task_updates_no_race_conditions PASSED [ 15%]
tests/agents/test_multi_agent_integration.py::TestWebSocketBroadcasts::test_websocket_broadcasts_all_events PASSED [ 15%]
tests/agents/test_multi_agent_integration.py::TestDeadlockPrevention::test_circular_dependency_detection PASSED [ 15%]
tests/agents/test_review_agent.py::test_detect_sql_injection PASSED [ 15%]
tests/agents/test_review_agent.py::test_detect_performance_issue PASSED [ 15%]
tests/agents/test_review_agent.py::test_store_review_findings PASSED [ 15%]
tests/agents/test_review_agent.py::test_block_on_critical_finding PASSED [ 15%]
tests/agents/test_review_agent.py::test_pass_on_low_severity PASSED [ 15%]
tests/agents/test_review_agent.py::test_full_review_workflow PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_execute_task_basic PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_execute_task_runs_complexity_check PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_execute_task_runs_security_check PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_execute_task_runs_style_check PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_scoring_algorithm_weights PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_scoring_range PASSED [ 15%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_scoring_favors_security PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_decision_approve_high_score PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_decision_approve_good_score PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_decision_request_changes_medium_score PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_decision_reject_low_score PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_creates_blocker_on_changes_requested PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_creates_blocker_on_reject PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_no_blocker_on_approve PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_report_format_json PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_report_format_markdown PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_report_includes_findings PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_report_includes_summary PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_report_scores_all_present PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_empty_files_list PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_nonexistent_files PASSED [ 16%]
tests/agents/test_review_worker_agent.py::TestReviewWorkerAgent::test_iteration_tracking PASSED [ 16%]
tests/agents/test_subagent_generator.py::TestDefinitionLoading::test_loads_yaml_files_on_init PASSED [ 16%]
tests/agents/test_subagent_generator.py::TestDefinitionLoading::test_loads_raw_definitions PASSED [ 16%]
tests/agents/test_subagent_generator.py::TestDefinitionLoading::test_handles_missing_definitions_dir PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestDefinitionLoading::test_reload_definitions PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestDefinitionLoading::test_invalid_agent_name_raises_keyerror PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownGeneration::test_generate_single_agent PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownGeneration::test_generate_all_agents PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownGeneration::test_output_directory_created PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownGeneration::test_filename_sanitization PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownGeneration::test_invalid_maturity_raises_error PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownGeneration::test_unknown_agent_raises_error PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_frontmatter_format PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_system_prompt_included PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_maturity_section_included PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_maturity_capabilities_included PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_different_maturity_levels PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_error_recovery_section PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestMarkdownContent::test_integration_points_section PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_file_operations_maps_to_read_write PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_codebase_index_maps_to_glob_grep PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_test_runner_maps_to_bash PASSED [ 17%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_git_operations_maps_to_bash PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_anthropic_api_maps_to_empty PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_multiple_tools_combined PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_tools_sorted_alphabetically PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_unknown_tool_logged_as_warning PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestToolMapping::test_generated_markdown_has_correct_tools PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestMaturityConfig::test_get_maturity_config_d1 PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestMaturityConfig::test_get_maturity_config_d4 PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestMaturityConfig::test_missing_maturity_returns_none PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestMaturityConfig::test_fallback_to_general_capabilities PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestEdgeCases::test_empty_capabilities_list PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestEdgeCases::test_empty_tools_list PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestEdgeCases::test_multiline_description PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestEdgeCases::test_special_characters_in_name PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestIntegration::test_with_real_definitions_dir PASSED [ 18%]
tests/agents/test_subagent_generator.py::TestIntegration::test_roundtrip_consistency PASSED [ 18%]
tests/agents/test_test_worker_agent.py::TestTestWorkerAgentInitialization::test_initialization_with_defaults PASSED [ 18%]
tests/agents/test_test_worker_agent.py::TestTestWorkerAgentInitialization::test_initialization_with_custom_attempts PASSED [ 18%]
tests/agents/test_test_worker_agent.py::TestTestSpecParsing::test_parse_json_spec PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTestSpecParsing::test_parse_plain_text_with_test_keyword PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTestSpecParsing::test_parse_minimal_spec PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestCodeAnalysis::test_analyze_existing_file PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestCodeAnalysis::test_analyze_nonexistent_file PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestCodeAnalysis::test_analyze_none_file PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTestGeneration::test_generate_basic_test_template PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTestGeneration::test_generate_tests_with_api_success PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestFileCreation::test_create_test_file PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestFileCreation::test_create_test_file_adds_prefix PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestFileCreation::test_create_test_file_adds_extension PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTestExecution::test_execute_passing_tests PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTestExecution::test_execute_failing_tests PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestSelfCorrection::test_correct_failing_tests PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTaskExecution::test_execute_task_basic PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTaskExecution::test_execute_task_success PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestTaskExecution::test_execute_task_with_corrections PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestWebSocketIntegration::test_broadcast_test_result PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestErrorHandling::test_handle_analysis_error PASSED [ 19%]
tests/agents/test_test_worker_agent.py::TestErrorHandling::test_handle_execution_timeout PASSED [ 20%]
tests/agents/test_test_worker_agent.py::TestProjectConventions::test_generated_tests_use_pytest PASSED [ 20%]
tests/agents/test_test_worker_agent.py::TestProjectConventions::test_generated_tests_follow_naming PASSED [ 20%]
tests/agents/test_test_worker_auto_commit.py::test_test_worker_commits_after_successful_task PASSED [ 20%]
tests/agents/test_test_worker_auto_commit.py::test_test_worker_commits_even_after_test_correction PASSED [ 20%]
tests/api/test_api_discovery_progress.py::TestDiscoveryProgressEndpoint::test_get_discovery_progress_returns_404_for_nonexistent_project PASSED [ 20%]
tests/api/test_api_discovery_progress.py::TestDiscoveryProgressEndpoint::test_get_discovery_progress_returns_null_when_discovery_not_started PASSED [ 20%]
tests/api/test_api_discovery_progress.py::TestDiscoveryProgressEndpoint::test_get_discovery_progress_returns_progress_when_discovering PASSED [ 20%]
tests/api/test_api_discovery_progress.py::TestDiscoveryProgressEndpoint::test_get_discovery_progress_returns_100_percent_when_completed PASSED [ 20%]
tests/api/test_api_discovery_progress.py::TestDiscoveryProgressEndpoint::test_get_discovery_progress_matches_project_phase PASSED [ 20%]
tests/api/test_api_discovery_progress.py::TestDiscoveryProgressEndpoint::test_get_discovery_progress_excludes_answers_field PASSED [ 20%]
tests/api/test_api_issues.py::TestIssuesEndpointBasics::test_issues_endpoint_exists PASSED [ 20%]
tests/api/test_api_issues.py::TestIssuesEndpointBasics::test_issues_endpoint_returns_json PASSED [ 20%]
tests/api/test_api_issues.py::TestIssuesEndpointBasics::test_issues_endpoint_returns_200 PASSED [ 20%]
tests/api/test_api_issues.py::TestIssuesResponseStructure::test_issues_response_has_required_fields PASSED [ 20%]
tests/api/test_api_issues.py::TestIssuesResponseStructure::test_issues_response_contains_issues_array PASSED [ 20%]
tests/api/test_api_issues.py::TestIssuesResponseStructure::test_issues_response_total_counts PASSED [ 20%]
tests/api/test_api_issues.py::TestIssueStructure::test_issue_has_required_fields PASSED [ 20%]
tests/api/test_api_issues.py::TestIssueStructure::test_issue_id_is_string PASSED [ 21%]
tests/api/test_api_issues.py::TestIssueStructure::test_issue_depends_on_is_array PASSED [ 21%]
tests/api/test_api_issues.py::TestIssueStructure::test_issue_proposed_by_is_valid PASSED [ 21%]
tests/api/test_api_issues.py::TestIssueStructure::test_issue_timestamps_are_rfc3339 PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesWithTasks::test_issues_include_tasks_query_param PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesWithTasks::test_issue_tasks_is_array PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesWithTasks::test_issue_tasks_count PASSED [ 21%]
tests/api/test_api_issues.py::TestTaskStructure::test_task_has_required_fields PASSED [ 21%]
tests/api/test_api_issues.py::TestTaskStructure::test_task_id_is_string PASSED [ 21%]
tests/api/test_api_issues.py::TestTaskStructure::test_task_depends_on_is_array PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesEndpointEdgeCases::test_issues_without_tasks_query_param PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesEndpointEdgeCases::test_empty_issues_list PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesEndpointEdgeCases::test_nonexistent_project_returns_404 PASSED [ 21%]
tests/api/test_api_issues.py::TestIssuesEndpointEdgeCases::test_issues_endpoint_handles_invalid_project_id PASSED [ 21%]
tests/api/test_api_metrics.py::TestProjectTokenMetricsEndpoint::test_endpoint_exists PASSED [ 21%]
tests/api/test_api_metrics.py::TestProjectTokenMetricsEndpoint::test_returns_all_usage_records PASSED [ 21%]
tests/api/test_api_metrics.py::TestProjectTokenMetricsEndpoint::test_date_filtering PASSED [ 21%]
tests/api/test_api_metrics.py::TestProjectTokenMetricsEndpoint::test_invalid_date_format_returns_400 PASSED [ 21%]
tests/api/test_api_metrics.py::TestProjectTokenMetricsEndpoint::test_nonexistent_project_returns_404 PASSED [ 21%]
tests/api/test_api_metrics.py::TestProjectCostMetricsEndpoint::test_endpoint_exists PASSED [ 22%]
tests/api/test_api_metrics.py::TestProjectCostMetricsEndpoint::test_returns_cost_breakdown PASSED [ 22%]
tests/api/test_api_metrics.py::TestProjectCostMetricsEndpoint::test_nonexistent_project_returns_404 PASSED [ 22%]
tests/api/test_api_metrics.py::TestAgentMetricsEndpoint::test_endpoint_exists PASSED [ 22%]
tests/api/test_api_metrics.py::TestAgentMetricsEndpoint::test_returns_agent_metrics PASSED [ 22%]
tests/api/test_api_metrics.py::TestAgentMetricsEndpoint::test_project_filtering PASSED [ 22%]
tests/api/test_api_metrics.py::TestAgentMetricsEndpoint::test_nonexistent_agent_returns_empty PASSED [ 22%]
tests/api/test_api_metrics.py::TestAgentMetricsEndpoint::test_agent_with_no_data_for_project_returns_empty PASSED [ 22%]
tests/api/test_api_metrics.py::TestMetricsEndpointIntegration::test_all_endpoints_consistent PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDEndpointBasics::test_prd_endpoint_exists PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDEndpointBasics::test_prd_endpoint_returns_json PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDEndpointBasics::test_prd_endpoint_returns_200_when_available PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDResponseStructure::test_prd_response_has_required_fields PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDResponseStructure::test_prd_response_project_id_is_string PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDResponseStructure::test_prd_response_timestamps_are_rfc3339 PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDResponseStructure::test_prd_response_status_is_available PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDResponseStructure::test_prd_response_contains_correct_content PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDEndpointNotFound::test_prd_not_found_returns_status_not_found PASSED [ 22%]
tests/api/test_api_prd.py::TestPRDEndpointNotFound::test_prd_not_found_returns_empty_content PASSED [ 23%]
tests/api/test_api_prd.py::TestPRDEndpointNotFound::test_nonexistent_project_returns_404 PASSED [ 23%]
tests/api/test_api_prd.py::TestPRDEndpointEdgeCases::test_prd_endpoint_handles_invalid_project_id PASSED [ 23%]
tests/api/test_api_prd.py::TestPRDEndpointEdgeCases::test_prd_endpoint_with_very_large_content PASSED [ 23%]
tests/api/test_api_prd.py::TestPRDEndpointEdgeCases::test_prd_updated_at_reflects_latest_change PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_get_session_success_with_existing_session PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_get_session_returns_empty_state_when_no_file PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_get_session_nonexistent_project PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_state_structure_validation PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_handles_corrupted_json PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_timestamp_format PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_next_actions_order_preserved PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_blocker_structure PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_progress_percentage_range PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpoint::test_session_endpoint_response_time PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpointEdgeCases::test_session_with_empty_next_actions PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpointEdgeCases::test_session_with_zero_progress PASSED [ 23%]
tests/api/test_api_session.py::TestSessionEndpointEdgeCases::test_session_with_100_percent_progress PASSED [ 23%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveEndpointBasics::test_resolve_endpoint_exists PASSED [ 23%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveEndpointBasics::test_resolve_endpoint_returns_json PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveEndpointBasics::test_resolve_endpoint_returns_200_on_success PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveResponseStructure::test_resolve_response_has_required_fields PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveResponseStructure::test_resolve_response_blocker_id_is_int PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveResponseStructure::test_resolve_response_status_is_resolved PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolveResponseStructure::test_resolve_response_timestamp_is_rfc3339 PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionPersistence::test_blocker_status_updated_in_database PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionPersistence::test_answer_stored_in_database PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionPersistence::test_resolved_at_timestamp_stored PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionValidation::test_resolve_requires_answer_field PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionValidation::test_resolve_rejects_empty_answer PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionValidation::test_resolve_rejects_whitespace_only_answer PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionValidation::test_resolve_rejects_answer_exceeding_max_length PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionValidation::test_resolve_accepts_answer_at_max_length PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionConflicts::test_duplicate_resolution_returns_409 PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionConflicts::test_duplicate_resolution_preserves_first_answer PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionConflicts::test_conflict_response_includes_blocker_id PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionConflicts::test_conflict_response_includes_error_message PASSED [ 24%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionNotFound::test_nonexistent_blocker_returns_404 PASSED [ 25%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionNotFound::test_404_response_includes_blocker_id PASSED [ 25%]
tests/api/test_blocker_resolution_api.py::TestBlockerResolutionNotFound::test_invalid_blocker_id_returns_422 PASSED [ 25%]
tests/api/test_chat_api.py::TestChatEndpoint::test_send_message_success FAILED [ 25%]
tests/api/test_chat_api.py::TestChatEndpoint::test_send_message_empty_validation PASSED [ 25%]
tests/api/test_chat_api.py::TestChatEndpoint::test_send_message_project_not_found PASSED [ 25%]
tests/api/test_chat_api.py::TestChatEndpoint::test_send_message_agent_not_started FAILED [ 25%]
tests/api/test_chat_api.py::TestChatEndpoint::test_send_message_agent_failure PASSED [ 25%]
tests/api/test_chat_api.py::TestChatHistoryEndpoint::test_get_history_success PASSED [ 25%]
tests/api/test_chat_api.py::TestChatHistoryEndpoint::test_get_history_pagination PASSED [ 25%]
tests/api/test_chat_api.py::TestChatHistoryEndpoint::test_get_history_project_not_found PASSED [ 25%]
tests/api/test_chat_api.py::TestChatHistoryEndpoint::test_get_history_empty PASSED [ 25%]
tests/api/test_chat_api.py::TestChatWebSocketIntegration::test_chat_broadcasts_message FAILED [ 25%]
tests/api/test_chat_api.py::TestChatWebSocketIntegration::test_chat_continues_when_broadcast_fails FAILED [ 25%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_post_discovery_answer_returns_200_with_valid_answer PASSED [ 25%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_post_with_empty_answer_returns_400 PASSED [ 25%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_post_with_answer_exceeding_5000_chars_returns_400 PASSED [ 25%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_post_with_invalid_project_id_returns_404 PASSED [ 25%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_post_when_not_in_discovery_phase_returns_400 PASSED [ 25%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_discovery_not_started_returns_400 PASSED [ 26%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_lead_agent_process_discovery_answer_called_correctly PASSED [ 26%]
tests/api/test_discovery_endpoints.py::TestDiscoveryAnswerEndpoint::test_response_includes_required_fields PASSED [ 26%]
tests/api/test_endpoints_database.py::TestProjectsEndpoint::test_list_projects_empty_database PASSED [ 26%]
tests/api/test_endpoints_database.py::TestProjectsEndpoint::test_list_projects_with_data PASSED [ 26%]
tests/api/test_endpoints_database.py::TestProjectsEndpoint::test_list_projects_returns_all_fields PASSED [ 26%]
tests/api/test_endpoints_database.py::TestProjectStatusEndpoint::test_get_project_status_success PASSED [ 26%]
tests/api/test_endpoints_database.py::TestProjectStatusEndpoint::test_get_project_status_not_found PASSED [ 26%]
tests/api/test_endpoints_database.py::TestProjectStatusEndpoint::test_get_project_status_returns_complete_data PASSED [ 26%]
tests/api/test_endpoints_database.py::TestAgentsEndpoint::test_get_agents_empty_list PASSED [ 26%]
tests/api/test_endpoints_database.py::TestAgentsEndpoint::test_get_agents_with_data PASSED [ 26%]
tests/api/test_endpoints_database.py::TestAgentsEndpoint::test_get_agents_returns_all_fields PASSED [ 26%]
tests/api/test_endpoints_database.py::TestEndpointDatabaseIntegration::test_complete_project_workflow_via_api PASSED [ 26%]
tests/api/test_endpoints_database.py::TestEndpointDatabaseIntegration::test_endpoints_survive_multiple_requests PASSED [ 26%]
tests/api/test_health_endpoint.py::test_health_endpoint_exists PASSED [ 26%]
tests/api/test_health_endpoint.py::test_health_endpoint_returns_json PASSED [ 26%]
tests/api/test_health_endpoint.py::test_health_endpoint_structure PASSED [ 26%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_project_agents_empty PASSED [ 26%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_project_agents_nonexistent_project PASSED [ 26%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_assign_agent_to_project_success PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_assign_agent_nonexistent_project PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_assign_nonexistent_agent PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_assign_agent_already_assigned PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_project_agents_with_assignments PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_project_agents_active_only PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_remove_agent_from_project_success PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_remove_agent_not_assigned PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_update_agent_role_success PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_update_agent_role_not_assigned PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_agent_projects_empty PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_agent_projects_nonexistent_agent PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_agent_projects_with_assignments PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_get_agent_projects_active_only PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_agent_reassignment_after_removal PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_multiple_agents_different_roles PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_agent_assignment_request_validation PASSED [ 27%]
tests/api/test_multi_agent_api.py::TestMultiAgentAPI::test_agent_role_update_request_validation PASSED [ 27%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_success PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_missing_name PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_empty_name PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_invalid_type PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_duplicate_name PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_returns_all_fields PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationAPI::test_create_project_default_type PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationIntegration::test_create_project_persists_to_database PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationIntegration::test_create_multiple_projects PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationIntegration::test_create_project_via_api_then_get_status PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_database_locked_error PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_disk_full_error PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_integrity_error PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_list_projects_database_error PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_update_project_database_error PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_get_project_database_error PASSED [ 28%]
tests/api/test_project_creation_api.py::TestProjectCreationErrorHandling::test_create_project_with_extra_fields PASSED [ 28%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_success PASSED [ 28%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_with_severity_filter PASSED [ 28%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_multiple_severity_filters PASSED [ 29%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_empty_project PASSED [ 29%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_invalid_severity PASSED [ 29%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_nonexistent_project PASSED [ 29%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_findings_structure PASSED [ 29%]
tests/api/test_project_reviews.py::TestProjectCodeReviewsEndpoint::test_get_project_code_reviews_no_blocking_issues PASSED [ 29%]
tests/api/test_projects_api_progress.py::test_list_projects_includes_progress_metrics PASSED [ 29%]
tests/api/test_projects_api_progress.py::test_list_projects_progress_with_no_tasks PASSED [ 29%]
tests/api/test_projects_api_progress.py::test_list_projects_progress_with_all_completed PASSED [ 29%]
tests/api/test_projects_api_progress.py::test_list_projects_progress_multiple_projects PASSED [ 29%]
tests/api/test_workspace_cleanup.py::TestWorkspaceCleanupAPI::test_workspace_cleanup_after_git_clone_failure PASSED [ 29%]
tests/api/test_workspace_cleanup.py::TestWorkspaceCleanupAPI::test_workspace_cleanup_when_manager_cleanup_fails PASSED [ 29%]
tests/api/test_workspace_cleanup.py::TestWorkspaceCleanupAPI::test_no_cleanup_on_successful_creation PASSED [ 29%]
tests/blockers/test_blocker_answer_injection.py::TestBackendWorkerAgentAnswerInjection::test_create_blocker_and_wait_enriches_context_with_answer PASSED [ 29%]
tests/blockers/test_blocker_answer_injection.py::TestBackendWorkerAgentAnswerInjection::test_create_blocker_and_wait_extracts_task_id_from_context PASSED [ 29%]
tests/blockers/test_blocker_answer_injection.py::TestBackendWorkerAgentAnswerInjection::test_create_blocker_and_wait_uses_custom_timeouts PASSED [ 29%]
tests/blockers/test_blocker_answer_injection.py::TestFrontendWorkerAgentAnswerInjection::test_create_blocker_and_wait_enriches_context_with_answer PASSED [ 29%]
tests/blockers/test_blocker_answer_injection.py::TestTestWorkerAgentAnswerInjection::test_create_blocker_and_wait_enriches_context_with_answer PASSED [ 29%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_no_blockers PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_pending_within_threshold PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_pending_beyond_threshold PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_custom_threshold PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_ignores_resolved PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_ignores_already_expired PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockers::test_expire_stale_blockers_multiple_blockers PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockersJob::test_expire_stale_blockers_job_no_blockers PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockersJob::test_expire_stale_blockers_job_with_task_failure PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockersJob::test_expire_stale_blockers_job_with_websocket_broadcast PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockersJob::test_expire_stale_blockers_job_no_task_associated PASSED [ 30%]
tests/blockers/test_blocker_expiration.py::TestExpireStaleBlockersJob::test_expire_stale_blockers_job_task_already_failed PASSED [ 30%]
tests/blockers/test_blocker_expiration_cron.py::TestExpireStaleBlockersCronJob::test_cron_job_no_blockers PASSED [ 30%]
tests/blockers/test_blocker_expiration_cron.py::TestExpireStaleBlockersCronJob::test_cron_job_with_stale_blocker PASSED [ 30%]
tests/blockers/test_blocker_expiration_cron.py::TestExpireStaleBlockersCronJob::test_cron_job_fails_associated_task PASSED [ 30%]
tests/blockers/test_blocker_expiration_cron.py::TestExpireStaleBlockersCronJob::test_cron_job_with_websocket_broadcast PASSED [ 30%]
tests/blockers/test_blocker_expiration_cron.py::TestExpireStaleBlockersCronJob::test_cron_job_handles_blocker_without_task PASSED [ 30%]
tests/blockers/test_blocker_expiration_minimal.py::test_expire_stale_blockers_direct_sql PASSED [ 30%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_no_blockers PASSED [ 30%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_pending_within_threshold PASSED [ 31%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_pending_beyond_threshold PASSED [ 31%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_custom_threshold PASSED [ 31%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_ignores_resolved PASSED [ 31%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_ignores_already_expired PASSED [ 31%]
tests/blockers/test_blocker_expiration_simple.py::TestExpireStaleBlockers::test_expire_stale_blockers_multiple_blockers PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestBackendWorkerAgentBlockerTypeValidation::test_create_blocker_accepts_sync_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestBackendWorkerAgentBlockerTypeValidation::test_create_blocker_accepts_async_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestBackendWorkerAgentBlockerTypeValidation::test_create_blocker_defaults_to_async PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestBackendWorkerAgentBlockerTypeValidation::test_create_blocker_rejects_invalid_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestBackendWorkerAgentBlockerTypeValidation::test_create_blocker_rejects_lowercase_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestFrontendWorkerAgentBlockerTypeValidation::test_create_blocker_accepts_sync_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestFrontendWorkerAgentBlockerTypeValidation::test_create_blocker_rejects_invalid_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestTestWorkerAgentBlockerTypeValidation::test_create_blocker_accepts_sync_type PASSED [ 31%]
tests/blockers/test_blocker_type_validation.py::TestTestWorkerAgentBlockerTypeValidation::test_create_blocker_rejects_invalid_type PASSED [ 31%]
tests/blockers/test_blockers.py::TestCreateBlocker::test_create_blocker_sync PASSED [ 31%]
tests/blockers/test_blockers.py::TestCreateBlocker::test_create_blocker_async PASSED [ 31%]
tests/blockers/test_blockers.py::TestCreateBlocker::test_create_blocker_without_task PASSED [ 31%]
tests/blockers/test_blockers.py::TestCreateBlocker::test_create_blocker_with_long_question PASSED [ 32%]
tests/blockers/test_blockers.py::TestResolveBlocker::test_resolve_blocker_success PASSED [ 32%]
tests/blockers/test_blockers.py::TestResolveBlocker::test_resolve_blocker_not_found PASSED [ 32%]
tests/blockers/test_blockers.py::TestResolveBlocker::test_resolve_blocker_with_long_answer PASSED [ 32%]
tests/blockers/test_blockers.py::TestDuplicateResolution::test_resolve_blocker_twice PASSED [ 32%]
tests/blockers/test_blockers.py::TestDuplicateResolution::test_concurrent_resolution_race_condition PASSED [ 32%]
tests/blockers/test_blockers.py::TestGetPendingBlocker::test_get_pending_blocker_exists PASSED [ 32%]
tests/blockers/test_blockers.py::TestGetPendingBlocker::test_get_pending_blocker_none PASSED [ 32%]
tests/blockers/test_blockers.py::TestGetPendingBlocker::test_get_pending_blocker_after_resolution PASSED [ 32%]
tests/blockers/test_blockers.py::TestGetPendingBlocker::test_get_pending_blocker_oldest_first PASSED [ 32%]
tests/blockers/test_blockers.py::TestExpireStaleBlockers::test_expire_stale_blockers_none_stale PASSED [ 32%]
tests/blockers/test_blockers.py::TestExpireStaleBlockers::test_expire_stale_blockers_one_stale PASSED [ 32%]
tests/blockers/test_blockers.py::TestExpireStaleBlockers::test_expire_stale_blockers_multiple PASSED [ 32%]
tests/blockers/test_blockers.py::TestExpireStaleBlockers::test_expire_stale_blockers_skips_resolved PASSED [ 32%]
tests/blockers/test_blockers.py::TestBlockerListWithEnrichment::test_list_blockers_empty PASSED [ 32%]
tests/blockers/test_blockers.py::TestBlockerListWithEnrichment::test_list_blockers_with_data PASSED [ 32%]
tests/blockers/test_blockers.py::TestBlockerListWithEnrichment::test_list_blockers_filter_by_status PASSED [ 32%]
tests/blockers/test_wait_for_blocker_resolution.py::TestBackendWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_returns_answer_when_resolved PASSED [ 32%]
tests/blockers/test_wait_for_blocker_resolution.py::TestBackendWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_raises_timeout_when_not_resolved PASSED [ 32%]
tests/blockers/test_wait_for_blocker_resolution.py::TestBackendWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_polls_at_specified_interval PASSED [ 33%]
tests/blockers/test_wait_for_blocker_resolution.py::TestBackendWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_returns_immediately_if_already_resolved PASSED [ 33%]
tests/blockers/test_wait_for_blocker_resolution.py::TestBackendWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_broadcasts_agent_resumed_event PASSED [ 33%]
tests/blockers/test_wait_for_blocker_resolution.py::TestFrontendWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_returns_answer_when_resolved PASSED [ 33%]
tests/blockers/test_wait_for_blocker_resolution.py::TestTestWorkerAgentBlockerResolution::test_wait_for_blocker_resolution_returns_answer_when_resolved PASSED [ 33%]
tests/cli/test_cli_session.py::TestClearSessionCommand::test_clear_session_deletes_file PASSED [ 33%]
tests/cli/test_cli_session.py::TestClearSessionCommand::test_clear_session_succeeds_if_file_doesnt_exist PASSED [ 33%]
tests/cli/test_cli_session.py::TestClearSessionCommand::test_clear_session_uses_current_directory_if_no_arg PASSED [ 33%]
tests/cli/test_cli_session.py::TestClearSessionCommand::test_clear_session_handles_permission_error PASSED [ 33%]
tests/cli/test_cli_session.py::TestClearSessionCommand::test_clear_session_handles_invalid_project_path PASSED [ 33%]
tests/cli/test_cli_session.py::TestSessionCancellation::test_session_start_handles_keyboard_interrupt PASSED [ 33%]
tests/cli/test_cli_session.py::TestSessionCancellation::test_session_restoration_prompt_structure PASSED [ 33%]
tests/cli/test_cli_session.py::TestSessionCommandIntegration::test_clear_and_restart_workflow PASSED [ 33%]
tests/cli/test_cli_session.py::TestSessionCommandIntegration::test_multiple_clear_commands_idempotent PASSED [ 33%]
tests/cli/test_cli_session.py::TestSessionFilePermissions::test_clear_session_with_readonly_file PASSED [ 33%]
tests/cli/test_cli_session.py::TestSessionFilePermissions::test_clear_session_with_readonly_directory PASSED [ 33%]
tests/cli/test_serve_command.py::TestServeBasicFunctionality::test_serve_default_port PASSED [ 33%]
tests/cli/test_serve_command.py::TestServeBasicFunctionality::test_serve_keyboard_interrupt PASSED [ 33%]
tests/cli/test_serve_command.py::TestServeCustomPort::test_serve_custom_port PASSED [ 34%]
tests/cli/test_serve_command.py::TestServeCustomPort::test_serve_port_validation PASSED [ 34%]
tests/cli/test_serve_command.py::TestServeCustomPort::test_serve_port_in_use PASSED [ 34%]
tests/cli/test_serve_command.py::TestServeCustomPort::test_serve_subprocess_failure PASSED [ 34%]
tests/cli/test_serve_command.py::TestServeBrowserOpening::test_serve_browser_opens PASSED [ 34%]
tests/cli/test_serve_command.py::TestServeBrowserOpening::test_serve_no_browser PASSED [ 34%]
tests/cli/test_serve_command.py::TestServeReloadFlag::test_serve_reload_flag PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_default_values PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_cors_origins_parsing PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_log_level_validation PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_port_validation PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_sprint_1_validation_success PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_sprint_1_validation_failure PASSED [ 34%]
tests/config/test_config.py::TestGlobalConfig::test_ensure_directories PASSED [ 34%]
tests/config/test_config.py::TestConfig::test_load_environment PASSED [ 34%]
tests/config/test_config.py::TestConfig::test_config_initialization PASSED [ 34%]
tests/config/test_config.py::TestConfig::test_validate_for_sprint PASSED [ 34%]
tests/config/test_config.py::TestConfig::test_validate_for_sprint_missing_key PASSED [ 34%]
tests/config/test_config.py::TestEnvironmentLoading::test_load_from_env_file PASSED [ 34%]
tests/config/test_config.py::TestEnvironmentLoading::test_env_override PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_returns_string PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_hot_threshold PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_warm_threshold PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_hot_range PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_warm_range PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_cold_range PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_boundary_precision PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_edge_cases PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_defensive_bounds PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_consistency PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierUnit::test_assign_tier_monotonic_ordering PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierWithCalculatedScores::test_new_task_gets_hot_tier PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierWithCalculatedScores::test_aged_task_gets_warm_tier PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierWithCalculatedScores::test_very_old_item_gets_cold_tier PASSED [ 35%]
tests/context/test_assign_tier_unit.py::TestAssignTierWithCalculatedScores::test_frequently_accessed_old_item_stays_warm PASSED [ 35%]
tests/context/test_checkpoint_restore.py::TestCheckpointRestore::test_create_checkpoint_with_data PASSED [ 35%]
tests/context/test_checkpoint_restore.py::TestCheckpointRestore::test_list_checkpoints_for_agent PASSED [ 35%]
tests/context/test_checkpoint_restore.py::TestCheckpointRestore::test_checkpoint_includes_metrics PASSED [ 36%]
tests/context/test_checkpoint_restore.py::TestCheckpointRestore::test_list_checkpoints_for_nonexistent_agent PASSED [ 36%]
tests/context/test_checkpoint_restore.py::TestCheckpointRestore::test_get_nonexistent_checkpoint PASSED [ 36%]
tests/context/test_context_manager.py::TestContextManager::test_recalculate_scores_updates_all_items PASSED [ 36%]
tests/context/test_context_manager.py::TestContextManager::test_recalculate_scores_returns_count PASSED [ 36%]
tests/context/test_context_manager.py::TestContextManager::test_recalculate_scores_with_empty_agent PASSED [ 36%]
tests/context/test_context_manager.py::TestContextManager::test_recalculate_scores_only_affects_target_agent PASSED [ 36%]
tests/context/test_context_manager.py::TestContextManager::test_context_manager_initialization PASSED [ 36%]
tests/context/test_context_stats.py::TestContextStats::test_get_context_stats_for_agent PASSED [ 36%]
tests/context/test_context_stats.py::TestContextStats::test_context_stats_calculates_tokens PASSED [ 36%]
tests/context/test_context_stats.py::TestContextStats::test_context_stats_for_agent_with_no_items PASSED [ 36%]
tests/context/test_flash_save.py::TestFlashSave::test_flash_save_creates_checkpoint PASSED [ 36%]
tests/context/test_flash_save.py::TestFlashSave::test_flash_save_archives_cold_items PASSED [ 36%]
tests/context/test_flash_save.py::TestFlashSave::test_flash_save_retains_hot_items PASSED [ 36%]
tests/context/test_flash_save.py::TestFlashSave::test_flash_save_calculates_reduction PASSED [ 36%]
tests/context/test_flash_save.py::TestFlashSave::test_flash_save_below_threshold_fails PASSED [ 36%]
tests/context/test_importance_scoring.py::TestImportanceScoring::test_calculate_importance_for_new_task PASSED [ 36%]
tests/context/test_importance_scoring.py::TestImportanceScoring::test_calculate_importance_with_age_decay PASSED [ 36%]
tests/context/test_importance_scoring.py::TestImportanceScoring::test_calculate_importance_with_access_boost PASSED [ 36%]
tests/context/test_importance_scoring.py::TestImportanceScoring::test_importance_type_weights PASSED [ 37%]
tests/context/test_importance_scoring.py::TestImportanceScoring::test_importance_score_clamped_to_range PASSED [ 37%]
tests/context/test_importance_scoring.py::TestImportanceScoring::test_importance_formula_components PASSED [ 37%]
tests/context/test_importance_scoring.py::TestAgeDecay::test_exponential_decay_over_time PASSED [ 37%]
tests/context/test_importance_scoring.py::TestAgeDecay::test_zero_age_gives_max_decay PASSED [ 37%]
tests/context/test_importance_scoring.py::TestAgeDecay::test_old_items_approach_zero PASSED [ 37%]
tests/context/test_importance_scoring.py::TestAccessBoost::test_access_boost_logarithmic PASSED [ 37%]
tests/context/test_importance_scoring.py::TestAccessBoost::test_access_boost_capped_at_one PASSED [ 37%]
tests/context/test_importance_scoring.py::TestAccessBoost::test_type_weights_constant PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_exponential_decay_over_time PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_zero_age_gives_max_decay PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_old_items_approach_zero PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_decay_decreases_monotonically PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_half_life_approximately_1_4_days PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_decay_with_fractional_days PASSED [ 37%]
tests/context/test_score_decay.py::TestScoreDecay::test_decay_never_exceeds_one PASSED [ 37%]
tests/context/test_tier_assignment.py::TestTierAssignment::test_assign_tier_hot_for_high_score PASSED [ 37%]
tests/context/test_tier_assignment.py::TestTierAssignment::test_assign_tier_warm_for_medium_score PASSED [ 37%]
tests/context/test_tier_assignment.py::TestTierAssignment::test_assign_tier_cold_for_low_score PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierAssignment::test_tier_boundaries PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierAssignment::test_tier_reassignment_on_score_change PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierBoundaryEdgeCases::test_score_exactly_one PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierBoundaryEdgeCases::test_score_exactly_zero PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierBoundaryEdgeCases::test_score_just_above_hot_threshold PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierBoundaryEdgeCases::test_score_just_below_warm_threshold PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierBoundaryEdgeCases::test_invalid_score_below_zero PASSED [ 38%]
tests/context/test_tier_assignment.py::TestTierBoundaryEdgeCases::test_invalid_score_above_one PASSED [ 38%]
tests/context/test_tier_filtering.py::TestTierFiltering::test_filter_by_hot_tier PASSED [ 38%]
tests/context/test_tier_filtering.py::TestTierFiltering::test_filter_by_warm_tier PASSED [ 38%]
tests/context/test_tier_filtering.py::TestTierFiltering::test_filter_by_cold_tier PASSED [ 38%]
tests/context/test_tier_filtering.py::TestTierFiltering::test_tier_none_returns_all_items PASSED [ 38%]
tests/context/test_tier_filtering.py::TestTierFiltering::test_empty_tier_filter PASSED [ 38%]
tests/context/test_token_counting.py::TestTokenCounting::test_count_tokens_single_item PASSED [ 38%]
tests/context/test_token_counting.py::TestTokenCounting::test_count_tokens_batch PASSED [ 38%]
tests/context/test_token_counting.py::TestTokenCounting::test_token_count_caching PASSED [ 38%]
tests/context/test_token_counting.py::TestTokenCounting::test_count_context_tokens_for_agent PASSED [ 38%]
tests/context/test_token_counting.py::TestTokenCounting::test_count_context_tokens_with_empty_list PASSED [ 38%]
tests/context/test_token_counting.py::TestTokenCounting::test_count_context_tokens_with_large_content PASSED [ 39%]
tests/core/test_port_utils.py::TestIsPortAvailable::test_port_available PASSED [ 39%]
tests/core/test_port_utils.py::TestIsPortAvailable::test_port_unavailable PASSED [ 39%]
tests/core/test_port_utils.py::TestCheckPortAvailability::test_privileged_port_rejected PASSED [ 39%]
tests/core/test_port_utils.py::TestCheckPortAvailability::test_available_port_returns_true PASSED [ 39%]
tests/core/test_port_utils.py::TestCheckPortAvailability::test_port_in_use_returns_helpful_message PASSED [ 39%]
tests/core/test_port_utils.py::TestCheckPortAvailability::test_other_os_error_returns_error_message PASSED [ 39%]
tests/core/test_port_utils.py::TestValidatePortRange::test_valid_port_returns_true PASSED [ 39%]
tests/core/test_port_utils.py::TestValidatePortRange::test_privileged_port_rejected PASSED [ 39%]
tests/core/test_port_utils.py::TestValidatePortRange::test_port_above_max_rejected PASSED [ 39%]
tests/deployment/test_deployer.py::TestDeployerInitialization::test_init_with_valid_paths PASSED [ 39%]
tests/deployment/test_deployer.py::TestDeployerInitialization::test_init_stores_db_reference PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_runs_script PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_captures_output PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_handles_script_failure PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_missing_script PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_default_environment PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_measures_duration PASSED [ 39%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_with_production_environment PASSED [ 40%]
tests/deployment/test_deployer.py::TestTriggerDeployment::test_trigger_deployment_returns_deployment_id PASSED [ 40%]
tests/deployment/test_deployer.py::TestDeploymentDatabaseTracking::test_deployment_records_in_database_if_table_exists PASSED [ 40%]
tests/deployment/test_deployer.py::TestDeploymentDatabaseTracking::test_deployment_graceful_without_deployments_table PASSED [ 40%]
tests/deployment/test_deployer.py::TestDeploymentEdgeCases::test_deployment_with_empty_commit_hash PASSED [ 40%]
tests/deployment/test_deployer.py::TestDeploymentEdgeCases::test_deployment_with_long_output PASSED [ 40%]
tests/deployment/test_deployer.py::TestDeploymentEdgeCases::test_deployment_with_stderr_output PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestAPIContracts::test_projects_endpoint_contract PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestAPIContracts::test_project_status_endpoint_contract PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestAPIContracts::test_projects_endpoint_empty_database PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestAPIContracts::test_project_progress_calculation_correctness PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestEnvironmentConfiguration::test_cors_allowed_origins_configurable PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestEnvironmentConfiguration::test_next_public_api_url_required PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestEnvironmentConfiguration::test_backend_port_configuration PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestDataIntegrity::test_task_status_values PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestDataIntegrity::test_progress_calculation_ignores_non_completed_statuses PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestEdgeCases::test_project_with_null_fields PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestEdgeCases::test_large_project_performance PASSED [ 40%]
tests/deployment/test_deployment_contract.py::TestEdgeCases::test_multiple_projects_independent_progress PASSED [ 40%]
tests/discovery/test_discovery_answers.py::TestAnswerCaptureBasics::test_capture_single_answer PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestAnswerCaptureBasics::test_capture_multiple_answers PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestAnswerCaptureBasics::test_update_existing_answer PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestAnswerCaptureBasics::test_empty_answer_text PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestFeatureExtraction::test_extract_comma_separated_features PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestFeatureExtraction::test_extract_features_from_sentence PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestFeatureExtraction::test_extract_features_with_action_verbs PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestFeatureExtraction::test_extract_features_from_multiple_answers PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestUserExtraction::test_extract_simple_users PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestUserExtraction::test_extract_users_with_roles PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestUserExtraction::test_extract_users_from_personas PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestUserExtraction::test_extract_no_users PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestConstraintExtraction::test_extract_technology_constraints PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestConstraintExtraction::test_extract_performance_constraints PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestConstraintExtraction::test_extract_security_constraints PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestConstraintExtraction::test_extract_multiple_constraint_types PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestStructuredDataGeneration::test_get_structured_data_basic PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestStructuredDataGeneration::test_get_structured_data_with_confidence PASSED [ 41%]
tests/discovery/test_discovery_answers.py::TestStructuredDataGeneration::test_structured_data_example_case PASSED [ 42%]
tests/discovery/test_discovery_answers.py::TestStructuredDataGeneration::test_structured_data_empty_capture PASSED [ 42%]
tests/discovery/test_discovery_answers.py::TestStructuredDataGeneration::test_structured_data_preserves_raw_answers PASSED [ 42%]
tests/discovery/test_discovery_answers.py::TestEdgeCases::test_special_characters_in_answers PASSED [ 42%]
tests/discovery/test_discovery_answers.py::TestEdgeCases::test_very_long_answer_text PASSED [ 42%]
tests/discovery/test_discovery_answers.py::TestEdgeCases::test_unicode_characters PASSED [ 42%]
tests/discovery/test_discovery_answers.py::TestEdgeCases::test_case_insensitive_extraction PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryFlowInitialization::test_start_discovery_initializes_discovery_state PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryFlowInitialization::test_start_discovery_asks_first_question PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryFlowInitialization::test_discovery_state_persists_in_database PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryStateTransitions::test_discovery_transitions_from_idle_to_discovering PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryStateTransitions::test_discovery_stays_in_discovering_while_questions_remain PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryStateTransitions::test_discovery_transitions_to_completed_when_all_required_answered PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryAnswerProcessing::test_process_discovery_answer_saves_answer PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryAnswerProcessing::test_process_discovery_answer_asks_next_question PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryAnswerProcessing::test_process_discovery_answer_updates_progress PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryDatabasePersistence::test_discovery_answers_persist_in_database PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryDatabasePersistence::test_discovery_state_reloads_on_agent_restart PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryCompletionDetection::test_get_discovery_status_returns_completion_state PASSED [ 42%]
tests/discovery/test_discovery_integration.py::TestDiscoveryCompletionDetection::test_get_discovery_status_includes_structured_data PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryProgressIndicators::test_get_discovery_status_includes_progress_percentage_at_0_percent PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryProgressIndicators::test_get_discovery_status_includes_progress_percentage_at_60_percent PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryProgressIndicators::test_get_discovery_status_includes_progress_percentage_at_100_percent PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryProgressIndicators::test_get_discovery_status_includes_total_required_count PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryProgressIndicators::test_get_discovery_status_handles_idle_state_progress PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryProgressIndicators::test_get_discovery_status_handles_completed_state_progress PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryEndToEndFlow::test_complete_discovery_flow PASSED [ 43%]
tests/discovery/test_discovery_integration.py::TestDiscoveryEndToEndFlow::test_discovery_flow_with_chat_integration PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestDiscoveryQuestionFrameworkInitialization::test_framework_initializes_with_default_categories PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestDiscoveryQuestionFrameworkInitialization::test_framework_initializes_with_empty_context PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestQuestionGeneration::test_generate_questions_returns_all_categories PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestQuestionGeneration::test_questions_have_required_fields PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestQuestionGeneration::test_problem_category_questions PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestContextAwareQuestionProgression::test_get_next_question_returns_first_required_question PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestContextAwareQuestionProgression::test_get_next_question_skips_answered_questions PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestContextAwareQuestionProgression::test_get_next_question_returns_none_when_all_required_answered PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestContextAwareQuestionProgression::test_get_next_question_with_follow_up_logic PASSED [ 43%]
tests/discovery/test_discovery_questions.py::TestDiscoveryCompletionDetection::test_is_discovery_complete_false_when_no_answers PASSED [ 44%]
tests/discovery/test_discovery_questions.py::TestDiscoveryCompletionDetection::test_is_discovery_complete_false_when_partial_answers PASSED [ 44%]
tests/discovery/test_discovery_questions.py::TestDiscoveryCompletionDetection::test_is_discovery_complete_true_when_all_required_answered PASSED [ 44%]
tests/discovery/test_discovery_questions.py::TestDiscoveryCompletionDetection::test_is_discovery_complete_validates_answer_quality PASSED [ 44%]
tests/discovery/test_discovery_questions.py::TestQuestionOrdering::test_questions_ordered_by_importance_and_category PASSED [ 44%]
tests/discovery/test_discovery_questions.py::TestQuestionOrdering::test_get_next_question_returns_none_when_all_answered PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_project_creation PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_database_operations PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_worker_agent_initialization PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_checkpoint_directory_creation PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_context_flash_save PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_task_status_transitions PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_git_initialization_for_checkpoints PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_metrics_database_schema PASSED [ 44%]
tests/e2e/test_full_workflow.py::test_hello_world_fixture_structure PASSED [ 44%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_detects_language_on_first_run PASSED [ 44%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_parses_pytest_output PASSED [ 44%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_parses_jest_output PASSED [ 44%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_parses_go_test_output PASSED [ 44%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_parses_rust_cargo_output PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_extracts_coverage_from_pytest PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_extracts_coverage_from_jest PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_handles_test_failures PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_detects_skipped_tests PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_calculates_pass_rate PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunner::test_handles_subprocess_errors PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunnerOutputParsing::test_parses_maven_output PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunnerOutputParsing::test_handles_no_tests_found PASSED [ 45%]
tests/enforcement/test_adaptive_test_runner.py::TestAdaptiveTestRunnerOutputParsing::test_combines_stdout_and_stderr PASSED [ 45%]
tests/enforcement/test_evidence_verifier.py::TestEvidenceVerifier::test_verifies_passing_tests_with_coverage PASSED [ 45%]
tests/enforcement/test_evidence_verifier.py::TestEvidenceVerifier::test_rejects_failing_tests PASSED [ 45%]
tests/enforcement/test_evidence_verifier.py::TestEvidenceVerifier::test_rejects_low_coverage PASSED [ 45%]
tests/enforcement/test_evidence_verifier.py::TestEvidenceVerifier::test_rejects_skip_violations PASSED [ 45%]
tests/enforcement/test_evidence_verifier.py::TestEvidenceVerifier::test_generates_report PASSED [ 45%]
tests/enforcement/test_evidence_verifier.py::TestEvidenceVerifier::test_works_with_any_language PASSED [ 45%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_python_with_pyproject_toml PASSED [ 45%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_javascript_with_package_json PASSED [ 45%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_typescript_with_tsconfig PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_go_with_go_mod PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_rust_with_cargo_toml PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_java_maven_with_pom_xml PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_java_gradle_with_build_gradle PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_ruby_with_gemfile PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_detects_csharp_with_csproj PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_returns_unknown_for_unrecognized_project PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetector::test_python_with_pytest_in_pyproject PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetectorConfidence::test_high_confidence_with_multiple_markers PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetectorConfidence::test_lower_confidence_with_few_markers PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetectorSkipPatterns::test_python_skip_patterns_comprehensive PASSED [ 46%]
tests/enforcement/test_language_detector.py::TestLanguageDetectorSkipPatterns::test_javascript_skip_patterns_comprehensive PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetRecord::test_record_creates_history_entry PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetCheck::test_check_detects_coverage_degradation PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetCheck::test_check_detects_pass_rate_degradation PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetCheck::test_check_passes_with_no_degradation PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetStats::test_stats_command_formats_output PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetReset::test_reset_clears_history PASSED [ 46%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetCalculations::test_moving_average_calculation PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetCalculations::test_moving_average_with_fewer_entries PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetCalculations::test_peak_quality_detection PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetPersistence::test_json_persistence PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetPersistence::test_handles_missing_history_file PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetPersistence::test_handles_corrupted_history_file PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetEdgeCases::test_empty_history PASSED [ 47%]
tests/enforcement/test_quality_ratchet.py::TestQualityRatchetEdgeCases::test_single_entry_history PASSED [ 47%]
tests/enforcement/test_quality_tracker_enforcement.py::TestQualityTracker::test_records_quality_metrics PASSED [ 47%]
tests/enforcement/test_quality_tracker_enforcement.py::TestQualityTracker::test_detects_degradation PASSED [ 47%]
tests/enforcement/test_quality_tracker_enforcement.py::TestQualityTracker::test_works_with_any_language PASSED [ 47%]
tests/enforcement/test_quality_tracker_enforcement.py::TestQualityTracker::test_get_stats PASSED [ 47%]
tests/enforcement/test_quality_tracker_enforcement.py::TestQualityTracker::test_reset_clears_history PASSED [ 47%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_detects_simple_skip_decorator PASSED [ 47%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_detects_skipif_decorator PASSED [ 47%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_detects_pytest_mark_skip PASSED [ 47%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_detects_skip_with_no_reason PASSED [ 47%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_allows_skip_with_strong_justification PASSED [ 47%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_detects_nested_decorators PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_handles_non_test_files PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetection::test_performance_on_large_files PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetectorHelpers::test_is_test_file_recognizes_test_patterns PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetectorHelpers::test_check_file_returns_violations PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetectorHelpers::test_format_violation_produces_readable_output PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetectorEdgeCases::test_handles_empty_file PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetectorEdgeCases::test_handles_file_with_only_comments PASSED [ 48%]
tests/enforcement/test_skip_detector.py::TestSkipDetectorEdgeCases::test_detects_multiple_skips_in_one_file PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorPython::test_detects_simple_skip_decorator PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorPython::test_detects_pytest_mark_skip PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorPython::test_detects_unittest_skip PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorPython::test_detects_multiple_skip_decorators PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorJavaScript::test_detects_it_skip PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorJavaScript::test_detects_xit PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorJavaScript::test_detects_describe_skip PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorGo::test_detects_t_skip PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorGo::test_detects_build_ignore_tag PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorRust::test_detects_ignore_attribute PASSED [ 48%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorJava::test_detects_ignore_annotation PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorJava::test_detects_disabled_annotation PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorRuby::test_detects_skip_keyword PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorRuby::test_detects_pending_keyword PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorCSharp::test_detects_ignore_attribute PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorEdgeCases::test_handles_no_skip_patterns PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorEdgeCases::test_handles_syntax_errors_gracefully PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorEdgeCases::test_handles_empty_project PASSED [ 49%]
tests/enforcement/test_skip_pattern_detector.py::TestSkipPatternDetectorEdgeCases::test_handles_missing_files PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitMessageGeneration::test_generate_message_for_feat_task PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitMessageGeneration::test_generate_message_for_fix_task PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitMessageGeneration::test_generate_message_for_test_task PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitMessageGeneration::test_infer_commit_type_from_keywords PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitMessageGeneration::test_generate_message_with_file_list PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitMessageGeneration::test_generate_message_without_description PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitCreation::test_commit_single_file_change PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitCreation::test_commit_multiple_files PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitCreation::test_commit_message_in_git_log PASSED [ 49%]
tests/git/test_git_auto_commit.py::TestCommitCreation::test_commit_on_feature_branch PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestCommitCreation::test_commit_returns_valid_sha PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestChangelogIntegration::test_record_commit_in_changelog PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestChangelogIntegration::test_changelog_entry_structure PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestChangelogIntegration::test_query_changelog_by_task PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestChangelogIntegration::test_query_changelog_by_agent PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestErrorHandling::test_handle_empty_file_list PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestErrorHandling::test_handle_nonexistent_files PASSED [ 50%]
tests/git/test_git_auto_commit.py::TestErrorHandling::test_handle_missing_task_fields PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestGitWorkflowManagerInitialization::test_init_with_valid_repo PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestGitWorkflowManagerInitialization::test_init_with_non_git_directory PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestGitWorkflowManagerInitialization::test_init_with_nonexistent_path PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestCreateFeatureBranch::test_create_feature_branch_basic PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestCreateFeatureBranch::test_create_feature_branch_sanitizes_title PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestCreateFeatureBranch::test_create_feature_branch_long_title_truncated PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestCreateFeatureBranch::test_create_feature_branch_already_exists PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestCreateFeatureBranch::test_create_feature_branch_with_dirty_working_tree PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestCreateFeatureBranch::test_create_feature_branch_stores_in_database PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestMergeToMain::test_merge_to_main_success PASSED [ 50%]
tests/git/test_git_workflow_manager.py::TestMergeToMain::test_merge_to_main_incomplete_tasks PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestMergeToMain::test_merge_to_main_nonexistent_issue PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestMergeToMain::test_merge_to_main_conflict_handling PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestMergeToMain::test_merge_to_main_updates_database PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestIsIssueComplete::test_is_issue_complete_all_tasks_done PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestIsIssueComplete::test_is_issue_complete_with_pending_tasks PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestIsIssueComplete::test_is_issue_complete_no_tasks PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestGetCurrentBranch::test_get_current_branch_main PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestGetCurrentBranch::test_get_current_branch_feature PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestGetCurrentBranch::test_get_current_branch_detached_head PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestCheckoutBranch::test_checkout_branch_success PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestCheckoutBranch::test_checkout_branch_nonexistent PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestCheckoutBranch::test_checkout_branch_with_uncommitted_changes PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestEdgeCases::test_empty_issue_number PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestEdgeCases::test_empty_issue_title PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestEdgeCases::test_whitespace_only_issue_number PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestEdgeCases::test_special_characters_in_issue_number PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestConventionalCommitMessages::test_commit_message_format_feat PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestConventionalCommitMessages::test_commit_message_format_fix PASSED [ 51%]
tests/git/test_git_workflow_manager.py::TestConventionalCommitMessages::test_commit_message_format_test PASSED [ 52%]
tests/git/test_git_workflow_manager.py::TestConventionalCommitMessages::test_commit_message_format_refactor PASSED [ 52%]
tests/git/test_git_workflow_manager.py::TestCommitErrorHandling::test_commit_with_dirty_working_tree_raises_error PASSED [ 52%]
tests/git/test_git_workflow_manager.py::TestCommitErrorHandling::test_commit_failure_logs_warning_non_blocking PASSED [ 52%]
tests/git/test_git_workflow_manager.py::TestDatabaseSHARecording::test_update_task_commit_sha PASSED [ 52%]
tests/git/test_git_workflow_manager.py::TestDatabaseSHARecording::test_get_task_by_commit_full_sha PASSED [ 52%]
tests/git/test_git_workflow_manager.py::TestDatabaseSHARecording::test_get_task_by_commit_short_sha PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_build_index PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_find_symbols_by_name PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_find_symbols_by_type PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_find_symbols_by_language PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_get_file_symbols PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_search_pattern PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_to_dict PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_build_with_file_patterns PASSED [ 52%]
tests/indexing/test_codebase_index.py::TestCodebaseIndex::test_empty_project PASSED [ 52%]
tests/indexing/test_definition_loader.py::TestAgentDefinition::test_valid_definition PASSED [ 52%]
tests/indexing/test_definition_loader.py::TestAgentDefinition::test_missing_name PASSED [ 52%]
tests/indexing/test_definition_loader.py::TestAgentDefinition::test_missing_type PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinition::test_missing_system_prompt PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinition::test_invalid_capabilities_type PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_load_single_definition PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_load_multiple_definitions PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_load_from_custom_subdirectory PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_get_definition PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_get_missing_definition PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_create_agent PASSED [ 53%]
tests/indexing/test_definition_loader.py::TestAgentDefinitionLoader::test_list_available_types PASSED [ 53%]