Skip to content

pytest dedupe audit (tests/)

Регенерация: PYTHONIOENCODING=utf-8 python scripts/audit_pytest_dedupe.py > docs/ru/research/tausik-1.4-pytest-dedupe-2026-05-02.md. Группы упорядочены по убыванию размера. Это отчёт для ревью, не основание для авто-удаления.

164 group(s) of structurally identical test functions (total 480 tests). Review only — do not auto-delete.

Group 1 (sig d999534d6c2db06b, 15 tests)

  • tests/test_hooks.py:37TestBashFirewall.test_normal_command_allowed
  • tests/test_hooks.py:46TestBashFirewall.test_rm_rf_dot_blocked
  • tests/test_hooks.py:50TestBashFirewall.test_drop_table_blocked
  • tests/test_hooks.py:57TestBashFirewall.test_git_reset_hard_blocked
  • tests/test_hooks.py:63TestBashFirewall.test_git_push_force_blocked
  • tests/test_hooks.py:78TestBashFirewall.test_empty_command_allowed
  • tests/test_hooks.py:98TestBashFirewall.test_git_push_short_f_blocked
  • tests/test_hooks.py:137TestBashFirewall.test_git_clean_fd_blocked
  • tests/test_hooks.py:144TestBashFirewall.test_git_checkout_dot_blocked
  • tests/test_hooks.py:190TestGitPushGate.test_git_status_allowed
  • tests/test_hooks.py:194TestGitPushGate.test_git_commit_allowed
  • tests/test_hooks.py:216TestGitPushGate.test_chained_command_blocked
  • tests/test_hooks.py:223TestGitPushGate.test_absolute_path_git_blocked
  • tests/test_hooks.py:285TestAutoFormat.test_nonexistent_file_allowed
  • tests/test_hooks.py:303TestAutoFormat.test_empty_file_path_allowed

Group 2 (sig 514c35b28575e229, 12 tests)

  • tests/test_audit_stale_docs.py:73TestMirrorPartner.test_en_partner
  • tests/test_audit_stale_docs.py:76TestMirrorPartner.test_ru_partner
  • tests/test_rag.py:29TestDetectLanguage.test_python
  • tests/test_rag.py:32TestDetectLanguage.test_typescript
  • tests/test_rag.py:35TestDetectLanguage.test_go
  • tests/test_rag.py:38TestDetectLanguage.test_dockerfile
  • tests/test_rag.py:41TestDetectLanguage.test_makefile
  • tests/test_rag.py:47TestDetectLanguage.test_markdown
  • tests/test_skill_manager.py:71TestRepoNameFromUrl.test_https_url
  • tests/test_skill_manager.py:74TestRepoNameFromUrl.test_url_with_git_suffix
  • tests/test_skill_manager.py:77TestRepoNameFromUrl.test_trailing_slash
  • tests/test_v13_hardening.py:46TestSafeSingleLine.test_empty_string

Group 3 (sig ce0bd5c98f81d28e, 12 tests)

  • tests/test_brain_scrubbing.py:242test_blocklist_all_cyrillic_homoglyphs_blocked
  • tests/test_brain_scrubbing.py:251test_blocklist_zero_width_bypass_blocked
  • tests/test_brain_scrubbing.py:276test_blocklist_double_url_encoded_bypass_blocked
  • tests/test_brain_scrubbing.py:285test_blocklist_html_numeric_entity_bypass_blocked
  • tests/test_brain_scrubbing.py:302test_blocklist_mixed_homoglyph_and_zero_width_blocked
  • tests/test_brain_scrubbing.py:319test_blocklist_greek_lowercase_alpha_blocked
  • tests/test_brain_scrubbing.py:325test_blocklist_cyrillic_lowercase_v_blocked
  • tests/test_brain_scrubbing.py:341test_blocklist_cyrillic_lowercase_k_blocked
  • tests/test_brain_scrubbing.py:350test_blocklist_greek_lowercase_nu_blocked
  • tests/test_brain_scrubbing.py:356test_blocklist_greek_lowercase_rho_blocked
  • tests/test_brain_scrubbing.py:362test_blocklist_combining_marks_stripped
  • tests/test_brain_scrubbing.py:390test_blocklist_case_insensitive_regression

Group 4 (sig 56ef61843572624f, 9 tests)

  • tests/test_brain_scrubbing.py:102test_public_url_with_private_pattern_passes
  • tests/test_brain_scrubbing.py:136test_project_name_case_insensitive
  • tests/test_brain_scrubbing.py:220test_unicode_content_with_russian_project_name_blocked
  • tests/test_brain_scrubbing.py:260test_blocklist_zero_width_joiner_bypass_blocked
  • tests/test_brain_scrubbing.py:268test_blocklist_url_encoded_bypass_blocked
  • tests/test_brain_scrubbing.py:294test_blocklist_html_named_entity_bypass_blocked
  • tests/test_brain_scrubbing.py:311test_blocklist_greek_homoglyph_blocked
  • tests/test_brain_scrubbing.py:331test_blocklist_cyrillic_lowercase_m_blocked
  • tests/test_brain_scrubbing.py:336test_blocklist_cyrillic_lowercase_t_blocked

Group 5 (sig d02edd5159a93b69, 9 tests)

  • tests/test_edge_cases.py:41TestSlugValidation.test_slug_empty
  • tests/test_edge_cases.py:45TestSlugValidation.test_slug_starts_with_dash
  • tests/test_edge_cases.py:49TestSlugValidation.test_slug_uppercase
  • tests/test_edge_cases.py:53TestSlugValidation.test_slug_spaces
  • tests/test_edge_cases.py:57TestSlugValidation.test_slug_unicode
  • tests/test_ide_utils.py:99TestGetIdeConfig.test_unknown_ide_raises
  • tests/test_plan_parser.py:72TestParsePlan.test_no_tasks_raises
  • tests/test_skill_manager.py:333TestUrlValidation.test_ext_rejected
  • tests/test_skill_manager.py:337TestUrlValidation.test_file_rejected

Group 6 (sig ade550098ecb2ada, 9 tests)

  • tests/test_stack_go_rust.py:76TestStackFiltering.test_go_test_skipped_for_python_files
  • tests/test_stack_go_rust.py:90TestStackFiltering.test_cargo_test_skipped_for_python_files
  • tests/test_stack_go_rust.py:97TestStackFiltering.test_cargo_test_runs_for_rust_files
  • tests/test_stack_iac.py:153TestCrossStackFiltering.test_pytest_skipped_on_dockerfile
  • tests/test_stack_iac.py:160TestCrossStackFiltering.test_pytest_skipped_on_terraform
  • tests/test_stack_iac.py:167TestCrossStackFiltering.test_ansible_lint_skipped_on_python
  • tests/test_stack_iac.py:174TestCrossStackFiltering.test_hadolint_runs_for_dockerfile
  • tests/test_stack_iac.py:181TestCrossStackFiltering.test_terraform_validate_runs_for_tf
  • tests/test_stack_iac.py:188TestCrossStackFiltering.test_kubeval_runs_for_k8s_manifest

Group 7 (sig 8e84f639e892d000, 8 tests)

  • tests/test_audit_orphan_files.py:57TestExclusion.test_tests_excluded
  • tests/test_audit_orphan_files.py:60TestExclusion.test_pycache_excluded
  • tests/test_audit_orphan_files.py:63TestExclusion.test_hooks_excluded
  • tests/test_audit_stale_docs.py:59TestExclusion.test_research_excluded
  • tests/test_audit_stale_docs.py:62TestExclusion.test_generated_excluded
  • tests/test_audit_stale_docs.py:65TestExclusion.test_release_notes_excluded
  • tests/test_audit_unused_python.py:59TestExclusionHelpers.test_hooks_glob_excluded
  • tests/test_audit_unused_python.py:62TestExclusionHelpers.test_pycache_excluded

Group 8 (sig c0b9e98470266a43, 8 tests)

  • tests/test_hooks.py:90TestBashFirewall.test_git_push_force_with_lease_blocked
  • tests/test_hooks.py:105TestBashFirewall.test_git_push_force_after_args_blocked
  • tests/test_hooks.py:113TestBashFirewall.test_echo_quoted_git_push_force_allowed
  • tests/test_hooks.py:121TestBashFirewall.test_word_with_git_prefix_allowed
  • tests/test_hooks.py:129TestBashFirewall.test_full_path_git_push_force_blocked
  • tests/test_hooks.py:151TestBashFirewall.test_git_checkout_branch_allowed
  • tests/test_hooks.py:159TestBashFirewall.test_git_with_c_flag_then_push_force_blocked
  • tests/test_hooks.py:171TestBashFirewall.test_git_push_at_line_start_blocked

Group 9 (sig e855e79d38d2620f, 7 tests)

  • tests/test_hooks_common.py:51TestMarkerPresentAnchored.test_marker_inside_fenced_code_block_returns_false
  • tests/test_hooks_common.py:55TestMarkerPresentAnchored.test_marker_inside_multiline_fenced_block_returns_false
  • tests/test_hooks_common.py:76TestMarkerPresentAnchored.test_marker_as_part_of_sentence_returns_false
  • tests/test_hooks_common.py:80TestMarkerPresentAnchored.test_partial_line_match_returns_false
  • tests/test_hooks_common.py:93TestMarkerPresentAnchored.test_u2029_paragraph_separator_does_NOT_trigger_bypass
  • tests/test_hooks_common.py:108TestMarkerPresentAnchored.test_tilde_fence_with_language_tag_does_NOT_trigger_bypass
  • tests/test_hooks_common.py:118TestMarkerPresentAnchored.test_tab_indented_line_does_NOT_trigger_bypass

Group 10 (sig 606db32500eac993, 6 tests)

  • tests/test_audit_orphan_files.py:75TestCollectOrphans.test_imported_module_not_reported
  • tests/test_audit_orphan_files.py:79TestCollectOrphans.test_doc_referenced_standalone_not_reported
  • tests/test_audit_orphan_files.py:84TestCollectOrphans.test_hook_path_excluded_from_scan
  • tests/test_audit_stale_docs.py:88TestCollectStale.test_referenced_doc_not_reported
  • tests/test_audit_stale_docs.py:92TestCollectStale.test_mirror_partner_protected
  • tests/test_audit_stale_docs.py:97TestCollectStale.test_research_excluded

Group 11 (sig 47cd478bb552e9f5, 6 tests)

  • tests/test_brain_fallback.py:28test_classify_auth
  • tests/test_brain_fallback.py:32test_classify_not_found
  • tests/test_brain_fallback.py:36test_classify_rate_limit
  • tests/test_brain_fallback.py:42test_classify_server
  • tests/test_brain_fallback.py:62test_classify_unknown_notion_error
  • tests/test_brain_fallback.py:66test_classify_non_notion_error

Group 12 (sig 0d9c44d32a3f46a8, 6 tests)

  • tests/test_gates.py:206TestGateRunner.test_count_lines_nonexistent
  • tests/test_session_cleanup_check.py:35TestPureHelpers.test_review_count_header_only
  • tests/test_session_cleanup_check.py:42TestPureHelpers.test_review_count_none
  • tests/test_session_cleanup_check.py:45TestPureHelpers.test_session_overrun_below_threshold
  • tests/test_session_cleanup_check.py:48TestPureHelpers.test_session_overrun_at_threshold
  • tests/test_session_cleanup_check.py:51TestPureHelpers.test_session_overrun_no_match

Group 13 (sig 967fa6007ffd52ed, 5 tests)

  • tests/test_bootstrap_generate.py:153TestGenerateAgentsMd.test_header_mentions_agent
  • tests/test_bootstrap_generate.py:183TestGenerateCursorrules.test_header_mentions_cursor
  • tests/test_bootstrap_generate.py:188TestGenerateCursorrules.test_points_to_cursor_subdir
  • tests/test_bootstrap_generate.py:214TestGenerateQwenMd.test_header_mentions_qwen
  • tests/test_bootstrap_generate.py:219TestGenerateQwenMd.test_points_to_qwen_subdir

Group 14 (sig 6cd048592498de44, 5 tests)

  • tests/test_hooks_common.py:46TestMarkerPresentAnchored.test_substring_only_returns_false
  • tests/test_hooks_common.py:86TestMarkerPresentAnchored.test_u2028_line_separator_does_NOT_trigger_bypass
  • tests/test_hooks_common.py:97TestMarkerPresentAnchored.test_u0085_nel_does_NOT_trigger_bypass
  • tests/test_hooks_common.py:102TestMarkerPresentAnchored.test_tilde_fenced_block_does_NOT_trigger_bypass
  • tests/test_hooks_common.py:112TestMarkerPresentAnchored.test_four_space_indented_line_does_NOT_trigger_bypass

Group 15 (sig feb65d2235cbcc5c, 5 tests)

  • tests/test_project_mcp.py:37TestStatus.test_status_empty
  • tests/test_project_mcp.py:155TestSession.test_session_start
  • tests/test_project_mcp.py:175TestSession.test_last_handoff_empty
  • tests/test_project_mcp.py:220TestHierarchy.test_roadmap_empty
  • tests/test_project_mcp.py:286TestMetricsAndEvents.test_unknown_tool

Group 16 (sig 3c79cfd9f2a33890, 5 tests)

  • tests/test_project_mcp.py:75TestTaskCRUD.test_task_list_filter_status
  • tests/test_project_mcp.py:122TestTaskCRUD.test_task_update_no_fields
  • tests/test_project_mcp.py:240TestKnowledge.test_memory_search_empty
  • tests/test_project_mcp.py:255TestKnowledge.test_search
  • tests/test_project_mcp.py:259TestKnowledge.test_search_empty

Group 17 (sig b44bdf8b25683771, 5 tests)

  • tests/test_skill_manager.py:583TestCopySkillFilters.test_skips_claude_plugin
  • tests/test_skill_manager.py:588TestCopySkillFilters.test_skips_hooks
  • tests/test_skill_manager.py:593TestCopySkillFilters.test_skips_pycache
  • tests/test_skill_manager.py:598TestCopySkillFilters.test_skips_claude_md
  • tests/test_skill_manager.py:603TestCopySkillFilters.test_skips_gitmodules

Group 18 (sig e7ab049134bc4f3d, 4 tests)

  • tests/test_audit_unused_python.py:55TestExclusionHelpers.test_module_name
  • tests/test_hooks_common.py:136TestLastUserPromptText.test_missing_file_returns_empty
  • tests/test_rag_edge.py:349TestDetectEdge.test_no_extension
  • tests/test_rag_edge.py:353TestDetectEdge.test_compound_extension

Group 19 (sig dbf7765fd93fc1d0, 4 tests)

  • tests/test_brain_hook_utils.py:84TestIsFresh.test_recent_within_ttl
  • tests/test_brain_hook_utils.py:87TestIsFresh.test_stale_beyond_ttl
  • tests/test_brain_hook_utils.py:90TestIsFresh.test_boundary_exactly_at_ttl
  • tests/test_brain_hook_utils.py:94TestIsFresh.test_zero_ttl_never_fresh

Group 20 (sig b5cc8b90a41a12a0, 4 tests)

  • tests/test_brain_schema.py:304test_unique_notion_page_id
  • tests/test_brain_schema.py:320test_generalizable_check_constraint
  • tests/test_brain_schema.py:336test_confidence_check_constraint
  • tests/test_brain_schema.py:352test_severity_check_constraint

Group 21 (sig 6543bdaf264f06fd, 4 tests)

  • tests/test_brain_scrubbing.py:58test_relative_paths_pass
  • tests/test_brain_scrubbing.py:63test_url_path_not_flagged_as_filesystem
  • tests/test_brain_scrubbing.py:110test_private_url_without_patterns_passes
  • tests/test_brain_scrubbing.py:215test_unicode_content_cyrillic_clean

Group 22 (sig da0ea30742d44e80, 4 tests)

  • tests/test_edge_cases.py:61TestSlugValidation.test_slug_single_char
  • tests/test_edge_cases.py:64TestSlugValidation.test_slug_with_numbers
  • tests/test_skill_manager.py:327TestUrlValidation.test_https_allowed
  • tests/test_skill_manager.py:330TestUrlValidation.test_ssh_allowed

Group 23 (sig dc3a0fe8a945c267, 4 tests)

  • tests/test_edge_cases.py:195TestBoundaryOperations.test_session_end_without_start
  • tests/test_senar.py:312TestSessionDurationEnforcement.test_session_extend_no_session_raises
  • tests/test_senar.py:364TestExplorations.test_exploration_end_no_active
  • tests/test_tausik_service.py:459TestSessions.test_end_no_session

Group 24 (sig d2bac9ba25cba6ea, 4 tests)

  • tests/test_hooks.py:70TestBashFirewall.test_skip_hooks_env
  • tests/test_hooks.py:200TestGitPushGate.test_skip_push_hook_env
  • tests/test_hooks.py:208TestGitPushGate.test_skip_hooks_no_longer_bypasses_push
  • tests/test_hooks.py:295TestAutoFormat.test_skip_hooks_env

Group 25 (sig e3e0d8240eb4ae27, 4 tests)

  • tests/test_model_routing.py:19test_medium_maps_to_sonnet
  • tests/test_model_routing.py:24test_complex_maps_to_opus
  • tests/test_model_routing.py:45test_case_insensitive
  • tests/test_model_routing.py:50test_whitespace_tolerated

Group 26 (sig a0a39b7cb5d9efcf, 4 tests)

  • tests/test_qg0_dimensions.py:34TestDimensionsScore.test_epic_also_counts_as_story_link
  • tests/test_qg0_dimensions.py:39TestDimensionsScore.test_evidence_plan_via_file_reference
  • tests/test_qg0_dimensions.py:44TestDimensionsScore.test_evidence_plan_via_memory_reference
  • tests/test_qg0_dimensions.py:49TestDimensionsScore.test_evidence_plan_vague_ac

Group 27 (sig 200cae476eabd105, 4 tests)

  • tests/test_rag.py:67TestGitignore.test_matches_dir
  • tests/test_rag.py:70TestGitignore.test_matches_nested
  • tests/test_rag_edge.py:316TestGitignoreEdge.test_double_star_pattern
  • tests/test_rag_edge.py:319TestGitignoreEdge.test_trailing_slash_dir

Group 28 (sig 3e83335cb242f138, 4 tests)

  • tests/test_senar.py:423TestChecklistTier.test_tier_simple_lightweight
  • tests/test_senar.py:435TestChecklistTier.test_tier_medium_standard
  • tests/test_senar.py:447TestChecklistTier.test_tier_auth_auto_high
  • tests/test_senar.py:461TestChecklistTier.test_tier_complex_critical

Group 29 (sig 76b6a3fbd3603f87, 4 tests)

  • tests/test_service_verification.py:848TestIsDeclaredConsistentWithGitDiff.test_under_declared_returns_false
  • tests/test_service_verification.py:883TestIsDeclaredConsistentWithGitDiff.test_no_changes_returns_true
  • tests/test_service_verification.py:902TestIsDeclaredConsistentWithGitDiff.test_partial_overlap_with_extra_changed_returns_false
  • tests/test_service_verification.py:916TestIsDeclaredConsistentWithGitDiff.test_backslash_declaration_normalizes_to_match

Group 30 (sig f338a8c86269e456, 4 tests)

  • tests/test_stack_php_js.py:73TestStackFiltering.test_phpunit_skipped_for_python
  • tests/test_stack_php_js.py:79TestStackFiltering.test_phpunit_runs_for_php
  • tests/test_stack_php_js.py:85TestStackFiltering.test_js_test_skipped_for_go
  • tests/test_stack_php_js.py:91TestStackFiltering.test_js_test_runs_for_tsx

Group 31 (sig a492dca6919d327c, 4 tests)

  • tests/test_tausik_backend.py:232TestStories.test_add_to_nonexistent_epic
  • tests/test_tausik_backend.py:302TestTasks.test_add_to_nonexistent_story
  • tests/test_tausik_service.py:62TestHierarchy.test_story_invalid_epic
  • tests/test_tausik_service.py:498TestKnowledge.test_memory_invalid_type

Group 32 (sig 0f24659a87548d29, 3 tests)

  • tests/test_audit_orphan_files.py:66TestExclusion.test_unrelated_path_not_excluded
  • tests/test_audit_stale_docs.py:68TestExclusion.test_unrelated_path_not_excluded
  • tests/test_audit_unused_python.py:65TestExclusionHelpers.test_unrelated_path_kept

Group 33 (sig 41ee8110381925ac, 3 tests)

  • tests/test_audit_stale_docs.py:79TestMirrorPartner.test_no_partner_for_root
  • tests/test_brain_hook_utils.py:56TestParseIsoToEpoch.test_empty_string_returns_none
  • tests/test_rag.py:44TestDetectLanguage.test_unknown

Group 34 (sig 10fe70ad9f4120d0, 3 tests)

  • tests/test_audit_unused_python.py:94TestCollectUnused.test_referenced_kept_clean
  • tests/test_audit_unused_python.py:99TestCollectUnused.test_private_helper_skipped
  • tests/test_audit_unused_python.py:105TestCollectUnused.test_hooks_excluded_by_glob

Group 35 (sig 273758ec2cfbfc22, 3 tests)

  • tests/test_bootstrap_frontmatter.py:64TestValidateFrontmatter.test_valid_context_inline
  • tests/test_bootstrap_frontmatter.py:67TestValidateFrontmatter.test_valid_context_fork
  • tests/test_bootstrap_frontmatter.py:89TestValidateFrontmatter.test_valid_paths

Group 36 (sig eec5395ace6146f2, 3 tests)

  • tests/test_bootstrap_frontmatter.py:70TestValidateFrontmatter.test_invalid_context
  • tests/test_bootstrap_frontmatter.py:79TestValidateFrontmatter.test_invalid_effort
  • tests/test_bootstrap_frontmatter.py:84TestValidateFrontmatter.test_empty_paths_warning

Group 37 (sig 474339df785784d8, 3 tests)

  • tests/test_bootstrap_generate.py:148TestGenerateAgentsMd.test_contains_shared_hard_markers
  • tests/test_bootstrap_generate.py:178TestGenerateCursorrules.test_contains_shared_hard_markers
  • tests/test_bootstrap_generate.py:209TestGenerateQwenMd.test_contains_shared_hard_markers

Group 38 (sig c59d37aca6717a82, 3 tests)

  • tests/test_bootstrap_generate.py:158TestGenerateAgentsMd.test_preserves_existing
  • tests/test_bootstrap_generate.py:193TestGenerateCursorrules.test_preserves_existing
  • tests/test_bootstrap_generate.py:224TestGenerateQwenMd.test_preserves_existing

Group 39 (sig 49593e70f60f71a4, 3 tests)

  • tests/test_brain_classifier.py:71test_src_file_marker_routes_local
  • tests/test_brain_classifier.py:78test_tausik_cmd_marker_routes_local
  • tests/test_brain_classifier.py:85test_slug_marker_routes_local_for_non_web_cache

Group 40 (sig cad2e8bcfd6d62d6, 3 tests)

  • tests/test_brain_mcp_handlers.py:119test_brain_search_empty_query
  • tests/test_brain_mcp_handlers.py:124test_brain_get_missing_id
  • tests/test_brain_mcp_handlers.py:129test_brain_get_missing_category

Group 41 (sig ba4b5ee0a46f6c2b, 3 tests)

  • tests/test_brain_metrics.py:34test_brain_event_record_validates_type
  • tests/test_brain_storage_hardening.py:234TestNfcProjectHash.test_empty_still_raises
  • tests/test_service_stack_ops.py:31TestStackShow.test_unknown_stack_raises_keyerror

Group 42 (sig a78b76d38ee2d278, 3 tests)

  • tests/test_brain_search.py:366test_search_query_with_dash_does_not_crash
  • tests/test_brain_search.py:377test_search_query_with_inner_quotes_does_not_crash
  • tests/test_brain_search.py:388test_search_query_with_colon_does_not_crash

Group 43 (sig a745229e4bc2bf99, 3 tests)

  • tests/test_cq_client.py:33TestEndpointValidation.test_file_scheme_raises
  • tests/test_cq_client.py:37TestEndpointValidation.test_ftp_scheme_raises
  • tests/test_cq_client.py:41TestEndpointValidation.test_empty_scheme_raises

Group 44 (sig c5aba93122ca3aae, 3 tests)

  • tests/test_edge_cases.py:140TestFTS5EdgeCases.test_search_with_parens
  • tests/test_edge_cases.py:144TestFTS5EdgeCases.test_search_with_asterisk
  • tests/test_edge_cases.py:148TestFTS5EdgeCases.test_search_only_special_chars

Group 45 (sig 538d96b88b424ece, 3 tests)

  • tests/test_hooks_common.py:27TestMarkerPresentAnchored.test_exact_line_returns_true
  • tests/test_hooks_common.py:32TestMarkerPresentAnchored.test_line_with_leading_trailing_whitespace
  • tests/test_hooks_common.py:37TestMarkerPresentAnchored.test_case_insensitive

Group 46 (sig 71973bbff4e54098, 3 tests)

  • tests/test_hooks_common.py:42TestMarkerPresentAnchored.test_multiline_marker_on_its_own_line
  • tests/test_hooks_common.py:59TestMarkerPresentAnchored.test_marker_after_closing_fence_returns_true
  • tests/test_hooks_common.py:63TestMarkerPresentAnchored.test_marker_before_opening_fence_returns_true

Group 47 (sig b8fb510eabd7ddb7, 3 tests)

  • tests/test_hooks_common.py:67TestMarkerPresentAnchored.test_empty_text_returns_false
  • tests/test_hooks_common.py:70TestMarkerPresentAnchored.test_empty_marker_returns_false
  • tests/test_hooks_common.py:73TestMarkerPresentAnchored.test_whitespace_only_marker_returns_false

Group 48 (sig ac4fae7a5d559c12, 3 tests)

  • tests/test_ide_utils.py:23TestDetectIde.test_explicit_tausik_ide_env
  • tests/test_ide_utils.py:27TestDetectIde.test_explicit_tausik_ide_windsurf
  • tests/test_ide_utils.py:36TestDetectIde.test_cursor_env_detected

Group 49 (sig 5ff75ebdb79619d7, 3 tests)

  • tests/test_ide_utils.py:61TestDetectIde.test_project_dir_detection_cursor
  • tests/test_ide_utils.py:65TestDetectIde.test_project_dir_detection_windsurf
  • tests/test_ide_utils.py:69TestDetectIde.test_project_dir_detection_codex

Group 50 (sig af1258b542fd52e2, 3 tests)

  • tests/test_project_mcp.py:41TestStatus.test_status_with_tasks
  • tests/test_project_mcp.py:70TestTaskCRUD.test_task_list
  • tests/test_project_mcp.py:265TestMetricsAndEvents.test_metrics

Group 51 (sig 0a27ba37b9eb6b28, 3 tests)

  • tests/test_senar.py:78TestQG0NegativeScenario.test_start_ac_with_negative_passes
  • tests/test_senar.py:89TestQG0NegativeScenario.test_start_ac_with_401_passes
  • tests/test_senar.py:100TestQG0NegativeScenario.test_start_ac_with_russian_negative_passes

Group 52 (sig 854310b833c56d9b, 3 tests)

  • tests/test_senar.py:113TestQG0NegativeScenario.test_start_ac_without_errors_phrase_fails
  • tests/test_senar.py:125TestQG0NegativeScenario.test_start_ac_no_failures_fails
  • tests/test_senar.py:144TestQG0NegativeScenario.test_start_ac_inline_numbered_fails

Group 53 (sig e1a89a5c94634faf, 3 tests)

  • tests/test_service_verification.py:255TestIsSecuritySensitive.test_any_match_triggers
  • tests/test_service_verification.py:259TestIsSecuritySensitive.test_any_basename_match_triggers
  • tests/test_service_verification.py:263TestIsSecuritySensitive.test_any_extension_match_triggers

Group 54 (sig d987a22557bd0432, 3 tests)

  • tests/test_stack_info_cli.py:43TestStackInfo.test_unknown_stack_raises_with_suggestion
  • tests/test_tausik_service.py:47TestHierarchy.test_epic_not_found
  • tests/test_tausik_service.py:205TestTaskLifecycle.test_show_not_found

Group 55 (sig 0d3615c8fbd88974, 3 tests)

  • tests/test_task_done_v2_matcher.py:20test_v1_mcp_name_in_matcher
  • tests/test_task_done_v2_matcher.py:24test_v2_mcp_name_in_matcher
  • tests/test_task_done_v2_matcher.py:28test_v2_bare_name_in_matcher

Group 56 (sig a924073872972d8d, 3 tests)

  • tests/test_task_done_verify_hook.py:72TestBashTaskDoneDetection.test_real_tausik_task_done_matches
  • tests/test_task_done_verify_hook.py:77TestBashTaskDoneDetection.test_echo_mentioning_task_done_does_not_match
  • tests/test_task_done_verify_hook.py:82TestBashTaskDoneDetection.test_grep_for_task_done_does_not_match

Group 57 (sig 41809bc46d2eca5b, 3 tests)

  • tests/test_v131_blind_review.py:40test_task_update_status_active_is_refused
  • tests/test_v131_blind_review.py:47test_task_update_status_blocked_is_refused
  • tests/test_v131_blind_review.py:54test_task_update_status_review_is_refused

Group 58 (sig 1a5c98ff938bc2c1, 2 tests)

  • tests/test_adversarial_review_mode.py:16TestCriticAgentFile.test_critic_mentions_three_weaknesses
  • tests/test_adversarial_review_mode.py:29TestCriticAgentFile.test_critic_says_no_fabrication

Group 59 (sig 01693d7dc7fabc14, 2 tests)

  • tests/test_agent_units.py:117TestTaskSetCallBudget.test_negative_rejected
  • tests/test_agent_units.py:150TestTaskSetCallActual.test_negative_rejected

Group 60 (sig a9316158e0c26585, 2 tests)

  • tests/test_agent_units.py:122TestTaskSetCallBudget.test_unknown_slug_returns_false
  • tests/test_agent_units.py:155TestTaskSetCallActual.test_unknown_slug_returns_false

Group 61 (sig aaf613cfc6ba7490, 2 tests)

  • tests/test_agent_units_cli.py:80TestServiceUpdate.test_update_budget_derives_tier
  • tests/test_med_findings_fix.py:53TestUpdateBudgetWins.test_budget_only_auto_derives

Group 62 (sig 0d610c22debfadb3, 2 tests)

  • tests/test_agent_units_cli.py:203TestCliParser.test_help_lists_call_budget
  • tests/test_agent_units_cli.py:209TestCliParser.test_help_update_lists_call_budget

Group 63 (sig b9966551b37e3121, 2 tests)

  • tests/test_audit_orphan_files.py:71TestCollectOrphans.test_lonely_helper_reported
  • tests/test_audit_stale_docs.py:84TestCollectStale.test_lonely_reported

Group 64 (sig 2fdce8e4ac2b0c9d, 2 tests)

  • tests/test_bootstrap_dryrun.py:19TestBootstrapDryRun.test_dry_run_no_files_created
  • tests/test_bootstrap_dryrun.py:89TestBootstrapDryRun.test_dry_run_all_ides

Group 65 (sig c7782f1404076805, 2 tests)

  • tests/test_bootstrap_generate.py:117TestGenerateClaudeMd.test_special_chars_in_project_name
  • tests/test_bootstrap_generate.py:122TestGenerateClaudeMd.test_empty_project_name

Group 66 (sig ce128425a997d79a, 2 tests)

  • tests/test_bootstrap_generate_mcp.py:57test_skips_brain_when_server_missing
  • tests/test_bootstrap_qwen.py:51test_qwen_skips_brain_when_server_missing

Group 67 (sig 0ed241665854d11e, 2 tests)

  • tests/test_bootstrap_hooks_parity.py:71test_qwen_has_every_claude_hook
  • tests/test_bootstrap_hooks_parity.py:82test_qwen_does_not_invent_hooks

Group 68 (sig 54bf533932b3e573, 2 tests)

  • tests/test_bootstrap_venv.py:24TestCheckVersion.test_nonexistent_binary
  • tests/test_bootstrap_venv.py:28TestCheckVersion.test_invalid_command

Group 69 (sig 1ea41642df27b2e0, 2 tests)

  • tests/test_brain_classifier.py:45test_empty_content_routed_local
  • tests/test_brain_classifier.py:197test_clean_content_routes_brain

Group 70 (sig 91c90e3658e8d23b, 2 tests)

  • tests/test_brain_classifier.py:107test_web_cache_still_blocks_on_abs_path
  • tests/test_brain_classifier.py:129test_decision_category_keeps_slug_signal

Group 71 (sig a7df1f9a8486b467, 2 tests)

  • tests/test_brain_classifier.py:117test_web_cache_still_blocks_on_src_file
  • tests/test_brain_classifier.py:123test_web_cache_still_blocks_on_tausik_cmd

Group 72 (sig 331554bcd0fa298e, 2 tests)

  • tests/test_brain_config.py:207test_compute_project_hash_length_and_charset
  • tests/test_brain_mcp_write.py:140test_content_hash_16_hex_chars

Group 73 (sig 06edb203bddd92d4, 2 tests)

  • tests/test_brain_config.py:224test_compute_project_hash_rejects_empty
  • tests/test_brain_project_registry.py:44test_canonical_name_empty_raises

Group 74 (sig 5e27e7503360be8d, 2 tests)

  • tests/test_brain_hook_utils.py:45TestParseIsoToEpoch.test_offset_form
  • tests/test_brain_hook_utils.py:50TestParseIsoToEpoch.test_naive_assumed_utc

Group 75 (sig 13cad52e1c9aad8e, 2 tests)

  • tests/test_brain_hook_utils.py:103TestIsFresh.test_unparseable_timestamp_is_stale
  • tests/test_brain_hook_utils.py:106TestIsFresh.test_empty_timestamp_is_stale

Group 76 (sig ccec0c2ab1a5b34e, 2 tests)

  • tests/test_brain_hook_utils.py:145TestLookupExactUrl.test_empty_url_returns_none
  • tests/test_vendor.py:81TestLockFile.test_read_missing_returns_none

Group 77 (sig d29c206cf3b87111, 2 tests)

  • tests/test_brain_init.py:67test_db_schema_unknown_raises
  • tests/test_brain_notion_client.py:115test_token_required

Group 78 (sig 426f4ea56bcf2973, 2 tests)

  • tests/test_brain_init.py:620TestCliIOPrompt.test_eof_raises_wizard_error
  • tests/test_brain_init.py:629TestCliIOPrompt.test_keyboard_interrupt_raises_wizard_error

Group 79 (sig 67e43891ad32779e, 2 tests)

  • tests/test_brain_mcp_read.py:475test_format_record_pattern_shows_confidence_badge
  • tests/test_brain_mcp_read.py:548test_format_record_preserves_cyrillic

Group 80 (sig c40c89300dd92ddd, 2 tests)

  • tests/test_brain_mcp_write.py:152test_content_hash_rejects_non_string
  • tests/test_brain_scrubbing.py:204test_non_string_content_raises

Group 81 (sig ccd1ff1187d9c044, 2 tests)

  • tests/test_brain_mcp_write.py:663test_handler_brain_store_pattern_happy
  • tests/test_brain_mcp_write.py:676test_handler_brain_store_gotcha_happy

Group 82 (sig ecb72cd194afb4ba, 2 tests)

  • tests/test_brain_mcp_write.py:695test_store_pattern_taxonomy_strict_requires_kind
  • tests/test_brain_mcp_write.py:769test_store_pattern_scope_strict_requires_key

Group 83 (sig f19de746c8a9d84d, 2 tests)

  • tests/test_brain_mcp_write.py:719test_store_pattern_invalid_taxonomy_even_when_loose
  • tests/test_brain_mcp_write.py:755test_store_pattern_scope_empty_string_blocks

Group 84 (sig cba2abacc28ac852, 2 tests)

  • tests/test_brain_mcp_write.py:747test_format_store_result_taxonomy_blocked
  • tests/test_brain_mcp_write.py:791test_format_store_result_card_schema_blocked

Group 85 (sig b14eba0113a8b638, 2 tests)

  • tests/test_brain_move.py:212TestMoveToBrain.test_invalid_kind
  • tests/test_brain_move.py:216TestMoveToBrain.test_source_not_found

Group 86 (sig 5f4488278f6fd990, 2 tests)

  • tests/test_brain_move.py:329TestMoveToLocal.test_invalid_category
  • tests/test_brain_move.py:335TestMoveToLocal.test_not_found

Group 87 (sig 3167ce3979d3da04, 2 tests)

  • tests/test_brain_notion_client.py:120test_token_must_be_string
  • tests/test_brain_project_registry.py:51test_canonical_name_non_string_raises

Group 88 (sig c879426434a3bd21, 2 tests)

  • tests/test_brain_project_registry.py:56test_load_registry_missing_returns_empty
  • tests/test_brain_project_registry.py:153test_all_project_names_empty

Group 89 (sig f0d36bda3a0b40a3, 2 tests)

  • tests/test_brain_project_registry.py:60test_load_registry_malformed_returns_empty
  • tests/test_brain_project_registry.py:65test_load_registry_non_list_returns_empty

Group 90 (sig b10c97193002f3da, 2 tests)

  • tests/test_brain_scrubbing.py:18test_clean_content_passes
  • tests/test_brain_scrubbing.py:209test_empty_content_passes

Group 91 (sig b12ad7a18636c765, 2 tests)

  • tests/test_brain_scrubbing.py:40test_posix_users_path_blocked
  • tests/test_brain_scrubbing.py:46test_windows_drive_path_blocked

Group 92 (sig 8f7c2f290c549ef1, 2 tests)

  • tests/test_brain_scrubbing.py:93test_private_url_matches_configured_pattern
  • tests/test_brain_scrubbing.py:127test_project_name_exact_substring_blocked

Group 93 (sig b300c4c33b727d3d, 2 tests)

  • tests/test_brain_search.py:187test_sanitize_wraps_in_quotes
  • tests/test_brain_search.py:191test_sanitize_escapes_embedded_quotes

Group 94 (sig 06286b5eeb8e02ec, 2 tests)

  • tests/test_brain_search.py:431test_apply_prefer_stack_ranking_boosts_matching_stack
  • tests/test_brain_search.py:440test_apply_prefer_stack_ranking_respects_stronger_bm25

Group 95 (sig e533b296f9067243, 2 tests)

  • tests/test_brain_search_proactive_hook.py:355test_no_cache_hit_allows_fetch
  • tests/test_brain_search_proactive_hook.py:476test_empty_query_exits_zero

Group 96 (sig 2819a2e08d2b4b66, 2 tests)

  • tests/test_cascade_delete.py:105TestForeignKeyIntegrity.test_task_requires_valid_story
  • tests/test_cascade_delete.py:109TestForeignKeyIntegrity.test_story_requires_valid_epic

Group 97 (sig 85ba2a8cf1b1082f, 2 tests)

  • tests/test_cascade_delete.py:118TestForeignKeyIntegrity.test_task_story_id_references_stories
  • tests/test_cascade_delete.py:127TestForeignKeyIntegrity.test_story_epic_id_references_epics

Group 98 (sig 66496de30d2be460, 2 tests)

  • tests/test_cq_client.py:25TestEndpointValidation.test_http_endpoint_accepted
  • tests/test_cq_client.py:29TestEndpointValidation.test_https_endpoint_accepted

Group 99 (sig ff914fbd7d04c310, 2 tests)

  • tests/test_doc_extract.py:52test_is_available_when_installed
  • tests/test_doc_extract.py:57test_is_available_when_missing

Group 100 (sig ca7d3c690bd6fee1, 2 tests)

  • tests/test_edge_cases.py:72TestLengthValidation.test_title_max_length
  • tests/test_edge_cases.py:79TestLengthValidation.test_content_max

Group 101 (sig 0a96e9c633131254, 2 tests)

  • tests/test_edge_cases.py:75TestLengthValidation.test_title_over_max
  • tests/test_edge_cases.py:82TestLengthValidation.test_content_over_max

Group 102 (sig 23dcaee06e83a34e, 2 tests)

  • tests/test_edge_cases.py:124TestUnicode.test_unicode_search
  • tests/test_tausik_service.py:502TestKnowledge.test_memory_search

Group 103 (sig 966617296a43a592, 2 tests)

  • tests/test_edge_cases.py:190TestBoundaryOperations.test_session_double_start
  • tests/test_tausik_service.py:454TestSessions.test_double_start

Group 104 (sig 9823ffcec84f855e, 2 tests)

  • tests/test_gate_stack_aware.py:72TestGateApplies.test_python_gate_skipped_for_go_files
  • tests/test_gate_stack_aware.py:78TestGateApplies.test_mixed_files_match_any

Group 105 (sig 4ca6ac88e45588f6, 2 tests)

  • tests/test_gates.py:255TestGateRunner.test_format_results_pass
  • tests/test_gates.py:263TestGateRunner.test_format_results_fail

Group 106 (sig 719db6d66b2f3844, 2 tests)

  • tests/test_gates.py:329TestStackGates.test_auto_enable_for_go
  • tests/test_gates.py:337TestStackGates.test_auto_enable_for_rust

Group 107 (sig 0b2e273fc3e3a476, 2 tests)

  • tests/test_gates.py:375TestStackGates.test_react_enables_tsc_and_eslint
  • tests/test_stack_go_rust.py:47TestGateRegistration.test_in_stack_gate_map

Group 108 (sig 7252c7041fbc43e9, 2 tests)

  • tests/test_gates.py:409TestCustomGateValidation.test_shell_operators_without_files_allowed
  • tests/test_gates.py:422TestCustomGateValidation.test_path_prefix_stripped

Group 109 (sig a2602e658380db63, 2 tests)

  • tests/test_gates.py:654TestDefaultGatesHaveFileExtensions.test_ruff_has_py_extension
  • tests/test_gates.py:657TestDefaultGatesHaveFileExtensions.test_mypy_has_py_extension

Group 110 (sig d74497a7bbdc5348, 2 tests)

  • tests/test_gates.py:680TestResolveTestFilesForRelevant.test_basename_match
  • tests/test_gates.py:748TestResolveTestFilesForRelevant.test_windows_backslash_path_normalized

Group 111 (sig 10a8db25a05fedea, 2 tests)

  • tests/test_graph_memory.py:213TestGraphService.test_memory_link_nonexistent_node
  • tests/test_graph_memory.py:218TestGraphService.test_memory_link_self_loop

Group 112 (sig b15f109ae6ef91e2, 2 tests)

  • tests/test_graph_memory.py:243TestGraphService.test_memory_unlink_nonexistent
  • tests/test_tausik_service.py:507TestKnowledge.test_memory_not_found

Group 113 (sig 845452c7cb04a80d, 2 tests)

  • tests/test_hooks.py:41TestBashFirewall.test_rm_rf_root_blocked
  • tests/test_hooks.py:183TestGitPushGate.test_git_push_blocked

Group 114 (sig a910efc91c095945, 2 tests)

  • tests/test_hooks.py:82TestBashFirewall.test_no_stdin_allowed
  • tests/test_hooks.py:291TestAutoFormat.test_no_stdin_allowed

Group 115 (sig a98e74d02eb1ca49, 2 tests)

  • tests/test_hooks_common.py:192TestLastUserPromptText.test_huge_transcript_uses_tail_read
  • tests/test_hooks_common.py:231TestLastUserPromptText.test_partial_first_line_after_seek_dropped

Group 116 (sig 7254a8eb1e1dbffc, 2 tests)

  • tests/test_iac_bootstrap_detection.py:39TestSignatureMatch.test_exact_filename_miss
  • tests/test_iac_bootstrap_detection.py:62TestSignatureMatch.test_glob_no_match

Group 117 (sig f6a957a6ba271b4a, 2 tests)

  • tests/test_iac_bootstrap_detection.py:77TestDetectStacks.test_docker_only
  • tests/test_iac_bootstrap_detection.py:90TestDetectStacks.test_helm_via_chart_yaml

Group 118 (sig 2da4ec9635533a7b, 2 tests)

  • tests/test_iac_bootstrap_detection.py:128TestAutoEnable.test_terraform_auto_enables_terraform_validate
  • tests/test_iac_bootstrap_detection.py:138TestAutoEnable.test_docker_auto_enables_hadolint

Group 119 (sig 57e4cd2d46119414, 2 tests)

  • tests/test_ide_utils.py:51TestDetectIde.test_explicit_overrides_env
  • tests/test_ide_utils.py:56TestDetectIde.test_cursor_wins_over_windsurf

Group 120 (sig 7a2213d48d2f7d32, 2 tests)

  • tests/test_ide_utils.py:85TestGetIdeConfig.test_claude_config
  • tests/test_ide_utils.py:90TestGetIdeConfig.test_cursor_config

Group 121 (sig 70a3c6a98c996733, 2 tests)

  • tests/test_ide_utils.py:111TestPathHelpers.test_get_ide_dir
  • tests/test_ide_utils.py:115TestPathHelpers.test_get_ide_dir_codex

Group 122 (sig 04ecb970db11ef0f, 2 tests)

  • tests/test_interview_skill.py:28test_socratic_framing
  • tests/test_interview_skill.py:33test_stop_condition_present

Group 123 (sig 3074b4f54c833356, 2 tests)

  • tests/test_keyword_detector_hook.py:191TestSettingsGeneration.test_claude_settings_has_stop_hook
  • tests/test_user_prompt_submit_hook.py:152TestSettingsGeneration.test_claude_settings_has_userpromptsubmit

Group 124 (sig 2f9414e0cf418ad9, 2 tests)

  • tests/test_keyword_detector_hook.py:204TestSettingsGeneration.test_qwen_settings_has_stop_hook
  • tests/test_user_prompt_submit_hook.py:167TestSettingsGeneration.test_qwen_settings_has_userpromptsubmit

Group 125 (sig 48382eecc25b48e5, 2 tests)

  • tests/test_mcp_project_server.py:87test_cursor_project_server_chdir_is_in_main
  • tests/test_mcp_project_server.py:117test_project_server_minimal_text_reply_on_exception

Group 126 (sig b1f1e97d2ff30a8a, 2 tests)

  • tests/test_mcp_windows.py:71TestGitHeadReading.test_empty_head_file
  • tests/test_mcp_windows.py:80TestGitHeadReading.test_invalid_short_hash

Group 127 (sig 3668a8b187c27a11, 2 tests)

  • tests/test_mcp_windows.py:99TestSafePath.test_traversal_blocked
  • tests/test_mcp_windows.py:104TestSafePath.test_windows_backslash_traversal

Group 128 (sig 0fe6471230cd2926, 2 tests)

  • tests/test_mcp_windows.py:154TestPathNormalization.test_chunk_file_empty_content
  • tests/test_mcp_windows.py:159TestPathNormalization.test_chunk_file_whitespace_only

Group 129 (sig c5df64759e76ddca, 2 tests)

  • tests/test_memory_block.py:29TestMemoryBlockContent.test_empty_db_returns_empty_string
  • tests/test_memory_compact.py:33TestMemoryCompact.test_empty_db_returns_empty

Group 130 (sig fc43dc97d87d4e8d, 2 tests)

  • tests/test_memory_block.py:176TestSkillsDocumentation.test_start_skill_mentions_memory_block
  • tests/test_memory_block.py:183TestSkillsDocumentation.test_checkpoint_skill_mentions_memory_block

Group 131 (sig 8059a498319b73f9, 2 tests)

  • tests/test_memory_markers.py:100TestEdgeCases.test_empty_text
  • tests/test_memory_markers.py:103TestEdgeCases.test_whitespace_only

Group 132 (sig 498301850c96baef, 2 tests)

  • tests/test_memory_markers.py:135TestTwoSegmentSlugs.test_two_seg_slug_with_src_file_kept
  • tests/test_memory_markers.py:142TestTwoSegmentSlugs.test_two_seg_slug_with_tausik_cmd_kept

Group 133 (sig b347a712dbbdd606, 2 tests)

  • tests/test_memory_posttool_audit_hook.py:280TestSettingsGeneration.test_claude_settings_registers_audit
  • tests/test_memory_pretool_block_hook.py:606TestSettingsGeneration.test_claude_settings_registers_hook

Group 134 (sig e5d602925978438e, 2 tests)

  • tests/test_memory_posttool_audit_hook.py:300TestSettingsGeneration.test_qwen_settings_registers_audit
  • tests/test_memory_pretool_block_hook.py:626TestSettingsGeneration.test_qwen_settings_registers_hook

Group 135 (sig 5332b812b7c77579, 2 tests)

  • tests/test_memory_pretool_block_hook.py:141TestBlocksMemoryWrites.test_blocks_agents_memory
  • tests/test_memory_pretool_block_hook.py:156TestBlocksMemoryWrites.test_blocks_deeply_nested_memory

Group 136 (sig 048d66275a555c03, 2 tests)

  • tests/test_memory_pretool_block_hook.py:267TestGracefulMalformed.test_malformed_json
  • tests/test_memory_pretool_block_hook.py:285TestGracefulMalformed.test_empty_stdin

Group 137 (sig a972d60e23a1b486, 2 tests)

  • tests/test_memory_pretool_block_hook.py:401TestBypassMarker.test_marker_in_last_user_turn_as_string
  • tests/test_memory_pretool_block_hook.py:454TestBypassMarker.test_marker_case_insensitive

Group 138 (sig 6593c7d47f31627a, 2 tests)

  • tests/test_migrations.py:130TestMigrationV1ToV2.test_cascade_delete_works_after_migration
  • tests/test_migrations.py:143TestMigrationV1ToV2.test_story_cascade_deletes_tasks

Group 139 (sig e63f8863aec25daf, 2 tests)

  • tests/test_plan_parser.py:81TestParsePlan.test_untitled_plan
  • tests/test_plan_parser.py:91TestParsePlan.test_no_context

Group 140 (sig 59ec57f501890a72, 2 tests)

  • tests/test_project_mcp.py:116TestTaskCRUD.test_task_update
  • tests/test_project_mcp.py:244TestKnowledge.test_decide

Group 141 (sig ca7c81aa2f675453, 2 tests)

  • tests/test_qg2_gates.py:295TestQG0SecuritySurface.test_qg0_security_surface_warning
  • tests/test_qg2_gates.py:336TestQG0ScopeWarnings.test_qg0_scope_warning

Group 142 (sig f554bd2a55c5bc4d, 2 tests)

  • tests/test_rag_edge.py:35TestSafePath.test_traversal_dotdot
  • tests/test_rag_edge.py:39TestSafePath.test_traversal_encoded

Group 143 (sig 64631c276dbd10f4, 2 tests)

  • tests/test_rag_edge.py:232TestStoreEdgeCases.test_search_empty_db
  • tests/test_tausik_backend.py:388TestTaskLogs.test_list_empty

Group 144 (sig 18274152e8616f38, 2 tests)

  • tests/test_review_high_fixes.py:42TestIacExecutablesWhitelisted.test_user_override_with_path_prefix_passes
  • tests/test_review_high_fixes.py:73TestShellChainBlocked.test_pipe_without_files_still_allowed

Group 145 (sig 32ceb3aa80220ec1, 2 tests)

  • tests/test_senar.py:53TestQG0ContextGate.test_start_with_goal_and_ac_passes
  • tests/test_senar.py:350TestExplorations.test_exploration_start

Group 146 (sig 3ee0bf0d4d92d164, 2 tests)

  • tests/test_senar.py:136TestQG0NegativeScenario.test_start_ac_russian_without_errors_fails
  • tests/test_senar.py:170TestQG0NegativeScenario.test_has_negative_scenario_unit_returns_true_for_real_scenario

Group 147 (sig ae42bee352fe5f8c, 2 tests)

  • tests/test_senar.py:578TestNoKnowledgeRefusal.test_no_knowledge_allowed_for_simple
  • tests/test_senar.py:583TestNoKnowledgeRefusal.test_no_knowledge_allowed_for_medium

Group 148 (sig 8fde57b1a26d2fb7, 2 tests)

  • tests/test_service_knowledge_decide.py:63test_content_with_src_file_marker_routes_local
  • tests/test_service_knowledge_decide.py:84test_clean_content_brain_disabled_falls_back_local

Group 149 (sig 578192dc4b10b8f5, 2 tests)

  • tests/test_service_knowledge_decide.py:70test_content_with_abs_path_marker_routes_local
  • tests/test_service_knowledge_decide.py:230test_whitespace_only_routes_local

Group 150 (sig a8292720cc8062b8, 2 tests)

  • tests/test_service_roles.py:64TestRoleCRUD.test_show_unknown_raises
  • tests/test_service_roles.py:113TestRoleDelete.test_delete_unknown_raises

Group 151 (sig bea13f7f26161a86, 2 tests)

  • tests/test_service_verification.py:301TestRecordAndLookup.test_lookup_misses_on_no_runs
  • tests/test_service_verification.py:424TestRecordAndLookup.test_lookup_empty_slug_returns_none

Group 152 (sig c0f04970a99d6e39, 2 tests)

  • tests/test_service_verification.py:307TestRecordAndLookup.test_lookup_misses_on_files_hash_mismatch
  • tests/test_service_verification.py:322TestRecordAndLookup.test_lookup_misses_on_command_mismatch

Group 153 (sig 017f372ce4900d24, 2 tests)

  • tests/test_service_verification.py:432TestIsCacheAllowed.test_safe_files_allow_cache
  • tests/test_service_verification.py:435TestIsCacheAllowed.test_security_files_disallow_cache

Group 154 (sig 3ab0801772d9da8b, 2 tests)

  • tests/test_session_capacity.py:72TestEnforcement.test_passes_under_budget
  • tests/test_session_capacity.py:90TestEnforcement.test_zero_budget_no_block

Group 155 (sig 62a4545671442ce7, 2 tests)

  • tests/test_session_cleanup_check.py:24TestPureHelpers.test_no_active_exploration_returns_false
  • tests/test_session_cleanup_check.py:32TestPureHelpers.test_empty_explore_output_returns_false

Group 156 (sig f2ea870be28a0bb3, 2 tests)

  • tests/test_skills_maturity.py:60TestRoleProfiles.test_role_has_required_sections
  • tests/test_skills_maturity.py:68TestRoleProfiles.test_role_has_skill_modifiers

Group 157 (sig 93fdbc885088b805, 2 tests)

  • tests/test_skills_maturity.py:317TestBootstrapRolesStacks.test_copy_roles_function_exists
  • tests/test_skills_maturity.py:323TestBootstrapRolesStacks.test_copy_stacks_function_exists

Group 158 (sig f214a0ee70038f10, 2 tests)

  • tests/test_stack_go_rust.py:58TestStackInfo.test_go_info_lists_test_runner
  • tests/test_stack_php_js.py:58TestStackInfo.test_php_info

Group 159 (sig d8fd23eb7bc8530c, 2 tests)

  • tests/test_stack_go_rust.py:64TestStackInfo.test_rust_info_lists_test_runner
  • tests/test_stack_php_js.py:64TestStackInfo.test_typescript_info

Group 160 (sig 88a05154e635745c, 2 tests)

  • tests/test_task_done_verify_hook.py:44TestHeuristics.test_missing_test_numbers_fails_that_check
  • tests/test_task_done_verify_hook.py:49TestHeuristics.test_missing_lint_fails_that_check

Group 161 (sig f0c3822546992b3e, 2 tests)

  • tests/test_task_next_model_hint.py:48TestIsTaskNextModelHintEnabled.test_true_when_set
  • tests/test_task_next_model_hint.py:55TestIsTaskNextModelHintEnabled.test_false_when_disabled

Group 162 (sig bc63e6fe991c6ba5, 2 tests)

  • tests/test_tausik_cli.py:353TestRoadmap.test_roadmap_include_done
  • tests/test_tausik_cli.py:409TestExplore.test_explore_current

Group 163 (sig 4b857e60236f18c4, 2 tests)

  • tests/test_tausik_cli.py:374TestDeadEnd.test_dead_end
  • tests/test_tausik_cli.py:403TestExplore.test_explore_start

Group 164 (sig cb2e5e45a267c99c, 2 tests)

  • tests/test_user_prompt_submit_hook.py:89TestIntentDetection.test_explain_prompt_does_not_nudge
  • tests/test_user_prompt_submit_hook.py:95TestIntentDetection.test_empty_prompt_does_not_nudge

Documented false positives

  • Tests that share AST shape because they exercise different inputs but the same code path are not bugs — they are explicit coverage of edge cases. Review each group manually.
  • Identifier names, string literals, and numeric values are erased during normalisation. So two tests with different fixtures and assertions but identical control flow will hash the same.
  • Parametrize candidates: groups whose members differ only in a single literal can usually collapse into one parametrised test.