122 lines
9.8 KiB
JSON
122 lines
9.8 KiB
JSON
{
|
|
"generated_at": "2026-01-02T10:42:18.803450+00:00",
|
|
"rules": {
|
|
"assertion_roulette": [
|
|
"assertion_roulette|tests/infrastructure/observability/test_logging_timing.py|test_decorates_async_function|assertions=4",
|
|
"assertion_roulette|tests/infrastructure/observability/test_logging_timing.py|test_decorates_sync_function|assertions=4",
|
|
"assertion_roulette|tests/infrastructure/observability/test_logging_timing.py|test_includes_context_in_logs|assertions=4",
|
|
"assertion_roulette|tests/infrastructure/observability/test_logging_timing.py|test_logs_error_on_exception|assertions=4",
|
|
"assertion_roulette|tests/infrastructure/observability/test_logging_timing.py|test_logs_start_and_complete_on_success|assertions=4",
|
|
"assertion_roulette|tests/infrastructure/observability/test_logging_transitions.py|test_logs_enum_state_transition|assertions=5"
|
|
],
|
|
"duplicate_test_name": [
|
|
"duplicate_test_name|tests/infrastructure/observability/test_logging_timing.py|test_filters_none_context_values|count=2"
|
|
],
|
|
"feature_envy": [
|
|
"feature_envy|src/noteflow/infrastructure/webhooks/executor.py|WebhookExecutor._create_delivery|ctx=7_vs_self=0",
|
|
"feature_envy|src/noteflow/infrastructure/webhooks/executor.py|WebhookExecutor._create_delivery|result=10_vs_self=0",
|
|
"feature_envy|src/noteflow/infrastructure/webhooks/metrics.py|_MetricsBuffer.compute_stats|m=6_vs_self=2",
|
|
"feature_envy|src/noteflow/infrastructure/webhooks/metrics.py|_MetricsBuffer.compute_stats_by_event|m=7_vs_self=2"
|
|
],
|
|
"god_class": [
|
|
"god_class|src/noteflow/grpc/_mixins/protocols.py|ServicerHost|methods=43",
|
|
"god_class|src/noteflow/grpc/service.py|NoteFlowServicer|lines=543"
|
|
],
|
|
"long_method": [
|
|
"long_method|src/noteflow/grpc/server.py|run_server_with_config|lines=78",
|
|
"long_method|src/noteflow/grpc/server.py|start|lines=76",
|
|
"long_method|src/noteflow/infrastructure/calendar/outlook_adapter.py|list_events|lines=95"
|
|
],
|
|
"long_parameter_list": [
|
|
"long_parameter_list|src/noteflow/grpc/_config.py|from_args|params=12",
|
|
"long_parameter_list|src/noteflow/grpc/server.py|run_server|params=12"
|
|
],
|
|
"long_test": [
|
|
"long_test|tests/infrastructure/asr/test_engine.py|test_transcribe_with_stubbed_model|lines=65",
|
|
"long_test|tests/integration/test_unit_of_work_advanced.py|test_meeting_lifecycle_workflow|lines=53"
|
|
],
|
|
"magic_number_test": [
|
|
"magic_number_test|tests/infrastructure/observability/test_logging_timing.py|test_includes_context_in_logs|value=8080",
|
|
"magic_number_test|tests/infrastructure/observability/test_logging_timing.py|test_includes_context_in_logs|value=8080"
|
|
],
|
|
"module_size_soft": [
|
|
"module_size_soft|src/noteflow/application/services/meeting_service.py|module|lines=522",
|
|
"module_size_soft|src/noteflow/grpc/server.py|module|lines=554",
|
|
"module_size_soft|src/noteflow/grpc/service.py|module|lines=612"
|
|
],
|
|
"raises_without_match": [
|
|
"raises_without_match|tests/infrastructure/observability/test_logging_config.py|test_config_is_frozen|line=64",
|
|
"raises_without_match|tests/infrastructure/observability/test_logging_timing.py|test_logs_warning_on_timeout|line=74",
|
|
"raises_without_match|tests/integration/test_error_handling.py|test_duplicate_job_id_rejected|line=250",
|
|
"raises_without_match|tests/stress/test_audio_integrity.py|test_truncated_header_missing_version|line=72"
|
|
],
|
|
"sleepy_test": [
|
|
"sleepy_test|tests/infrastructure/observability/test_logging_timing.py|test_decorates_async_function|line=130"
|
|
],
|
|
"thin_wrapper": [
|
|
"thin_wrapper|src/noteflow/infrastructure/summarization/cloud_provider.py|get_openai_client|_get_openai_client",
|
|
"thin_wrapper|src/noteflow/infrastructure/webhooks/metrics.py|empty|cls",
|
|
"thin_wrapper|src/noteflow/infrastructure/webhooks/metrics.py|get_stats|compute_stats",
|
|
"thin_wrapper|src/noteflow/infrastructure/webhooks/metrics.py|get_stats_by_event|compute_stats_by_event",
|
|
"thin_wrapper|src/noteflow/application/observability/ports.py|from_metrics|cls",
|
|
"thin_wrapper|src/noteflow/domain/auth/oidc.py|from_dict|cls",
|
|
"thin_wrapper|src/noteflow/domain/triggers/entities.py|detected_app|next",
|
|
"thin_wrapper|src/noteflow/grpc/_client_mixins/converters.py|annotation_type_to_proto|get",
|
|
"thin_wrapper|src/noteflow/grpc/_client_mixins/converters.py|export_format_to_proto|get",
|
|
"thin_wrapper|src/noteflow/grpc/_client_mixins/converters.py|job_status_to_str|get",
|
|
"thin_wrapper|src/noteflow/grpc/_client_mixins/converters.py|proto_to_annotation_info|AnnotationInfo",
|
|
"thin_wrapper|src/noteflow/grpc/_client_mixins/converters.py|proto_to_meeting_info|MeetingInfo",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_domain.py|annotation_to_proto|Annotation",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_domain.py|create_congestion_info|CongestionInfo",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_domain.py|create_vad_update|TranscriptUpdate",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_domain.py|segment_to_proto_update|TranscriptUpdate",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_domain.py|word_to_proto|WordTiming",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_external.py|entity_to_proto|ExtractedEntity",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_external.py|metrics_to_proto|PerformanceMetricsPoint",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_external.py|sync_run_to_proto|SyncRunProto",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_external.py|webhook_config_to_proto|WebhookConfigProto",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_external.py|webhook_delivery_to_proto|WebhookDeliveryProto",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_id_parsing.py|parse_annotation_id|AnnotationId",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_id_parsing.py|parse_meeting_id|MeetingId",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_oidc.py|claim_mapping_to_proto|ClaimMappingProto",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/converters/_oidc.py|proto_to_claim_mapping|ClaimMapping",
|
|
"thin_wrapper|src/noteflow/grpc/_mixins/project/_converters.py|membership_to_proto|ProjectMembershipProto",
|
|
"thin_wrapper|src/noteflow/grpc/service.py|get_stream_state|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/asr/streaming_vad.py|process_chunk|process",
|
|
"thin_wrapper|src/noteflow/infrastructure/auth/oidc_registry.py|get_preset_config|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/auth/oidc_registry.py|get_provider|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/calendar/oauth_manager.py|get_pending_state|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/asr_converters.py|word_timing_to_domain|WordTiming",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/calendar_converters.py|info_to_trigger_event|CalendarEvent",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/calendar_converters.py|orm_to_info|CalendarEventInfo",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/calendar_converters.py|orm_to_trigger_event|CalendarEvent",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/integration_converters.py|orm_to_domain|Integration",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/orm_converters.py|action_item_to_domain|ActionItem",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/orm_converters.py|annotation_to_domain|Annotation",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/orm_converters.py|key_point_to_domain|KeyPoint",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/orm_converters.py|meeting_to_domain|Meeting",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/orm_converters.py|summary_to_domain|Summary",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/orm_converters.py|word_timing_to_domain|DomainWordTiming",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/webhook_converters.py|config_to_domain|WebhookConfig",
|
|
"thin_wrapper|src/noteflow/infrastructure/converters/webhook_converters.py|delivery_to_domain|WebhookDelivery",
|
|
"thin_wrapper|src/noteflow/infrastructure/logging/config.py|get_log_level|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/observability/otel.py|check_otel_available|_check_otel_available",
|
|
"thin_wrapper|src/noteflow/infrastructure/observability/otel.py|start_as_current_span|_NoOpSpanContext",
|
|
"thin_wrapper|src/noteflow/infrastructure/observability/otel.py|start_span|_NoOpSpan",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/database.py|get_async_session_factory|async_sessionmaker",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/core.py|create|insert",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/core.py|delete_by_meeting|clear_summary",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/core.py|get_by_meeting|fetch_segments",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/core.py|get_by_meeting|get_summary",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/integration.py|get_sync_run|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/integration.py|list_all|list",
|
|
"thin_wrapper|src/noteflow/infrastructure/persistence/memory/repositories/webhook.py|get_by_id|get",
|
|
"thin_wrapper|src/noteflow/infrastructure/security/crypto.py|generate_dek|token_bytes",
|
|
"thin_wrapper|src/noteflow/infrastructure/security/keystore.py|has_master_key|exists",
|
|
"thin_wrapper|src/noteflow/infrastructure/triggers/foreground_app.py|meeting_apps|frozenset",
|
|
"thin_wrapper|src/noteflow/infrastructure/triggers/foreground_app.py|suppressed_apps|frozenset"
|
|
]
|
|
},
|
|
"schema_version": 1
|
|
}
|