Tools for managing DNS across multiple providers
This report presents the forensic synthetic code analysis of octodns/octodns, a Python project with 3,742 GitHub stars. SynthScan v2.0 examined 53,447 lines of code across 328 source files, recording 583 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 12.5 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 583 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/record/svcb.py | 95 | def validate_svcparam_mandatory(svcparamvalue, validator_id=None): | CODE |
| LOW | octodns/record/svcb.py | 150 | def _svcparamvalue_list_from_rdata_text(svcparamvalue): | CODE |
| LOW | octodns/record/tlsa.py | 337 | def certificate_association_data(self): | CODE |
| LOW | octodns/record/tlsa.py | 341 | def certificate_association_data(self, value): | CODE |
| LOW | octodns/record/target.py | 52 | def _check_target_trailing_dot(target, _type, key='value', validator_id=None): | CODE |
| LOW | octodns/record/base.py | 26 | def _deprecated_parse_rdata_text(value_type, replacement=None): | CODE |
| LOW | octodns/record/base.py | 53 | def _value_from_rdata_text_uses_legacy(value_type): | CODE |
| LOW | octodns/record/base.py | 84 | def _value_to_rdata_text_uses_legacy(value_type): | CODE |
| LOW | octodns/record/base.py | 717 | def _process_value_validators(value_type, values, _type, disabled=None): | CODE |
| LOW | octodns/processor/templating.py | 74 | def process_source_and_target_zones( | CODE |
| LOW | octodns/processor/base.py | 150 | def process_source_and_target_zones( | CODE |
| LOW | octodns/processor/meta.py | 127 | def process_source_and_target_zones( | CODE |
| LOW | octodns/zone/base.py | 325 | def registered_zone_validators(cls): | CODE |
| LOW | octodns/zone/base.py | 329 | def available_zone_validators(cls): | CODE |
| LOW | tests/test_octodns_zone.py | 112 | def test_duplicate_context_handling(self): | CODE |
| LOW | tests/test_octodns_zone.py | 228 | def test_deprecated__remove_record(self): | CODE |
| LOW | tests/test_octodns_zone.py | 732 | def test_validator_registration_methods(self): | CODE |
| LOW | tests/test_octodns_zone.py | 833 | def test_not_included_records(self): | CODE |
| LOW | tests/test_octodns_zone.py | 995 | def test_disabled_record_validators(self): | CODE |
| LOW | tests/test_octodns_zone.py | 1014 | def test_disabled_zone_validators(self): | CODE |
| LOW | tests/test_octodns_zone.py | 1025 | def test_bridge_record_validator_rejected(self): | CODE |
| LOW | tests/test_octodns_zone.py | 1039 | def test_bridge_zone_validator_rejected(self): | CODE |
| LOW | tests/test_octodns_zone.py | 1052 | def test_copy_propagates_validators_config(self): | CODE |
| LOW | tests/test_octodns_zone.py | 1078 | def test_get_filtered_by_type(self): | CODE |
| LOW | tests/test_octodns_zone.py | 1085 | def test_get_multiple_types_at_same_name(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 186 | def test_plan_existing_zone_inherits_validators_config(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 234 | def test_plan_with_process_desired_zone_kwarg_fallback(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 254 | def test_plan_with_unsupported_type(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 279 | def test_plan_with_processors(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 314 | def test_plan_passes_lenient_to_processors(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 334 | def test_plan_processor_lenient_fallback(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 354 | def process_source_and_target_zones( | CODE |
| LOW | tests/test_octodns_provider_base.py | 376 | def process_source_and_target_zones( | CODE |
| LOW | tests/test_octodns_provider_base.py | 428 | def test_plan_order_of_operations(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 460 | def test_process_desired_zone(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 581 | def test_process_existing_zone(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 617 | def test_safe_min_existing_creates(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 646 | def test_safe_updates_min_existing(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 673 | def test_safe_updates_min_existing_pcent(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 696 | def test_safe_deletes_min_existing(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 723 | def test_safe_deletes_min_existing_pcent(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 746 | def test_safe_updates_min_existing_override(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 774 | def test_safe_deletes_min_existing_override(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 897 | def test_supports_warn_or_except(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 976 | def test_supports_root_ns_false_matches(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 999 | def test_supports_root_ns_false_different(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1023 | def test_supports_root_ns_false_missing(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1042 | def test_supports_root_ns_false_create_zone(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1065 | def test_supports_root_ns_false_create_zone_missing(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1086 | def test_supports_root_ns_true_matches(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1103 | def test_supports_root_ns_true_different(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1126 | def test_supports_root_ns_true_missing(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1147 | def test_supports_root_ns_true_create_zone(self): | CODE |
| LOW | tests/test_octodns_provider_base.py | 1177 | def test_supports_root_ns_true_create_zone_missing(self): | CODE |
| LOW | tests/test_octodns_record_ptr.py | 112 | def test_best_practice_validator(self): | CODE |
| LOW | tests/test_octodns_zone_validators_ns.py | 138 | def test_in_zone_target_no_cname(self): | CODE |
| LOW | tests/test_octodns_zone_validators_ns.py | 149 | def test_in_zone_target_is_cname(self): | CODE |
| LOW | tests/test_octodns_zone_validators_ns.py | 167 | def test_multiple_targets_mixed(self): | CODE |
| LOW | tests/test_octodns_zone_validators_ns.py | 186 | def test_builtin_registration(self): | CODE |
| LOW | tests/test_octodns_zone_validators_ns.py | 190 | def test_builtins_in_strict_set(self): | CODE |
| 397 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | octodns/record/srv.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/mx.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/naptr.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/loc.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/tlsa.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/uri.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/sshfp.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/ds.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/caa.py | 0 | parse one caa rdata presentation string into internal field data. :param str value: caa rdata in dns master-file present | STRING |
| HIGH | octodns/record/srv.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/mx.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/naptr.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/loc.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/tlsa.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/uri.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/sshfp.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/ds.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| HIGH | octodns/record/caa.py | 0 | render this internal caa value as one rdata presentation string. :returns: caa rdata in dns master-file presentation for | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | octodns/schema/config.py | 56 | # ── Providers / Sources ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | octodns/schema/config.py | 97 | # ── Processors ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | octodns/schema/config.py | 218 | # ── Secret handlers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | octodns/schema/config.py | 224 | # ── Plan outputs ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | octodns/schema/config.py | 252 | # ── Schema defs ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_manager.py | 360 | # ── Zone validator manager wiring tests ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 41 | # ── Top-level structure ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 59 | # ── manager: ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 188 | # ── providers: ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 313 | # ── processors: ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 550 | # ── validators: ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 587 | # ── secret_handlers: ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_octodns_config_schema.py | 778 | # ── CLI ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_octodns_config_schema.py | 613 | # ── zones: ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_octodns_config_schema.py | 761 | # ── Round-trip ──────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/yaml.py | 70 | CODE | |
| LOW | octodns/manager.py | 587 | CODE | |
| LOW | octodns/manager.py | 615 | CODE | |
| LOW | octodns/manager.py | 661 | CODE | |
| LOW | octodns/manager.py | 840 | CODE | |
| LOW | octodns/manager.py | 923 | CODE | |
| LOW | octodns/manager.py | 1183 | CODE | |
| LOW | octodns/record/validator.py | 46 | CODE | |
| LOW | octodns/record/validator.py | 79 | CODE | |
| LOW | octodns/record/validator.py | 124 | CODE | |
| LOW | octodns/record/geo.py | 20 | CODE | |
| LOW | octodns/record/srv.py | 198 | CODE | |
| LOW | octodns/record/mx.py | 78 | CODE | |
| LOW | octodns/record/naptr.py | 97 | CODE | |
| LOW | octodns/record/svcb.py | 226 | CODE | |
| LOW | octodns/record/svcb.py | 324 | CODE | |
| LOW | octodns/record/loc.py | 26 | CODE | |
| LOW | octodns/record/chunked.py | 75 | CODE | |
| LOW | octodns/record/tlsa.py | 128 | CODE | |
| LOW | octodns/record/dynamic.py | 254 | CODE | |
| LOW | octodns/record/dynamic.py | 384 | CODE | |
| LOW | octodns/record/uri.py | 107 | CODE | |
| LOW | octodns/record/ip.py | 17 | CODE | |
| LOW | octodns/record/sshfp.py | 32 | CODE | |
| LOW | octodns/record/sshfp.py | 123 | CODE | |
| LOW | octodns/record/ds.py | 169 | CODE | |
| LOW | octodns/processor/filter.py | 491 | CODE | |
| LOW | octodns/processor/restrict.py | 62 | CODE | |
| LOW | octodns/processor/trailing_dots.py | 24 | CODE | |
| LOW | octodns/processor/arpa.py | 41 | CODE | |
| LOW | octodns/source/tinydns.py | 389 | CODE | |
| LOW | octodns/zone/mail.py | 360 | CODE | |
| LOW | octodns/zone/mail.py | 502 | CODE | |
| LOW | octodns/zone/mail.py | 537 | CODE | |
| LOW | octodns/zone/srv.py | 16 | CODE | |
| LOW | octodns/zone/srv.py | 44 | CODE | |
| LOW | octodns/zone/cname.py | 15 | CODE | |
| LOW | octodns/zone/cname.py | 101 | CODE | |
| LOW | octodns/zone/cname.py | 144 | CODE | |
| LOW | octodns/zone/ns.py | 25 | CODE | |
| LOW | octodns/zone/ns.py | 56 | CODE | |
| LOW | octodns/zone/base.py | 466 | CODE | |
| LOW | octodns/zone/base.py | 582 | CODE | |
| LOW | octodns/provider/plan.py | 259 | CODE | |
| LOW | octodns/provider/plan.py | 325 | CODE | |
| LOW | octodns/provider/yaml.py | 346 | CODE | |
| LOW | octodns/provider/base.py | 120 | CODE | |
| LOW | octodns/cmds/report.py | 50 | CODE | |
| LOW | tests/test_octodns_record.py | 220 | CODE | |
| LOW | tests/test_octodns_manager.py | 566 | CODE | |
| LOW | tests/test_octodns_manager.py | 591 | CODE | |
| LOW | tests/test_octodns_manager.py | 616 | CODE | |
| LOW | tests/test_octodns_manager.py | 639 | CODE | |
| LOW | tests/test_octodns_record_chunked.py | 155 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/source/tinydns.py | 409 | # just use the default below | COMMENT |
| MEDIUM⚡ | tests/test_octodns_zone_validators_caa.py | 25 | """Tests for the comprehensive CAA best-practice validator.""" | STRING |
| MEDIUM | …cs/examples/migrating-to-octodns/populate/octodns.yaml | 21 | # meet octoDNS's best practices so that we can show | COMMENT |
| MEDIUM | …les/migrating-to-octodns/populate/my-dumpable.com.yaml | 32 | # recommended best practices. | COMMENT |
| MEDIUM | docs/examples/basic/config/my-domain.com.yaml | 48 | # case where you need to omit the `.`, or other enforced best practices, see | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/processor/__init__.py | 1 | # | COMMENT |
| LOW | octodns/processor/meta.py | 41 | COMMENT | |
| LOW | octodns/source/__init__.py | 1 | # | COMMENT |
| LOW | octodns/provider/yaml.py | 21 | # Whether or not to enforce sorting order when loading yaml | COMMENT |
| LOW | octodns/provider/yaml.py | 41 | split_extension: null | COMMENT |
| LOW | octodns/cmds/__init__.py | 1 | # | COMMENT |
| LOW | octodns/schema/zone.py | 21 | from ..record.dynamic import _DynamicMixin | COMMENT |
| LOW | octodns/secret/__init__.py | 1 | # | COMMENT |
| LOW | docs/examples/basic/config/my-domain.com.yaml | 1 | --- | COMMENT |
| LOW | docs/examples/basic/config/my-domain.com.yaml | 41 | # We want www and the APEX to return the same values for A/AAAA queries. We | COMMENT |
| LOW | docs/examples/basic/config/octodns.yaml | 41 | # other here and include them in the targets list down below. See the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | octodns/record/geo_data.py | 4 | # This file is generated using | COMMENT |
| MEDIUM | octodns/zone/base.py | 117 | # Create a shallow copy | STRING |
| MEDIUM | tests/test_octodns_manager.py | 916 | # Create an empty unit.test zone config | COMMENT |
| MEDIUM | tests/test_octodns_provider_yaml.py | 246 | # Create a provider with ignore_missing_zones disabled (default) | STRING |
| MEDIUM | tests/test_octodns_provider_yaml.py | 259 | # Create a provider with ignore_missing_zones enabled | STRING |
| MEDIUM | tests/test_octodns_provider_yaml.py | 280 | # Create a second directory without the zone file | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_octodns_record_txt.py | 76 | '"Lorem ipsum dolor sit amet, consectetur adipiscing ' | CODE |
| LOW | tests/test_octodns_record_txt.py | 76 | '"Lorem ipsum dolor sit amet, consectetur adipiscing ' | CODE |
| LOW | tests/test_octodns_record_txt.py | 87 | 'Lorem ipsum dolor sit amet, consectetur adipiscing ' | CODE |
| LOW | tests/test_octodns_record_txt.py | 87 | 'Lorem ipsum dolor sit amet, consectetur adipiscing ' | CODE |
| LOW | tests/test_octodns_record_txt.py | 118 | '"Lorem ipsum dolor sit amet, consectetur ' | CODE |
| LOW | tests/test_octodns_record_txt.py | 118 | '"Lorem ipsum dolor sit amet, consectetur ' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | octodns/provider/yaml.py | 39 | # (optional, default null, "." is the recommended best practice when | STRING |
| HIGH | octodns/provider/yaml.py | 56 | # (optional, default null) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/record/ip.py | 35 | except Exception: | CODE |
| LOW | octodns/cmds/report.py | 136 | except Exception: | CODE |
| MEDIUM | octodns/cmds/report.py | 148 | print(f'Error: No valid resolver specified ({", ".join(servers)})') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/record/dynamic.py | 169 | CODE | |
| LOW | octodns/provider/yaml.py | 196 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/schema/__init__.py | 5 | CODE | |
| LOW | octodns/schema/__init__.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/zone/ns.py | 32 | # Check if address records exist at this target | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | octodns/schema/__init__.py | 8 | __all__ = ['build_config_schema', 'build_zone_schema'] | CODE |