CHANGELOG.md
LICENSE
MANIFEST.in
NOTICE
README.md
pyproject.toml
src/nfr_review/__init__.py
src/nfr_review/arch-report-schema.json
src/nfr_review/arch_diagrams.py
src/nfr_review/arch_discovery.py
src/nfr_review/arch_domain_model.py
src/nfr_review/arch_integrations.py
src/nfr_review/arch_market_comparison.py
src/nfr_review/arch_models.py
src/nfr_review/arch_orchestrator.py
src/nfr_review/arch_recommendations.py
src/nfr_review/arch_report_render.py
src/nfr_review/arch_risk_analysis.py
src/nfr_review/arch_test_coverage.py
src/nfr_review/auditability.py
src/nfr_review/baseline.py
src/nfr_review/cli.py
src/nfr_review/config.py
src/nfr_review/dep_solver.py
src/nfr_review/deps_analysis.py
src/nfr_review/deps_dev_client.py
src/nfr_review/detect.py
src/nfr_review/engine.py
src/nfr_review/issues.py
src/nfr_review/llm_client.py
src/nfr_review/models.py
src/nfr_review/path_filter.py
src/nfr_review/protocols.py
src/nfr_review/py.typed
src/nfr_review/registry.py
src/nfr_review/rule_metadata.py
src/nfr_review/scoring.py
src/nfr_review/suppression.py
src/nfr_review.egg-info/PKG-INFO
src/nfr_review.egg-info/SOURCES.txt
src/nfr_review.egg-info/dependency_links.txt
src/nfr_review.egg-info/entry_points.txt
src/nfr_review.egg-info/requires.txt
src/nfr_review.egg-info/top_level.txt
src/nfr_review/collectors/__init__.py
src/nfr_review/collectors/adr.py
src/nfr_review/collectors/adr_derive.py
src/nfr_review/collectors/apim_policy.py
src/nfr_review/collectors/ast_common.py
src/nfr_review/collectors/ci_artifact.py
src/nfr_review/collectors/cmake.py
src/nfr_review/collectors/cpp_ast.py
src/nfr_review/collectors/csharp_ast.py
src/nfr_review/collectors/csharp_deps.py
src/nfr_review/collectors/dockerfile.py
src/nfr_review/collectors/gatling.py
src/nfr_review/collectors/go_ast.py
src/nfr_review/collectors/go_deps.py
src/nfr_review/collectors/helm.py
src/nfr_review/collectors/istio.py
src/nfr_review/collectors/jacoco_report.py
src/nfr_review/collectors/java_ast.py
src/nfr_review/collectors/java_deps.py
src/nfr_review/collectors/jdepend.py
src/nfr_review/collectors/k8s_manifest.py
src/nfr_review/collectors/nodejs_ast.py
src/nfr_review/collectors/nodejs_deps.py
src/nfr_review/collectors/otel.py
src/nfr_review/collectors/otel_trace.py
src/nfr_review/collectors/proto.py
src/nfr_review/collectors/python_ast.py
src/nfr_review/collectors/python_deps.py
src/nfr_review/collectors/repo_structure.py
src/nfr_review/collectors/service_mesh.py
src/nfr_review/collectors/skaffold.py
src/nfr_review/collectors/spring_config.py
src/nfr_review/collectors/telemetry_config.py
src/nfr_review/collectors/terraform.py
src/nfr_review/collectors/payloads/__init__.py
src/nfr_review/collectors/payloads/adr.py
src/nfr_review/collectors/payloads/adr_derive.py
src/nfr_review/collectors/payloads/apim.py
src/nfr_review/collectors/payloads/build_readiness.py
src/nfr_review/collectors/payloads/ci.py
src/nfr_review/collectors/payloads/ci_automation.py
src/nfr_review/collectors/payloads/cmake.py
src/nfr_review/collectors/payloads/code_debt.py
src/nfr_review/collectors/payloads/community.py
src/nfr_review/collectors/payloads/cpp_ast.py
src/nfr_review/collectors/payloads/csharp_ast.py
src/nfr_review/collectors/payloads/deps.py
src/nfr_review/collectors/payloads/dockerfile.py
src/nfr_review/collectors/payloads/documentation.py
src/nfr_review/collectors/payloads/gatling.py
src/nfr_review/collectors/payloads/go_ast.py
src/nfr_review/collectors/payloads/helm.py
src/nfr_review/collectors/payloads/istio.py
src/nfr_review/collectors/payloads/jacoco.py
src/nfr_review/collectors/payloads/java_ast.py
src/nfr_review/collectors/payloads/jdepend.py
src/nfr_review/collectors/payloads/k8s.py
src/nfr_review/collectors/payloads/license_scan.py
src/nfr_review/collectors/payloads/nodejs_ast.py
src/nfr_review/collectors/payloads/otel.py
src/nfr_review/collectors/payloads/otel_trace.py
src/nfr_review/collectors/payloads/privacy.py
src/nfr_review/collectors/payloads/proto.py
src/nfr_review/collectors/payloads/python_ast.py
src/nfr_review/collectors/payloads/repo_structure.py
src/nfr_review/collectors/payloads/service_mesh.py
src/nfr_review/collectors/payloads/skaffold.py
src/nfr_review/collectors/payloads/spring.py
src/nfr_review/collectors/payloads/telemetry.py
src/nfr_review/collectors/payloads/terraform.py
src/nfr_review/hygiene/__init__.py
src/nfr_review/hygiene/collectors/__init__.py
src/nfr_review/hygiene/collectors/build_readiness.py
src/nfr_review/hygiene/collectors/ci_automation.py
src/nfr_review/hygiene/collectors/code_debt.py
src/nfr_review/hygiene/collectors/community.py
src/nfr_review/hygiene/collectors/documentation.py
src/nfr_review/hygiene/collectors/license_scan.py
src/nfr_review/hygiene/collectors/privacy.py
src/nfr_review/hygiene/rules/__init__.py
src/nfr_review/hygiene/rules/bld_build_system.py
src/nfr_review/hygiene/rules/bld_code_debt.py
src/nfr_review/hygiene/rules/bld_entry_points.py
src/nfr_review/hygiene/rules/bld_pre_commit.py
src/nfr_review/hygiene/rules/bld_version_strategy.py
src/nfr_review/hygiene/rules/ci_coverage_gate.py
src/nfr_review/hygiene/rules/ci_has_ci.py
src/nfr_review/hygiene/rules/ci_has_lint.py
src/nfr_review/hygiene/rules/ci_has_sast.py
src/nfr_review/hygiene/rules/ci_has_tests.py
src/nfr_review/hygiene/rules/ci_pin_actions.py
src/nfr_review/hygiene/rules/ci_release_publish.py
src/nfr_review/hygiene/rules/com_changelog.py
src/nfr_review/hygiene/rules/com_code_of_conduct.py
src/nfr_review/hygiene/rules/com_codeowners.py
src/nfr_review/hygiene/rules/com_contributing.py
src/nfr_review/hygiene/rules/com_readme.py
src/nfr_review/hygiene/rules/com_security.py
src/nfr_review/hygiene/rules/doc_api_docs.py
src/nfr_review/hygiene/rules/doc_docs_exist.py
src/nfr_review/hygiene/rules/doc_pkg_metadata.py
src/nfr_review/hygiene/rules/lic_copyleft.py
src/nfr_review/hygiene/rules/lic_headers.py
src/nfr_review/hygiene/rules/lic_notice.py
src/nfr_review/hygiene/rules/lic_spdx.py
src/nfr_review/hygiene/rules/prv_internal_refs.py
src/nfr_review/hygiene/rules/prv_pii_patterns.py
src/nfr_review/hygiene/rules/prv_tracking_ids.py
src/nfr_review/output/__init__.py
src/nfr_review/output/_errors.py
src/nfr_review/output/classify.py
src/nfr_review/output/csv.py
src/nfr_review/output/deps_report.py
src/nfr_review/output/diagrams.py
src/nfr_review/output/dot.py
src/nfr_review/output/jdepend_section.py
src/nfr_review/output/jsonl.py
src/nfr_review/output/markdown.py
src/nfr_review/output/pdf.py
src/nfr_review/output/pytest_runner.py
src/nfr_review/output/render.py
src/nfr_review/output/sarif.py
src/nfr_review/output/summarize.py
src/nfr_review/output/summary_models.py
src/nfr_review/output/topology.py
src/nfr_review/rules/__init__.py
src/nfr_review/rules/_cross_language.py
src/nfr_review/rules/adr_drift.py
src/nfr_review/rules/adr_gap.py
src/nfr_review/rules/adr_lifecycle.py
src/nfr_review/rules/apim_auth.py
src/nfr_review/rules/apim_backend_url.py
src/nfr_review/rules/apim_rate_limit.py
src/nfr_review/rules/ast_bare_except.py
src/nfr_review/rules/ast_common.py
src/nfr_review/rules/ast_logging_stdout.py
src/nfr_review/rules/ci_security_scan.py
src/nfr_review/rules/ci_test_stage.py
src/nfr_review/rules/cmake_build_config.py
src/nfr_review/rules/cmake_fetchcontent_pinning.py
src/nfr_review/rules/cmake_minimum_version.py
src/nfr_review/rules/correlation_id.py
src/nfr_review/rules/cpp_clang_format.py
src/nfr_review/rules/cpp_clang_tidy.py
src/nfr_review/rules/cpp_dormant_classes.py
src/nfr_review/rules/cpp_exception_safety.py
src/nfr_review/rules/cpp_include_guards.py
src/nfr_review/rules/cpp_raw_memory.py
src/nfr_review/rules/cpp_sanitizer_ci.py
src/nfr_review/rules/csharp_async_void.py
src/nfr_review/rules/csharp_blocking_async.py
src/nfr_review/rules/csharp_configure_await.py
src/nfr_review/rules/csharp_disposable_no_using.py
src/nfr_review/rules/dep_freshness.py
src/nfr_review/rules/dep_upgrade_path.py
src/nfr_review/rules/dockerfile_base_pinning.py
src/nfr_review/rules/dockerfile_k8s_image_drift.py
src/nfr_review/rules/dockerfile_k8s_user_conflict.py
src/nfr_review/rules/dockerfile_multistage.py
src/nfr_review/rules/dockerfile_secret_leakage.py
src/nfr_review/rules/dockerfile_user_directive.py
src/nfr_review/rules/dormant_classes.py
src/nfr_review/rules/dyn_adr_drift.py
src/nfr_review/rules/dyn_call_sequence.py
src/nfr_review/rules/dyn_correlation_propagation.py
src/nfr_review/rules/dyn_latency_p95.py
src/nfr_review/rules/dyn_method_coverage.py
src/nfr_review/rules/dyn_n_plus_1.py
src/nfr_review/rules/gatling_performance.py
src/nfr_review/rules/go_defer_in_loop.py
src/nfr_review/rules/go_error_ignored.py
src/nfr_review/rules/go_goroutine_leak.py
src/nfr_review/rules/go_http_no_timeout.py
src/nfr_review/rules/health_probe_separation.py
src/nfr_review/rules/helm_chart_metadata.py
src/nfr_review/rules/helm_secret_leakage.py
src/nfr_review/rules/helm_values_validation.py
src/nfr_review/rules/istio_circuit_breaker.py
src/nfr_review/rules/istio_mtls_strict.py
src/nfr_review/rules/istio_traffic_policy.py
src/nfr_review/rules/jacoco_coverage.py
src/nfr_review/rules/jacoco_threshold.py
src/nfr_review/rules/java_exception.py
src/nfr_review/rules/java_health.py
src/nfr_review/rules/java_resilience.py
src/nfr_review/rules/java_thread_pool.py
src/nfr_review/rules/jdepend_cycle.py
src/nfr_review/rules/jdepend_distance.py
src/nfr_review/rules/jdepend_instability.py
src/nfr_review/rules/k8s_network.py
src/nfr_review/rules/k8s_probes.py
src/nfr_review/rules/k8s_resources.py
src/nfr_review/rules/k8s_security.py
src/nfr_review/rules/nodejs_callback_error_ignored.py
src/nfr_review/rules/nodejs_floating_promise.py
src/nfr_review/rules/nodejs_promise_no_catch.py
src/nfr_review/rules/nodejs_sync_fs_api.py
src/nfr_review/rules/otel_exporter.py
src/nfr_review/rules/otel_fault_injection_tests.py
src/nfr_review/rules/otel_file_exporter.py
src/nfr_review/rules/otel_integration_test_coverage.py
src/nfr_review/rules/otel_pipeline.py
src/nfr_review/rules/otel_resource_attrs.py
src/nfr_review/rules/otel_sampling.py
src/nfr_review/rules/otel_test_agent.py
src/nfr_review/rules/otel_test_observability.py
src/nfr_review/rules/otel_w3c_propagation.py
src/nfr_review/rules/patch_arch_graceful.py
src/nfr_review/rules/patch_arch_pdb.py
src/nfr_review/rules/patch_arch_singleton.py
src/nfr_review/rules/patch_arch_strategy.py
src/nfr_review/rules/patch_deps.py
src/nfr_review/rules/patch_forward_migration.py
src/nfr_review/rules/patch_health_probes.py
src/nfr_review/rules/patch_health_startup.py
src/nfr_review/rules/patch_health_termination.py
src/nfr_review/rules/patch_health_trivial_probe.py
src/nfr_review/rules/patch_rollback_ci.py
src/nfr_review/rules/patch_rollback_docs.py
src/nfr_review/rules/patch_scope.py
src/nfr_review/rules/patch_telem.py
src/nfr_review/rules/patch_traffic.py
src/nfr_review/rules/pii_logging.py
src/nfr_review/rules/proto_field_numbering.py
src/nfr_review/rules/proto_method_comments.py
src/nfr_review/rules/proto_service_versioning.py
src/nfr_review/rules/python_async_fire_forget.py
src/nfr_review/rules/python_broad_except_silent.py
src/nfr_review/rules/python_mutable_default.py
src/nfr_review/rules/python_star_import.py
src/nfr_review/rules/sample.py
src/nfr_review/rules/skaffold_build.py
src/nfr_review/rules/spring_actuator.py
src/nfr_review/rules/spring_logging.py
src/nfr_review/rules/spring_profile.py
src/nfr_review/rules/terraform_iam_policy.py
src/nfr_review/rules/terraform_provider_pinning.py
src/nfr_review/rules/terraform_state_backend.py