{
    "version": "2026.09.17-a2894de",
    "generated_at": "2026-09-17T18:03:14+00:00",
    "application": "Districthive Research Labs",
    "root": "application root (paths relative)",
    "commit": null,
    "redaction": {
        "ran": true,
        "emails_redacted": 0,
        "secret_scan": "passed",
        "rules": "inc/code-allowlist.php"
    },
    "tree_sha256": "a2894de5492ffc83982e18a22eb6aae1038ddbf0b348af1d802ce00ae6bbe1bb",
    "files": [
        {
            "path": "README.md",
            "bytes": 1822,
            "sha256": "8c157bc61176c038f91b81d271f352788cd112267000cf22bb1d5bd088aed7e8",
            "lines": 33
        },
        {
            "path": "api.php",
            "bytes": 2029,
            "sha256": "951a77bb8329fbfa2009e20f2cd3893ec96abc336d78dd472babd294ee856a86",
            "lines": 40,
            "functions": {
                "out": [
                    4,
                    40
                ]
            }
        },
        {
            "path": "assets/app.js",
            "bytes": 4037,
            "sha256": "b56d9cacf29ef638bc9344dcabaf2165b172429a8d3f960774fa420e26311656",
            "lines": 65
        },
        {
            "path": "assets/style.css",
            "bytes": 22301,
            "sha256": "06f676d327a4f435250b64112a6866c6a418bdde09f3fdd8ad9eca951ddde779",
            "lines": 200
        },
        {
            "path": "cron/README.md",
            "bytes": 148,
            "sha256": "8e063a214a22e639e0548df806111cec205a6dba8607918a2c84a04065311e99",
            "lines": 4
        },
        {
            "path": "cron/clients/_base.php",
            "bytes": 1233,
            "sha256": "257302304e0e6b90bef9aac3d078a717cb873aeecf62843ad62299e2db425c8f",
            "lines": 21,
            "functions": {
                "ingest_reading": [
                    3,
                    21
                ]
            }
        },
        {
            "path": "cron/clients/bugg.php",
            "bytes": 516,
            "sha256": "6f1b72c80b2440cab36b77c624666051f1f9f8ebf913618a9c20a8ecd2c8c68d",
            "lines": 11
        },
        {
            "path": "cron/clients/ecocounter.php",
            "bytes": 525,
            "sha256": "7451b16e1de4d34d5853ea2e74145fec65378d1e209a4666896b4812c3f5f2e3",
            "lines": 11
        },
        {
            "path": "cron/clients/hydrovu.php",
            "bytes": 533,
            "sha256": "3e02364b1a3c4fb34230138fb70f27ee687ff7bcfc93f12779054e1e78269de0",
            "lines": 11
        },
        {
            "path": "cron/clients/sqm.php",
            "bytes": 500,
            "sha256": "b6cf017d0dc3d309831a71ec2cd81cfd5a92032ac308d030276c76ab5e2c8f89",
            "lines": 11
        },
        {
            "path": "cron/clients/weatherlink.php",
            "bytes": 548,
            "sha256": "3a1d3cd46e1a4dfa39f938aa2230c495d60faa0ee7ba015849cc04ec7e279351",
            "lines": 11
        },
        {
            "path": "cron/health_check.php",
            "bytes": 1994,
            "sha256": "3d95f0ba6d5dab78423f4680e9edc7e1bd8db71c683a8757ba5b0d5066058312",
            "lines": 35
        },
        {
            "path": "cron/poll_all.php",
            "bytes": 488,
            "sha256": "698b864077e27e8fa394c1e4af1738d7d68e91827e587a08da15739e078fbaed",
            "lines": 10
        },
        {
            "path": "docs/schema.sql",
            "bytes": 3270,
            "sha256": "a0979cb34aff4cfc2c496c916b18f839b34e0c6cb01e8f337adfe4c0f9bdb9c6",
            "lines": 94
        },
        {
            "path": "inc/ai.php",
            "bytes": 7575,
            "sha256": "8903577c20328e7acff479c720d7e3787e3ffa40b477ed2e1eb7ea1352e7bc5e",
            "lines": 117,
            "functions": {
                "ai_mode": [
                    11,
                    12
                ],
                "ai_catalogue": [
                    13,
                    16
                ],
                "ai_validate_spec": [
                    17,
                    25
                ],
                "ai_stats_text": [
                    26,
                    43
                ],
                "ai_deterministic": [
                    44,
                    62
                ],
                "ai_http_post": [
                    63,
                    79
                ],
                "ai_api": [
                    80,
                    108
                ],
                "ai_ask": [
                    109,
                    117
                ]
            }
        },
        {
            "path": "inc/code-allowlist.php",
            "bytes": 1999,
            "sha256": "f2fc55c2c617ec89f3fcf07cafc8bdd8ecea9b1ba722094cee30eb1f3af29c6a",
            "lines": 24
        },
        {
            "path": "inc/code-snapshot.php",
            "bytes": 8508,
            "sha256": "3022420d25260e3db2389fd3a8cb8805d38f9b721982853fd9b0e0d5a2b37d52",
            "lines": 130
        },
        {
            "path": "inc/db.php",
            "bytes": 807,
            "sha256": "62d133f26334fc0d823f434c6b993f7be7a52f6ac3d2fa8686eb46c62e2b91db",
            "lines": 21,
            "functions": {
                "db": [
                    4,
                    16
                ],
                "log_activity": [
                    17,
                    21
                ]
            }
        },
        {
            "path": "inc/defaults.php",
            "bytes": 1431,
            "sha256": "ff9c255ceb0dd472a23cab678c1d131d654d6f16e9d4e52d1dc10106f7c9d6b9",
            "lines": 31
        },
        {
            "path": "inc/helpers.php",
            "bytes": 2944,
            "sha256": "287c881d9ae5317f72bc074f3c4ffda0f3677e944590fef8ad180551c47b4fd9",
            "lines": 54,
            "functions": {
                "h": [
                    9,
                    10
                ],
                "stream_by_code": [
                    11,
                    15
                ],
                "visible": [
                    16,
                    18
                ],
                "series": [
                    19,
                    27
                ],
                "latest": [
                    28,
                    32
                ],
                "mode_badge": [
                    33,
                    37
                ],
                "inst_status_badge": [
                    38,
                    42
                ],
                "json_series": [
                    43,
                    45
                ],
                "instrument_card": [
                    46,
                    54
                ]
            }
        },
        {
            "path": "inc/layout.php",
            "bytes": 6690,
            "sha256": "528ddb80bc30a1b40abcd9f44ff3e4024382137f3c93f39b91754e0f32409ea6",
            "lines": 72,
            "functions": {
                "page_header": [
                    17,
                    51
                ],
                "code_version": [
                    52,
                    57
                ],
                "code_link": [
                    58,
                    61
                ],
                "page_footer": [
                    62,
                    72
                ]
            }
        },
        {
            "path": "inc/streampage.php",
            "bytes": 2223,
            "sha256": "aa298edcdb72d00b341283a821760eb2c0b91e102bed34a4b58fc6554c3d1f1c",
            "lines": 30,
            "functions": {
                "render_stream_page": [
                    4,
                    30
                ]
            }
        },
        {
            "path": "index.php",
            "bytes": 217,
            "sha256": "0ccd650e261b5d8996a22cb1d7e9010d7b634e322d12b670e69b0322a10865c2",
            "lines": 7
        },
        {
            "path": "pages/about.php",
            "bytes": 3422,
            "sha256": "614c25276f51754377925e9de72cf657f41d99edd3c5c62c5bff891f6cf2e266",
            "lines": 16
        },
        {
            "path": "pages/apidocs.php",
            "bytes": 1554,
            "sha256": "78e7451b8aa1f7e9eae771d53203d7a93ace53c88f76954b7b20cba345195004",
            "lines": 15
        },
        {
            "path": "pages/aquifer.php",
            "bytes": 340,
            "sha256": "1c483f224713e3d9ccbae5e7b3e33f4a737d970d42cfc0fbd307805854006e50",
            "lines": 4
        },
        {
            "path": "pages/ask.php",
            "bytes": 3977,
            "sha256": "924c25fc6943c4f620a7563861c24392b7b8432bf31f5c2cce2146bf806a18f6",
            "lines": 36
        },
        {
            "path": "pages/birds.php",
            "bytes": 2226,
            "sha256": "d6445399959599d82c0d14bcebf5a5e300913791e1976b5f8cf56b817d00e6e2",
            "lines": 25
        },
        {
            "path": "pages/cameras.php",
            "bytes": 1732,
            "sha256": "4281fc8bfd7d7b7a81d580d7d911b514348a0646c9728681e0ba0ec7934920ca",
            "lines": 20
        },
        {
            "path": "pages/code.php",
            "bytes": 14856,
            "sha256": "f777036a4c1aa44d1b66c8183ba7069d5ab872a2fffa0c6f6d6ddb303392f387",
            "lines": 147,
            "functions": {
                "code_rate_limit": [
                    14,
                    21
                ],
                "code_versions": [
                    22,
                    26
                ],
                "code_lines": [
                    27,
                    43
                ],
                "code_ver_link": [
                    44,
                    147
                ]
            }
        },
        {
            "path": "pages/construction.php",
            "bytes": 895,
            "sha256": "78a18e521088659c2d2c53d9e68a34c831f00d0674cd5c0193213cf36f6508e9",
            "lines": 11
        },
        {
            "path": "pages/control.php",
            "bytes": 2687,
            "sha256": "ae867741b2799b0f4cf89edb94a7c3b5238406bd77af1edc97b99759023c6248",
            "lines": 21
        },
        {
            "path": "pages/correlate.php",
            "bytes": 3707,
            "sha256": "3da5d4344f22d0ebe89e799801f5cb59e1547bf26f6d5278d4293d9853ca7faa",
            "lines": 49
        },
        {
            "path": "pages/darksky.php",
            "bytes": 339,
            "sha256": "34e971e8afe2c3bd3ca795c37d2199ea016bc7063a999150b4de018867e70806",
            "lines": 4
        },
        {
            "path": "pages/faults.php",
            "bytes": 916,
            "sha256": "c3318131fa64f493742cad2bbe218c58c65149ad5c9538d4ca537ed1a2706457",
            "lines": 13
        },
        {
            "path": "pages/footfall.php",
            "bytes": 345,
            "sha256": "f962b67c63247d2241761817290c1ce177b890f7ccf9c13bb04511c6c085ba4a",
            "lines": 4
        },
        {
            "path": "pages/health.php",
            "bytes": 2545,
            "sha256": "a2a14e6519d2740f43d4aea19f91992e789f306323442c8c13fc6cb908078147",
            "lines": 27
        },
        {
            "path": "pages/heritage.php",
            "bytes": 1695,
            "sha256": "cebd2619e584d188167c4e05922508330539bf4902537b05df884765840e77ad",
            "lines": 19
        },
        {
            "path": "pages/live.php",
            "bytes": 3748,
            "sha256": "9bfde60e9dab4a843d8a7e899067052821fcbacad0b0aafb3efc96e1e9fca528",
            "lines": 45
        },
        {
            "path": "pages/log.php",
            "bytes": 593,
            "sha256": "d2dcca3ce3f704a32ddc74a71ab4ca065d53b198879fbe3a9764d43d137cc967",
            "lines": 10
        },
        {
            "path": "pages/marine.php",
            "bytes": 366,
            "sha256": "c0d0cca8e50793215f9d09dc00aaade3575d3c3f3409df559fb8365725d0e05f",
            "lines": 4
        },
        {
            "path": "pages/methods.php",
            "bytes": 1451,
            "sha256": "b79278d6d77507c7c143083f23f5497cf866b5722928e98d7b73b92fef4a7fcf",
            "lines": 14
        },
        {
            "path": "pages/resources.php",
            "bytes": 408,
            "sha256": "d99155f4637d0e3b45e065797693a345feea218db6a2bbecbb7f98e07f09ade3",
            "lines": 4
        },
        {
            "path": "pages/species.php",
            "bytes": 32793,
            "sha256": "dfa4a48f1e0915d5696a26ccadfe694ffe92a39c066c8b45baef26a6a57393b8",
            "lines": 435,
            "functions": {
                "sp_year_chart": [
                    32,
                    85
                ],
                "sp_bar": [
                    86,
                    104
                ],
                "sp_feed": [
                    105,
                    119
                ],
                "sp_since_baseline": [
                    120,
                    259
                ],
                "sp_timeline": [
                    260,
                    435
                ]
            }
        },
        {
            "path": "pages/vault.php",
            "bytes": 1822,
            "sha256": "11632036744755183c5666d3613f7e3eb300079483605793dc4c44960779cb4a",
            "lines": 17
        },
        {
            "path": "pages/water.php",
            "bytes": 405,
            "sha256": "241bf838d93e318059cc7fa9af0f8cd1842e7d7cd2ff98ad57274681ab830391",
            "lines": 4
        },
        {
            "path": "pages/weather.php",
            "bytes": 376,
            "sha256": "7000dfe6caafed1d0a2bc5bd5768fb92c5249b5754d361b21078acdcb34d1632",
            "lines": 4
        },
        {
            "path": "pages/wellbeing.php",
            "bytes": 2586,
            "sha256": "39d1ef9570fbb22cf8bd35abde80525087a0bf1fbf5e32bdb0923f161ccddc37",
            "lines": 13
        },
        {
            "path": "pages/wellness.php",
            "bytes": 12407,
            "sha256": "dc992921b27b6019b364fa856614dbc273d0f3a84ba8526616fc5a22de977f3e",
            "lines": 94,
            "functions": {
                "wl_feed": [
                    8,
                    94
                ]
            }
        },
        {
            "path": "schema.sql",
            "bytes": 3522,
            "sha256": "a37fdb7f11822047056fa3fddf14217df47ce759f167300b76074d0b6117ea1a",
            "lines": 103
        }
    ],
    "manifest_sha256": "94a349346e510fcd873ddf9b4fb65c69b42239205a2f854c4786df0e23df5429"
}