Generated 2026-10-30T23:33:52+00:00 · commit cf1e958ac373be65ef7938f2facef2c81ffb4d1f · branch example-report-5.1.2 · root /private/tmp/ma512/maintainability-agent · standard ISO/IEC 25010 maintainability-inspired 0-5 scale, rate-based
| Severity | Findings |
|---|---|
| Severe | 0 |
| High | 0 |
| Medium | 0 |
| Low | 0 |
| Total findings | 0 |
14 of 17 tools contributed — concerns all, depth heavy, license policy copyleft-any. Plus 8 built-in detectors.
| Source | Tier | Outcome | Version | Measurements | Findings |
|---|---|---|---|---|---|
| eslint | analyzer | not-applicable | — | — | — |
| fortitude | analyzer | not-applicable | — | — | — |
| spotbugs | analyzer | not-applicable | — | — | — |
| checkstyle | analyzer | ran | Checkstyle version: 14.0.0 | 0 | 119 |
| cohesion | analyzer | ran | cohesion 1.2.0 | 117 | 0 |
| complexipy | analyzer | ran | complexipy 8.2.0 | 4750 | 0 |
| interrogate | analyzer | ran | interrogate, version 1.7.0 | 1 | 0 |
| jscpd | analyzer | ran | cpd 5.1.1 | 1 | 151 |
| lizard | analyzer | ran | 1.24.0 | 15171 | 0 |
| multimetric | analyzer | ran | multimetric 2.4.5 | 2156 | 0 |
| mypy | analyzer | ran | mypy 2.4.0 (compiled: yes) | 0 | 344 |
| pmd | analyzer | ran | PMD 7.26.0 (8fd38edf285a33e1164f66205ebe243441db9557, 2026-06-29T08:22:36Z) | 0 | 0 |
| pydocstyle | analyzer | ran | 6.3.0 | 0 | 272 |
| pylint | analyzer | ran | pylint 4.1.3 | 0 | 3407 |
| radon | analyzer | ran | 6.0.1 | 518 | 0 |
| ruff | analyzer | ran | ruff 0.17.2 | 0 | 1 |
| vulture | analyzer | ran | vulture 2.16 | 0 | 9 |
| competing-libraries | built-in | ran | — | 623 | 0 |
| dead-code | built-in | ran | — | 5023 | 0 |
| declaration-size | built-in | ran | — | 5023 | 80 |
| duplicate-blocks | built-in | ran | — | 623 | 0 |
| file-size | built-in | ran | — | 623 | 6 |
| history | built-in | ran | — | 623 | 77 |
| near-duplicates | built-in | ran | — | 5023 | 0 |
| risk-patterns | built-in | ran | — | 623 | 0 |
declarations measured by analyzers, completed by built-in detectors: no analyzer supplies cognitive_complexity for C, C#, C++, Fortran, Go, Java, JavaScript, Kotlin, PHP, Ruby, Rust, Swift, TypeScript, so the built-in scanner supplied it for those declarations and the analyzers supplied the rest; the criterion set is complete per declaration, which is what makes the rate comparable to the rubric's.
jscpd reported 151 duplication findings; they are listed and their count does not move the grade: the duplication dimension is scored from the built-in detectors only.
Nothing examined: testing.
These concerns are unmeasured, not clean. Install a tool that covers them, widen analyzers.depth, or declare the SARIF your own build or pipeline already writes in analyzers.pipeline_results to have them reported.
Analyzer children are not network-isolated. 14 external tools ran as local child processes. This agent does not transmit the audited source and opens no socket of its own, but it does not sandbox what it spawns: a third-party analyzer that reaches the network is outside what this run controls or observes. Determinism and no upload are the promise; a kernel air-gap is not.
| Recorded | Commit | Estimate | Findings |
|---|---|---|---|
| 2026-08-15T20:46:31Z | 008e8701 | 4.2 | 0 |
| 2026-08-15T20:46:33Z | 008e8701 | 4.2 | 0 |
| 2026-08-15T20:46:44Z | 008e8701 | 4.2 | 0 |
| 2026-08-16T01:18:28Z | 8fa548b2 | 4.2 | 0 |
| 2026-08-16T01:19:29Z | 8fa548b2 | 4.2 | 0 |
| 2026-08-16T01:19:50Z | 8fa548b2 | 4.2 | 0 |
| 2026-08-16T06:01:10Z | 2abf5112 | 4.2 | 0 |
| 2026-08-17T15:38:29Z | c8b267e3 | 4.2 | 1 |
| 2026-08-17T15:38:46Z | c8b267e3 | 4.2 | 1 |
| 2026-08-17T15:39:05Z | c8b267e3 | 4.2 | 1 |
| 2026-08-17T15:39:21Z | c8b267e3 | 4.2 | 1 |
| 2026-08-17T15:39:38Z | c8b267e3 | 4.2 | 1 |
| 2026-08-17T15:40:13Z | c8b267e3 | 4.2 | 0 |
| 2026-08-17T20:07:23Z | 413c7617 | 4.2 | 18 |
| 2026-08-17T20:07:39Z | 413c7617 | 4.2 | 18 |
| 2026-08-17T20:07:55Z | 413c7617 | 4.2 | 18 |
| 2026-08-17T20:18:57Z | 413c7617 | 4.2 | 0 |
| 2026-08-17T21:55:55Z | 6b2fb764 | 4.2 | 1 |
| 2026-08-17T21:56:12Z | 6b2fb764 | 4.2 | 1 |
| 2026-08-17T21:56:29Z | 6b2fb764 | 4.2 | 1 |
| 2026-08-17T22:00:26Z | 6b2fb764 | 4.2 | 0 |
| 2026-08-17T22:04:12Z | 6b2fb764 | 4.2 | 0 |
| 2026-08-17T22:58:36Z | 92f6270b | 4.2 | 0 |
| 2026-08-17T23:32:19Z | e6783b75 | 4.2 | 0 |
| 2026-08-17T23:52:26Z | fc5e9351 | 4.2 | 0 |
| 2026-08-18T01:23:51Z | 1af28aa6 | 4.2 | 0 |
| 2026-08-18T05:25:24Z | 3518bdc3 | 4.2 | 0 |
| 2026-08-18T17:46:36Z | eb8c7391 | 4.2 | 0 |
| 2026-08-18T18:00:16Z | c6fce1ff | 4.2 | 0 |
| 2026-08-18T22:41:24Z | 549fcad0 | 4.2 | 1 |
| 2026-08-18T22:41:41Z | 549fcad0 | 4.2 | 1 |
| 2026-08-18T22:41:53Z | 549fcad0 | 4.2 | 1 |
| 2026-08-18T22:45:39Z | 549fcad0 | 4.2 | 0 |
| 2026-08-19T01:18:32Z | 7ef71c16 | 4.1 | 13 |
| 2026-08-19T01:18:51Z | 7ef71c16 | 4.1 | 13 |
| 2026-08-19T01:19:13Z | 7ef71c16 | 4.1 | 13 |
| 2026-08-19T01:20:04Z | 7ef71c16 | 4.2 | 0 |
| 2026-08-19T02:28:12Z | 340ec98c | 4.2 | 0 |
| 2026-08-19T14:53:41Z | 6367c55b | 4.2 | 0 |
| 2026-08-19T15:03:23Z | 2e395c35 | 4.2 | 0 |
| 2026-08-19T17:17:40Z | 0be65cba | 4.2 | 0 |
| 2026-08-19T18:20:31Z | 742a49f5 | 4.2 | 0 |
| 2026-08-19T19:09:44Z | 9510c095 | 4.1 | 3 |
| 2026-08-19T19:10:06Z | 9510c095 | 4.1 | 3 |
| 2026-08-19T19:10:18Z | 9510c095 | 4.1 | 3 |
| 2026-08-19T19:10:57Z | 9510c095 | 4.1 | 3 |
| 2026-08-19T19:19:45Z | 9510c095 | 4.2 | 0 |
| 2026-08-19T20:19:25Z | 6a69d728 | 4.2 | 0 |
| 2026-08-19T22:00:41Z | 48293d3f | 4.1 | 2 |
| 2026-08-19T22:01:05Z | 48293d3f | 4.1 | 2 |
| 2026-08-19T22:01:18Z | 48293d3f | 4.1 | 2 |
| 2026-08-19T22:05:30Z | 48293d3f | 4.1 | 1 |
| 2026-08-19T22:05:52Z | 48293d3f | 4.1 | 1 |
| 2026-08-19T22:06:05Z | 48293d3f | 4.1 | 1 |
| 2026-08-19T22:06:38Z | 48293d3f | 4.2 | 0 |
| 2026-08-19T22:59:02Z | cc71cd17 | 4.1 | 2 |
| 2026-08-19T22:59:23Z | cc71cd17 | 4.1 | 2 |
| 2026-08-19T22:59:37Z | cc71cd17 | 4.1 | 2 |
| 2026-08-19T23:00:26Z | cc71cd17 | 4.1 | 1 |
| 2026-08-19T23:04:01Z | cc71cd17 | 4.2 | 0 |
| 2026-08-19T23:50:01Z | 8ab2c88a | 4.2 | 0 |
| 2026-08-20T16:20:52Z | 0f62cac7 | 4.0 | 26 |
| 2026-08-20T16:21:13Z | 0f62cac7 | 4.0 | 26 |
| 2026-08-20T16:21:40Z | 0f62cac7 | 4.0 | 26 |
| 2026-08-20T16:25:15Z | 0f62cac7 | 4.2 | 0 |
| 2026-08-21T03:30:32Z | d5b1c502 | 4.1 | 1 |
| 2026-08-21T03:30:53Z | d5b1c502 | 4.1 | 1 |
| 2026-08-21T03:31:07Z | d5b1c502 | 4.1 | 1 |
| 2026-08-21T03:31:30Z | d5b1c502 | 4.2 | 0 |
| 2026-08-21T06:12:28Z | 43c0d13c | 4.1 | 1 |
| 2026-08-21T06:12:48Z | 43c0d13c | 4.1 | 1 |
| 2026-08-21T06:13:03Z | 43c0d13c | 4.1 | 1 |
| 2026-08-21T06:17:05Z | 43c0d13c | 4.2 | 0 |
| 2026-08-21T14:50:36Z | 05bdb573 | 4.1 | 2 |
| 2026-08-21T14:50:56Z | 05bdb573 | 4.1 | 2 |
| 2026-08-21T14:51:10Z | 05bdb573 | 4.1 | 2 |
| 2026-08-21T14:53:03Z | 05bdb573 | 4.2 | 0 |
| 2026-08-21T15:03:47Z | 05bdb573 | 4.2 | 0 |
| 2026-08-21T15:18:51Z | 8025b4f9 | 4.2 | 1 |
| 2026-08-21T15:19:11Z | 8025b4f9 | 4.2 | 1 |
| 2026-08-21T15:19:25Z | 8025b4f9 | 4.2 | 1 |
| 2026-08-21T15:20:11Z | 8025b4f9 | 4.2 | 0 |
| 2026-08-21T17:10:09Z | 5a7857cd | 4.2 | 0 |
| 2026-08-21T17:14:10Z | 5a7857cd | 4.2 | 0 |
| 2026-08-21T18:17:10Z | 2f20acda | 4.1 | 1 |
| 2026-08-21T18:17:31Z | 2f20acda | 4.1 | 1 |
| 2026-08-21T18:17:45Z | 2f20acda | 4.1 | 1 |
| 2026-08-21T18:18:13Z | 2f20acda | 4.2 | 0 |
| 2026-08-21T18:32:29Z | 81c05d06 | 4.2 | 0 |
| 2026-08-28T13:05:26Z | 367adf9a | — | 1 |
| 2026-08-28T13:05:37Z | 367adf9a | — | 1 |
| 2026-08-28T13:07:10Z | 367adf9a | — | 0 |
| 2026-09-01T22:50:04Z | c76e7d10 | 4.1 | 3 |
| 2026-09-01T22:54:04Z | c76e7d10 | 4.1 | 3 |
| 2026-09-01T23:16:01Z | c76e7d10 | 4.1 | 0 |
| 2026-09-01T23:57:58Z | fc2024d8 | 4.1 | 0 |
| 2026-09-02T00:13:53Z | fc2024d8 | 4.1 | 0 |
| 2026-09-02T02:21:34Z | 950ccd08 | 4.1 | 0 |
| 2026-09-02T02:37:15Z | 8d31a919 | 4.1 | 0 |
| 2026-09-02T02:55:46Z | 8b399655 | 4.1 | 0 |
| 2026-09-02T03:10:30Z | 5a25a785 | 4.1 | 0 |
| 2026-09-02T04:13:12Z | 083dcfe7 | 4.1 | 1 |
| 2026-09-02T04:16:57Z | 083dcfe7 | 4.1 | 1 |
| 2026-09-02T04:20:42Z | 083dcfe7 | 4.1 | 1 |
| 2026-09-02T04:24:53Z | 083dcfe7 | 4.1 | 0 |
| 2026-09-02T04:32:59Z | 083dcfe7 | 4.1 | 0 |
| 2026-09-02T05:07:33Z | cebf47c6 | 4.1 | 0 |
| 2026-09-02T05:21:56Z | cebf47c6 | 4.1 | 0 |
| 2026-09-02T15:53:44Z | 82212f7c | 4.1 | 1 |
| 2026-09-02T15:57:42Z | 82212f7c | 4.1 | 1 |
| 2026-09-02T16:01:50Z | 82212f7c | 4.1 | 1 |
| 2026-09-02T16:09:57Z | 82212f7c | 4.1 | 0 |
| 2026-09-02T16:49:38Z | dd2e26e6 | 4.1 | 2 |
| 2026-09-02T16:53:22Z | dd2e26e6 | 4.1 | 2 |
| 2026-09-02T17:01:35Z | dd2e26e6 | 4.1 | 0 |
| 2026-09-02T17:16:02Z | 590a6986 | 4.1 | 0 |
| 2026-09-02T18:17:31Z | 9d3b5f1c | 4.1 | 0 |
| 2026-09-02T19:09:34Z | 1b87e7dd | 4.1 | 0 |
| 2026-09-02T19:48:51Z | 1b87e7dd | 4.1 | 1 |
| 2026-09-02T19:59:16Z | 1b87e7dd | 4.1 | 1 |
| 2026-09-02T20:03:02Z | 1b87e7dd | 4.1 | 1 |
| 2026-09-02T20:10:01Z | 1b87e7dd | 4.1 | 0 |
| 2026-09-02T20:57:23Z | 962f3e8c | 4.1 | 0 |
| 2026-09-02T21:22:31Z | 064b14ba | 4.1 | 0 |
| 2026-09-03T01:50:55Z | 064b14ba | 4.1 | 0 |
| 2026-09-03T03:14:36Z | eda313a7 | 4.1 | 1 |
| 2026-09-03T03:19:37Z | eda313a7 | 4.1 | 1 |
| 2026-09-03T03:26:28Z | eda313a7 | 4.1 | 0 |
| 2026-09-03T04:32:13Z | 5b76ed8e | 4.1 | 1 |
| 2026-09-03T04:37:32Z | 5b76ed8e | 4.1 | 1 |
| 2026-09-03T04:42:55Z | 5b76ed8e | 4.1 | 1 |
| 2026-09-03T04:48:08Z | 5b76ed8e | 4.1 | 1 |
| 2026-09-03T04:53:21Z | 5b76ed8e | 4.1 | 1 |
| 2026-09-03T04:59:23Z | 5b76ed8e | 4.1 | 0 |
| 2026-09-03T13:47:23Z | 1f6f9bbb | 4.1 | 0 |
| 2026-09-03T13:52:57Z | 1f6f9bbb | 4.1 | 0 |
| 2026-09-03T13:58:21Z | 1f6f9bbb | 4.1 | 0 |
| 2026-09-03T14:04:41Z | 1f6f9bbb | 4.1 | 0 |
| 2026-09-03T14:19:51Z | 1f6f9bbb | 4.1 | 1 |
| 2026-09-03T14:29:04Z | 1f6f9bbb | 4.1 | 1 |
| 2026-09-03T14:36:15Z | 1f6f9bbb | 4.1 | 1 |
| 2026-09-03T14:52:35Z | 1f6f9bbb | 4.1 | 0 |
| 2026-09-03T15:38:52Z | eaa6f67b | 4.1 | 0 |
| 2026-09-03T16:43:03Z | 65830eef | 4.1 | 1 |
| 2026-09-03T16:52:36Z | 65830eef | 4.1 | 1 |
| 2026-09-03T17:01:53Z | 65830eef | 4.1 | 1 |
| 2026-09-03T17:07:37Z | 65830eef | 4.1 | 0 |
| 2026-09-03T17:14:34Z | 65830eef | 4.1 | 0 |
| 2026-09-03T18:31:22Z | 08b59cae | 4.1 | 2 |
| 2026-09-03T18:36:27Z | 08b59cae | 4.1 | 2 |
| 2026-09-03T18:41:30Z | 08b59cae | 4.1 | 1 |
| 2026-09-03T18:46:23Z | 08b59cae | 4.1 | 1 |
| 2026-09-03T18:51:28Z | 08b59cae | 4.1 | 0 |
| 2026-09-03T19:10:28Z | 08b59cae | 4.1 | 1 |
| 2026-09-03T19:15:49Z | 08b59cae | 4.1 | 0 |
| 2026-09-03T19:47:08Z | 08b59cae | 4.1 | 1 |
| 2026-09-03T19:52:28Z | 08b59cae | 4.1 | 1 |
| 2026-09-03T19:57:41Z | 08b59cae | 4.1 | 0 |
| 2026-09-03T22:26:06Z | 08b59cae | 4.2 | 1 |
| 2026-09-03T22:34:50Z | 08b59cae | 4.2 | 1 |
| 2026-09-03T22:40:10Z | 08b59cae | 4.2 | 1 |
| 2026-09-03T22:45:44Z | 08b59cae | 4.2 | 0 |
| 2026-09-03T23:00:18Z | 08b59cae | 4.2 | 0 |
| 2026-09-04T02:59:22Z | 406d7347 | 4.2 | 0 |
| 2026-09-04T03:09:38Z | 406d7347 | 4.2 | 0 |
| 2026-09-04T03:36:55Z | dba2fade | 4.2 | 2 |
| 2026-09-04T03:48:53Z | dba2fade | 4.2 | 2 |
| 2026-09-04T03:58:42Z | dba2fade | 4.2 | 0 |
| 2026-09-04T04:12:38Z | 8d65e562 | 4.2 | 0 |
| 2026-09-04T04:25:28Z | 8d65e562 | 4.2 | 0 |
| 2026-09-04T04:53:43Z | e93bfa59 | 4.2 | 0 |
| 2026-09-04T05:23:22Z | 2b2de1ff | 4.2 | 1 |
| 2026-09-04T05:28:31Z | 2b2de1ff | 4.2 | 1 |
| 2026-09-04T05:34:39Z | 2b2de1ff | 4.2 | 0 |
| 2026-09-04T05:44:00Z | 2b2de1ff | 4.2 | 0 |
| 2026-09-04T05:56:43Z | 2b2de1ff | 4.2 | 0 |
| 2026-09-04T06:10:08Z | 81be3d12 | 4.2 | 0 |
| 2026-09-04T06:30:41Z | 1f6a669d | 4.2 | 0 |
| 2026-09-04T06:58:47Z | 0c2a399e | 4.2 | 0 |
| 2026-09-04T07:11:36Z | 0c2a399e | 4.2 | 0 |
| 2026-09-04T07:40:48Z | f521f37e | 4.2 | 0 |
| 2026-09-04T07:53:46Z | f521f37e | 4.2 | 0 |
| 2026-09-04T16:40:06Z | 2c6adbfa | 4.2 | 0 |
| 2026-09-04T17:56:04Z | 3077aa1c | 4.2 | 0 |
| 2026-09-04T19:08:33Z | f4c55794 | 4.2 | 0 |
| 2026-09-04T19:52:42Z | b3e050d2 | 4.2 | 3 |
| 2026-09-04T19:56:54Z | b3e050d2 | 4.2 | 3 |
| 2026-09-04T20:01:02Z | b3e050d2 | 4.2 | 3 |
| 2026-09-04T20:05:13Z | b3e050d2 | 4.2 | 3 |
| 2026-09-04T20:09:26Z | b3e050d2 | 4.2 | 3 |
| 2026-09-04T20:14:56Z | b3e050d2 | 4.2 | 2 |
| 2026-09-04T20:19:03Z | b3e050d2 | 4.2 | 2 |
| 2026-09-04T20:24:43Z | b3e050d2 | 4.2 | 1 |
| 2026-09-04T20:28:57Z | b3e050d2 | 4.2 | 0 |
| 2026-09-04T20:50:00Z | fb3cf0ba | 4.2 | 0 |
| 2026-09-04T21:24:29Z | e0d9144b | 4.2 | 0 |
| 2026-09-04T21:48:12Z | 016a5db1 | 4.2 | 1 |
| 2026-09-04T21:52:47Z | 016a5db1 | 4.2 | 1 |
| 2026-09-04T21:57:17Z | 016a5db1 | 4.2 | 1 |
| 2026-09-04T22:01:42Z | 016a5db1 | 4.2 | 0 |
| 2026-09-04T22:33:54Z | 9c91c3d1 | 4.2 | 0 |
| 2026-09-04T22:42:23Z | 9c91c3d1 | 4.2 | 0 |
| 2026-09-05T00:28:01Z | f51fbbc3 | 4.2 | 3 |
| 2026-09-05T00:32:12Z | f51fbbc3 | 4.2 | 3 |
| 2026-09-05T00:39:15Z | f51fbbc3 | 4.2 | 1 |
| 2026-09-05T00:43:18Z | f51fbbc3 | 4.2 | 1 |
| 2026-09-05T00:47:24Z | f51fbbc3 | 4.2 | 0 |
| 2026-09-05T00:59:02Z | 2379a7ce | 4.2 | 0 |
| 2026-09-05T01:34:47Z | 2b691367 | 4.2 | 1 |
| 2026-09-05T01:38:51Z | 2b691367 | 4.2 | 1 |
| 2026-09-05T01:42:53Z | 2b691367 | 4.2 | 1 |
| 2026-09-05T01:47:31Z | 2b691367 | 4.2 | 0 |
| 2026-09-05T02:30:32Z | fb6d2d5d | 4.2 | 0 |
| 2026-09-05T02:41:27Z | fb6d2d5d | 4.2 | 0 |
| 2026-09-05T03:18:17Z | 4d578d6d | 4.2 | 0 |
| 2026-09-05T05:12:56Z | 687c012b | 4.2 | 1 |
| 2026-09-05T05:17:04Z | 687c012b | 4.2 | 1 |
| 2026-09-05T05:21:10Z | 687c012b | 4.2 | 1 |
| 2026-09-05T05:28:40Z | 687c012b | 4.2 | 1 |
| 2026-09-05T05:32:42Z | 687c012b | 4.2 | 1 |
| 2026-09-05T05:36:49Z | 687c012b | 4.2 | 1 |
| 2026-09-05T05:43:54Z | 687c012b | 4.2 | 0 |
| 2026-09-05T06:06:22Z | b00770eb | 4.2 | 0 |
| 2026-09-05T14:51:23Z | 99aacf95 | 4.2 | 0 |
| 2026-09-05T15:09:49Z | 3b0ad5cc | 4.2 | 0 |
| 2026-09-05T16:25:16Z | a1ff4ac3 | 4.2 | 0 |
| 2026-09-05T16:43:43Z | ae7ff231 | 4.2 | 0 |
| 2026-09-05T17:03:59Z | 27c608f4 | 4.2 | 0 |
| 2026-09-05T17:49:27Z | 76200a00 | 4.2 | 0 |
| 2026-09-05T18:15:54Z | 18f061ab | 4.2 | 0 |
| 2026-09-05T19:52:45Z | 50d4d5ae | 4.2 | 0 |
| 2026-09-05T20:44:46Z | e9a7e2f4 | — | 0 |
| 2026-09-05T20:49:08Z | e9a7e2f4 | — | 0 |
| 2026-09-05T20:53:53Z | e9a7e2f4 | — | 0 |
| 2026-09-05T21:35:57Z | e9a7e2f4 | 4.2 | 1 |
| 2026-09-05T21:42:25Z | e9a7e2f4 | 4.2 | 0 |
| 2026-09-06T01:22:18Z | b4981e21 | 4.2 | 0 |
| 2026-09-06T03:28:11Z | b02dd5a9 | 4.2 | 0 |
| 2026-09-06T03:54:55Z | a569c833 | 4.2 | 4 |
| 2026-09-06T04:02:48Z | a569c833 | 4.2 | 3 |
| 2026-09-06T14:42:34Z | 2f5f0de9 | 4.2 | 1 |
| 2026-09-06T14:55:35Z | 5a70d53d | 4.2 | 0 |
| 2026-09-06T15:06:06Z | 3cfe463b | 4.2 | 0 |
| 2026-09-06T15:20:50Z | 92b9173a | 4.2 | 0 |
| 2026-09-06T15:43:18Z | 41c2093e | 4.2 | 0 |
| 2026-09-06T16:11:26Z | 41c2093e | 4.2 | 5 |
| 2026-09-06T18:17:55Z | 59bb6111 | 4.2 | 2 |
| 2026-09-06T18:22:46Z | 59bb6111 | 4.2 | 2 |
| 2026-09-06T18:28:54Z | 59bb6111 | 4.2 | 0 |
| 2026-09-06T18:48:06Z | aed00003 | 4.2 | 0 |
| 2026-09-06T18:55:57Z | af96de13 | 4.2 | 0 |
| 2026-09-07T18:48:35Z | 4ebdeb35 | 4.2 | 0 |
| 2026-09-07T20:46:27Z | f5b64d64 | 4.2 | 1 |
| 2026-09-07T20:58:48Z | f5b64d64 | 4.2 | 0 |
| 2026-09-07T23:54:18Z | 616af927 | 4.2 | 2 |
| 2026-09-07T23:58:45Z | 616af927 | 4.2 | 2 |
| 2026-09-08T00:03:26Z | 616af927 | 4.2 | 2 |
| 2026-09-08T00:14:00Z | 616af927 | 4.2 | 0 |
| 2026-09-08T07:43:59Z | ef9832b8 | 4.1 | 1 |
| 2026-09-08T07:52:12Z | ef9832b8 | 4.1 | 0 |
| 2026-09-08T15:51:51Z | dc8dc76c | 4.1 | 0 |
| 2026-09-08T16:52:49Z | dc8dc76c | 4.1 | 0 |
| 2026-09-08T17:45:09Z | ef76e1cd | 4.1 | 0 |
| 2026-09-08T19:04:32Z | 32a6a678 | 4.1 | 0 |
| 2026-09-09T15:28:08Z | a34c924d | 4.1 | 0 |
| 2026-09-09T15:45:03Z | a34c924d | 4.1 | 0 |
| 2026-09-09T15:51:34Z | a34c924d | 4.1 | 0 |
| 2026-09-09T15:57:18Z | a34c924d | 4.1 | 0 |
| 2026-09-09T16:03:21Z | a34c924d | 4.1 | 0 |
| 2026-09-09T16:26:16Z | a34c924d | 4.1 | 0 |
| 2026-09-10T22:48:20Z | 2c2dfdac | 4.4 | 0 |
| 2026-09-10T22:57:13Z | 2c2dfdac | 4.4 | 0 |
| 2026-09-10T22:59:13Z | 2c2dfdac | 4.4 | 0 |
| 2026-09-10T23:08:06Z | 34eeef96 | 4.4 | 0 |
| 2026-09-10T23:13:37Z | 34eeef96 | 4.4 | 0 |
| 2026-09-10T23:22:21Z | 34eeef96 | 4.4 | 0 |
| 2026-09-10T23:35:05Z | 08dbbebd | 4.4 | 0 |
| 2026-09-11T01:08:13Z | 075bda92 | 4.4 | 0 |
| 2026-09-11T01:13:43Z | 075bda92 | 4.4 | 0 |
| 2026-09-11T01:24:28Z | 64c2b454 | 4.4 | 0 |
| 2026-09-11T01:32:09Z | 64c2b454 | 4.5 | 0 |
| 2026-09-11T01:39:08Z | 64c2b454 | 4.5 | 0 |
| 2026-09-11T01:45:22Z | 64c2b454 | 4.5 | 0 |
| 2026-09-11T01:53:21Z | 64c2b454 | 4.5 | 0 |
| 2026-09-11T01:59:08Z | 64c2b454 | 4.5 | 0 |
| 2026-09-11T02:04:20Z | 64c2b454 | 4.5 | 0 |
| 2026-09-11T02:14:11Z | 7c1d8173 | 4.5 | 0 |
| 2026-09-11T02:21:15Z | 7c1d8173 | 4.5 | 0 |
| 2026-09-11T02:26:10Z | 7c1d8173 | 4.5 | 0 |
| 2026-09-11T05:11:47Z | 533e7b1c | 4.5 | 0 |
| 2026-09-11T17:41:40Z | 673e6673 | 4.5 | 0 |
| 2026-09-11T18:06:02Z | 673e6673 | 4.5 | 0 |
| 2026-09-11T18:29:17Z | 9b49baf3 | 4.5 | 0 |
| 2026-09-11T18:41:02Z | 4769dc36 | 4.5 | 0 |
| 2026-09-11T18:41:29Z | 4769dc36 | 4.5 | 0 |
| 2026-09-11T18:46:10Z | 4769dc36 | 4.5 | 0 |
| 2026-09-11T19:12:49Z | 0d7230dc | 4.4 | 1 |
| 2026-09-11T19:13:19Z | 0d7230dc | 4.4 | 1 |
| 2026-09-11T19:22:22Z | 0d7230dc | 4.4 | 1 |
| 2026-09-11T19:22:53Z | 0d7230dc | 4.4 | 1 |
| 2026-09-11T19:23:27Z | 0d7230dc | 4.4 | 1 |
| 2026-09-11T19:24:09Z | 0d7230dc | 4.5 | 0 |
| 2026-09-11T21:08:33Z | 51eb31a2 | 4.5 | 0 |
| 2026-09-11T21:29:07Z | e2fe2338 | 4.5 | 0 |
| 2026-09-11T22:43:02Z | 66358519 | 4.5 | 0 |
| 2026-09-11T22:47:45Z | 66358519 | 4.5 | 0 |
| 2026-09-11T22:52:49Z | d4a45cee | 4.5 | 0 |
| 2026-09-11T23:05:25Z | d4a45cee | 4.5 | 0 |
| 2026-09-11T23:21:19Z | e8f27dd1 | 4.5 | 0 |
| 2026-09-11T23:43:19Z | 55ce9cad | 4.5 | 0 |
| 2026-09-12T00:03:02Z | 7d196459 | 4.5 | 0 |
| 2026-09-12T00:17:35Z | 7d196459 | 4.5 | 0 |
| 2026-09-12T00:31:22Z | 136b7e3d | 4.5 | 0 |
| 2026-09-12T00:39:39Z | 136b7e3d | 4.5 | 0 |
| 2026-09-12T00:52:35Z | 934f7739 | 4.5 | 0 |
| 2026-09-12T00:53:48Z | 934f7739 | 4.5 | 0 |
| 2026-09-12T00:54:59Z | 934f7739 | 4.5 | 0 |
| 2026-09-12T01:04:36Z | 014e5b9d | 4.5 | 0 |
| 2026-09-12T01:10:32Z | 09206580 | 4.5 | 0 |
| 2026-09-12T01:33:28Z | 10059fb4 | 4.5 | 0 |
| 2026-09-12T01:55:40Z | a103c3ce | 4.5 | 0 |
| 2026-09-12T02:12:33Z | 7fc800a3 | 4.5 | 0 |
| 2026-09-18T19:59:49Z | 36571786 | 4.3 | 1 |
| 2026-09-18T20:03:00Z | 36571786 | 4.4 | 0 |
| 2026-09-18T20:50:09Z | 24a65e9c | 4.4 | 0 |
| 2026-09-18T21:32:18Z | ae275404 | 4.4 | 0 |
| 2026-09-19T01:11:44Z | e973a0cb | 4.3 | 1 |
| 2026-09-19T01:21:41Z | e973a0cb | 4.4 | 0 |
| 2026-09-21T01:07:06Z | 81caf1b6 | 4.4 | 0 |
| 2026-09-21T17:48:53Z | 26958013 | — | 1 |
| 2026-09-21T17:53:31Z | 26958013 | — | 1 |
| 2026-09-21T17:58:45Z | 26958013 | — | 0 |
| 2026-09-21T18:06:18Z | 26958013 | — | 0 |
| 2026-09-21T18:30:16Z | 45fa00e1 | — | 1 |
| 2026-09-21T18:35:08Z | 45fa00e1 | — | 1 |
| 2026-09-21T18:40:04Z | 45fa00e1 | — | 0 |
| 2026-09-23T20:27:30Z | 07419b41 | 4.4 | 0 |
| 2026-09-24T19:14:06Z | 4f85d1b0 | 4.3 | 1 |
| 2026-09-24T19:19:51Z | 4f85d1b0 | 4.3 | 0 |
| 2026-09-24T19:30:54Z | 4f85d1b0 | 4.3 | 0 |
| 2026-09-24T20:02:45Z | 0c570623 | 4.4 | 0 |
| 2026-09-24T20:10:51Z | 0c570623 | 4.4 | 0 |
| 2026-09-27T16:14:00Z | f039fa4f | 4.5 | 0 |
| 2026-09-27T18:07:41Z | e3de9681 | 4.4 | 1 |
| 2026-09-27T18:10:59Z | e3de9681 | 4.5 | 0 |
| 2026-09-27T21:46:50Z | 3127fd7b | 4.4 | 1 |
| 2026-09-27T21:51:04Z | 3127fd7b | 4.5 | 0 |
| 2026-09-27T21:57:23Z | 3127fd7b | 4.5 | 0 |
| 2026-09-27T22:14:55Z | cc09c9b2 | 4.5 | 0 |
| 2026-09-28T14:58:40Z | a33b746c | 4.4 | 1 |
| 2026-09-28T15:02:43Z | a33b746c | 4.4 | 1 |
| 2026-09-28T15:05:12Z | a33b746c | 4.5 | 0 |
| 2026-09-28T15:09:38Z | a33b746c | 4.5 | 0 |
| 2026-09-28T15:13:53Z | a33b746c | 4.5 | 0 |
| 2026-10-01T18:43:37Z | cc028921 | 4.4 | 1 |
| 2026-10-01T18:49:23Z | cc028921 | 4.5 | 0 |
| 2026-10-01T18:56:38Z | 24045659 | 4.5 | 0 |
| 2026-10-01T23:01:20Z | da658f38 | 4.5 | 0 |
| 2026-10-02T00:45:17Z | 0d31c1ef | 4.4 | 1 |
| 2026-10-02T00:48:12Z | 0d31c1ef | 4.5 | 0 |
| 2026-10-02T07:30:32Z | 654f6158 | 4.5 | 0 |
| 2026-10-02T07:40:29Z | a8b39ce4 | 4.5 | 0 |
| 2026-10-02T14:24:06Z | 2445ef49 | 4.5 | 0 |
| 2026-10-02T16:07:17Z | 1bb024e7 | 4.5 | 0 |
| 2026-10-02T16:17:38Z | 52cab77e | 4.5 | 0 |
| 2026-10-02T15:22:41Z | f4a8fce7 | 4.5 | 0 |
| 2026-10-02T17:49:29Z | 43f75a78 | 4.5 | 0 |
| 2026-10-02T18:00:54Z | c300b646 | 4.5 | 0 |
| 2026-10-02T23:38:49Z | 3867f3b3 | 4.5 | 0 |
| 2026-10-03T22:38:04Z | dc9e3952 | 4.5 | 0 |
| 2026-10-03T23:11:23Z | 203f621b | 4.5 | 0 |
| 2026-10-04T02:13:56Z | b0fa38a3 | 4.5 | 0 |
| 2026-10-04T23:19:04Z | 922d9dba | 4.5 | 0 |
| 2026-10-05T00:44:53Z | 33465c86 | 4.4 | 1 |
| 2026-10-05T00:48:04Z | 33465c86 | 4.4 | 1 |
| 2026-10-05T00:54:10Z | 33465c86 | 4.5 | 0 |
| 2026-10-05T01:31:46Z | 4b02b498 | 4.5 | 0 |
| 2026-10-05T01:41:20Z | 28c9d5cc | 4.5 | 0 |
| 2026-10-09T22:04:29Z | ef12f545 | 4.5 | 0 |
| 2026-10-09T22:47:37Z | ecfc4b68 | 4.5 | 0 |
| 2026-10-12T22:29:51Z | 638f73eb | 4.5 | 0 |
| 2026-10-12T23:03:04Z | ab3a655f | 4.4 | 1 |
| 2026-10-12T23:08:36Z | ab3a655f | 4.5 | 0 |
| 2026-10-26T13:21:54Z | 210e1e4f | 4.5 | 0 |
| 2026-10-26T14:40:18Z | e0f96608 | 4.5 | 0 |
| 2026-10-26T15:54:15Z | eaef13ee | 4.5 | 0 |
| 2026-10-26T16:18:33Z | eaef13ee | 4.5 | 0 |
| 2026-10-26T23:14:20Z | a7ec3b53 | 4.5 | 0 |
| 2026-10-27T05:37:38Z | 55b57497 | 4.5 | 0 |
| 2026-10-27T13:38:49Z | 316ae6c0 | 4.5 | 0 |
| 2026-10-27T14:46:46Z | 78e189ca | 4.5 | 0 |
| 2026-10-27T15:30:06Z | a44ed33e | 4.5 | 0 |
| 2026-10-27T16:31:05Z | 9b243d8f | 4.4 | 1 |
| 2026-10-27T16:38:27Z | 09affc24 | 4.5 | 0 |
| 2026-10-27T18:06:52Z | 9d12cd95 | 4.5 | 0 |
| 2026-10-30T18:22:51Z | 3e8b1208 | 4.5 | 0 |
| 2026-10-30T18:44:47Z | 54820009 | 4.5 | 0 |
| 2026-10-30T23:34:45Z | cf1e958a | 4.5 | 0 |
90 separate series; scans either side of a break were produced by different instruments and are reported apart. The current series is given in full, the earlier ones summarized.
This series begins at a break: the tool version, which analyzers contributed changed, so scans before this point were produced by a different instrument and cannot be joined to those after it.
Current series — 1 scan, 2026-10-30T23:34:45Z to 2026-10-30T23:34:45Z.
| Window | Scans | Direction | Change | Began at a break in |
|---|---|---|---|---|
| 2026-10-30T18:44:47Z to 2026-10-30T18:44:47Z | 1 | unknown | — | the tool version changed |
| 2026-10-27T16:31:05Z to 2026-10-30T18:22:51Z | 4 | indistinguishable | +0.10 | the tool version changed |
| 2026-10-27T13:38:49Z to 2026-10-27T15:30:06Z | 3 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-26T23:14:20Z to 2026-10-27T05:37:38Z | 2 | indistinguishable | +0.00 | the tool version, the calibration constant changed |
| 2026-10-26T15:54:15Z to 2026-10-26T16:18:33Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-26T14:40:18Z to 2026-10-26T14:40:18Z | 1 | unknown | — | the tool version changed |
| 2026-10-26T13:21:54Z to 2026-10-26T13:21:54Z | 1 | unknown | — | the tool version changed |
| 2026-10-12T23:03:04Z to 2026-10-12T23:08:36Z | 2 | indistinguishable | +0.10 | the tool version changed |
| 2026-10-12T22:29:51Z to 2026-10-12T22:29:51Z | 1 | unknown | — | the tool version changed |
| 2026-10-09T22:04:29Z to 2026-10-09T22:47:37Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-05T01:41:20Z to 2026-10-05T01:41:20Z | 1 | unknown | — | the tool version changed |
| 2026-10-05T01:31:46Z to 2026-10-05T01:31:46Z | 1 | unknown | — | which analyzers contributed changed |
| 2026-10-04T02:13:56Z to 2026-10-05T00:54:10Z | 5 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-03T22:38:04Z to 2026-10-03T23:11:23Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-02T17:49:29Z to 2026-10-02T23:38:49Z | 3 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-02T15:22:41Z to 2026-10-02T15:22:41Z | 1 | unknown | — | the tool version changed |
| 2026-10-02T16:07:17Z to 2026-10-02T16:17:38Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-10-02T07:30:32Z to 2026-10-02T14:24:06Z | 3 | indistinguishable | +0.00 | the tool version, the calibration constant changed |
| 2026-10-01T23:01:20Z to 2026-10-02T00:48:12Z | 3 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-28T14:58:40Z to 2026-10-01T18:56:38Z | 8 | indistinguishable | +0.10 | the tool version changed |
| 2026-09-27T21:57:23Z to 2026-09-27T22:14:55Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-27T18:07:41Z to 2026-09-27T21:51:04Z | 4 | indistinguishable | +0.10 | the tool version changed |
| 2026-09-27T16:14:00Z to 2026-09-27T16:14:00Z | 1 | unknown | — | the tool version changed |
| 2026-09-24T20:02:45Z to 2026-09-24T20:10:51Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-24T19:14:06Z to 2026-09-24T19:30:54Z | 3 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-23T20:27:30Z to 2026-09-23T20:27:30Z | 1 | unknown | — | the tool version, the scan scope changed |
| 2026-09-21T18:30:16Z to 2026-09-21T18:40:04Z | 3 | unknown | — | the tool version changed |
| 2026-09-21T17:48:53Z to 2026-09-21T18:06:18Z | 4 | unknown | — | the tool version, the scan scope changed |
| 2026-09-21T01:07:06Z to 2026-09-21T01:07:06Z | 1 | unknown | — | the tool version changed |
| 2026-09-19T01:11:44Z to 2026-09-19T01:21:41Z | 2 | indistinguishable | +0.10 | the tool version changed |
| 2026-09-18T21:32:18Z to 2026-09-18T21:32:18Z | 1 | unknown | — | the tool version changed |
| 2026-09-18T20:50:09Z to 2026-09-18T20:50:09Z | 1 | unknown | — | the tool version, which analyzers contributed changed |
| 2026-09-18T19:59:49Z to 2026-09-18T20:03:00Z | 2 | indistinguishable | +0.10 | the tool version changed |
| 2026-09-12T00:17:35Z to 2026-09-12T02:12:33Z | 11 | indistinguishable | +0.00 | the tool version, a delegated pillar's producer or its scoring model changed |
| 2026-09-12T00:03:02Z to 2026-09-12T00:03:02Z | 1 | unknown | — | the tool version, a delegated pillar's producer or its scoring model changed |
| 2026-09-11T23:21:19Z to 2026-09-11T23:43:19Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-11T22:43:02Z to 2026-09-11T23:05:25Z | 4 | indistinguishable | +0.00 | a delegated pillar's producer or its scoring model changed |
| 2026-09-11T21:08:33Z to 2026-09-11T21:29:07Z | 2 | indistinguishable | +0.00 | the tool version, a delegated pillar's producer or its scoring model changed |
| 2026-09-10T23:35:05Z to 2026-09-11T19:24:09Z | 26 | indistinguishable | +0.10 | the tool version changed |
| 2026-09-10T22:48:20Z to 2026-09-10T23:22:21Z | 6 | indistinguishable | +0.00 | the tool version, the configured thresholds changed |
| 2026-09-09T16:26:16Z to 2026-09-09T16:26:16Z | 1 | unknown | — | the tool version, which analyzers contributed changed |
| 2026-09-09T16:03:21Z to 2026-09-09T16:03:21Z | 1 | unknown | — | which analyzers contributed changed |
| 2026-09-09T15:57:18Z to 2026-09-09T15:57:18Z | 1 | unknown | — | which analyzers contributed changed |
| 2026-09-09T15:51:34Z to 2026-09-09T15:51:34Z | 1 | unknown | — | which analyzers contributed changed |
| 2026-09-09T15:45:03Z to 2026-09-09T15:45:03Z | 1 | unknown | — | which analyzers contributed changed |
| 2026-09-09T15:28:08Z to 2026-09-09T15:28:08Z | 1 | unknown | — | which analyzers contributed changed |
| 2026-09-08T19:04:32Z to 2026-09-08T19:04:32Z | 1 | unknown | — | the tool version changed |
| 2026-09-08T07:43:59Z to 2026-09-08T17:45:09Z | 5 | indistinguishable | +0.00 | the tool version, the calibration constant changed |
| 2026-09-07T18:48:35Z to 2026-09-08T00:14:00Z | 7 | indistinguishable | +0.00 | the tool version, which analyzers contributed changed |
| 2026-09-06T18:48:06Z to 2026-09-06T18:55:57Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-06T14:42:34Z to 2026-09-06T18:28:54Z | 9 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-05T21:35:57Z to 2026-09-06T04:02:48Z | 6 | indistinguishable | +0.00 | the tool version, which analyzers contributed, the scored languages, the scan scope changed |
| 2026-09-05T20:49:08Z to 2026-09-05T20:53:53Z | 2 | unknown | — | which analyzers contributed, the scored languages changed |
| 2026-09-05T20:44:46Z to 2026-09-05T20:44:46Z | 1 | unknown | — | the scan scope changed |
| 2026-09-05T19:52:45Z to 2026-09-05T19:52:45Z | 1 | unknown | — | the tool version changed |
| 2026-09-05T00:59:02Z to 2026-09-05T18:15:54Z | 23 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-04T22:42:23Z to 2026-09-05T00:47:24Z | 6 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-04T19:52:42Z to 2026-09-04T22:33:54Z | 16 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-04T19:08:33Z to 2026-09-04T19:08:33Z | 1 | unknown | — | the tool version changed |
| 2026-09-04T16:40:06Z to 2026-09-04T17:56:04Z | 2 | indistinguishable | +0.00 | the tool version, which analyzers contributed changed |
| 2026-09-04T07:53:46Z to 2026-09-04T07:53:46Z | 1 | unknown | — | the tool version changed |
| 2026-09-04T07:11:36Z to 2026-09-04T07:40:48Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-04T05:56:43Z to 2026-09-04T06:58:47Z | 4 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-04T04:25:28Z to 2026-09-04T05:44:00Z | 6 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-03T22:26:06Z to 2026-09-04T04:12:38Z | 11 | indistinguishable | +0.00 | the tool version, the calibration constant changed |
| 2026-09-03T16:43:03Z to 2026-09-03T19:57:41Z | 15 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-03T14:19:51Z to 2026-09-03T15:38:52Z | 5 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-03T04:32:13Z to 2026-09-03T14:04:41Z | 10 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-03T03:14:36Z to 2026-09-03T03:26:28Z | 3 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-03T01:50:55Z to 2026-09-03T01:50:55Z | 1 | unknown | — | the tool version, which analyzers contributed changed |
| 2026-09-02T21:22:31Z to 2026-09-02T21:22:31Z | 1 | unknown | — | the tool version, which analyzers contributed changed |
| 2026-09-02T20:57:23Z to 2026-09-02T20:57:23Z | 1 | unknown | — | the tool version changed |
| 2026-09-02T19:48:51Z to 2026-09-02T20:10:01Z | 4 | indistinguishable | +0.00 | which analyzers contributed changed |
| 2026-09-02T19:09:34Z to 2026-09-02T19:09:34Z | 1 | unknown | — | the tool version, which analyzers contributed changed |
| 2026-09-02T16:49:38Z to 2026-09-02T18:17:31Z | 5 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-02T15:53:44Z to 2026-09-02T16:09:57Z | 4 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-02T05:07:33Z to 2026-09-02T05:21:56Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-02T04:13:12Z to 2026-09-02T04:32:59Z | 5 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-02T03:10:30Z to 2026-09-02T03:10:30Z | 1 | unknown | — | the tool version changed |
| 2026-09-02T02:55:46Z to 2026-09-02T02:55:46Z | 1 | unknown | — | the tool version changed |
| 2026-09-02T02:37:15Z to 2026-09-02T02:37:15Z | 1 | unknown | — | the tool version changed |
| 2026-09-02T00:13:53Z to 2026-09-02T02:21:34Z | 2 | indistinguishable | +0.00 | the tool version changed |
| 2026-09-01T22:50:04Z to 2026-09-01T23:57:58Z | 4 | indistinguishable | +0.00 | the tool version, the calibration constant, which analyzers contributed, the scan scope changed |
| 2026-08-28T13:05:26Z to 2026-08-28T13:07:10Z | 3 | unknown | — | which analyzers contributed, the scan scope changed |
| 2026-08-21T18:32:29Z to 2026-08-21T18:32:29Z | 1 | unknown | — | the tool version changed |
| 2026-08-20T16:20:52Z to 2026-08-21T18:18:13Z | 27 | indistinguishable | +0.20 | the tool version changed |
| 2026-08-19T22:59:02Z to 2026-08-19T23:50:01Z | 6 | indistinguishable | +0.10 | which analyzers contributed changed |
| 2026-08-17T15:38:29Z to 2026-08-19T22:06:38Z | 48 | indistinguishable | +0.00 | the tool version, which analyzers contributed, the scored languages changed |
| 2026-08-15T20:46:31Z to 2026-08-16T06:01:10Z | 7 | indistinguishable | +0.00 | the first recorded scan |
Every figure describes scans that happened; nothing forecasts.
0 – 0 USD over 12 months (base 0 USD), across 0 work-order item(s).
This is a scenario, not a prediction.
Assumptions:
TDD-shaped tests: detected beside 136 of 171 production source files (path pairing). Constructs: pytest in 337 file(s), unittest in 5 file(s), describe_it in 25 file(s), parametrize in 107 file(s), given_when_then in 3 file(s).
Chronology is not measured. Effectiveness is unscored unless the operator opted into suite execution.
The operator opted in to running the repository's test command; it did not run (exit None).
Command: pytest -n auto --cov=maintainability_audit --cov-report=xml:coverage.xml -q
Coverage: no coverage reported by the run
Detail: the test command you consented to was recorded for another repository, and consent is per repository, so it is not run here. Reconfigure this repository to consent to its own command
Practice level 4 of 5 — CI holds a numeric quality gate.
| Pillar | Scope | Practice | Condition | Reading |
|---|---|---|---|---|
| readability | partial | 4 | 4.8 | healthy: enforced, and the code reflects it |
| maintainability | owned | 4 | 4.1 | healthy: enforced, and the code reflects it |
| efficiency | out-of-scope | — | — | not measured — see below |
| security | delegated | 5 | 5.0 | healthy: enforced, and the code reflects it; findings: no findings |
| testability | partial | 4 | 5.0 | healthy: enforced, and the code reflects it |
Not measured here, and why:
Enforcement found: linter-config, recorded-decisions, lint-in-ci, types-in-ci, duplication-in-ci, coverage-gate.
| Category | Score |
|---|---|
| modularity | 4.2 |
| reusability | 4.9 |
| analyzability | 4.4 |
| modifiability | 4.0 |
| testability | 4.8 |
| Aspect | Score |
|---|---|
| file size | 4.6 |
| declaration size | 4.3 |
| duplication | 5.0 |
| risk patterns | 5.0 |
| policy gates | 5.0 |
| test presence | 5.0 |
| dead code | 5.0 |
| near duplication | 5.0 |
| idiom consistency | 5.0 |
| documentation | 5.0 |
| churn hotspots | 4.0 |
| change coupling | 3.0 |
| knowledge concentration | 2.0 |
| test effectiveness | not measurable |
| Aspect | Why |
|---|---|
| naming quality | no static proxy survives contact; a wrong-name detector needs semantics |
| comment accuracy | comments are deliberately unparsed; staleness needs meaning, not structure |
| indirection depth | call-graph construction is not implemented for the supported languages |
| architectural coherence | no measurement distinguishes a wrong boundary from an unusual one statically |
| File | Lines | Status |
|---|---|---|
src/maintainability_audit/_prompt_sections.py | 652 | warn |
tests/test_operator_named_reads.py | 640 | warn |
src/maintainability_audit/_mcp_audit.py | 639 | warn |
src/maintainability_audit/_scan_history.py | 624 | warn |
src/maintainability_audit/_metrics_types.py | 610 | warn |
src/maintainability_audit/_analysis.py | 605 | warn |
README.md | 596 | ok |
src/maintainability_audit/cli.py | 581 | ok |
src/maintainability_audit/_discovery.py | 579 | ok |
src/maintainability_audit/_adapters.py | 576 | ok |
.github/workflows/quality-gates.yml | 574 | ok |
src/maintainability_audit/report.py | 573 | ok |
src/maintainability_audit/mcp_server.py | 565 | ok |
tools/calibration/measure.py | 565 | ok |
src/maintainability_audit/_mcp_setup.py | 558 | ok |
tests/test_adapters.py | 545 | ok |
src/maintainability_audit/_work_order.py | 544 | ok |
tests/test_docs_links.py | 524 | ok |
tests/test_mcp_server.py | 520 | ok |
src/maintainability_audit/_scan_view.py | 519 | ok |
tests/test_grammar_constructs.py | 517 | ok |
docs/roadmap.md | 515 | ok |
src/maintainability_audit/scoring.py | 510 | ok |
tests/test_calibration_corpus.py | 501 | ok |
tools/prove_falsifiers.py | 500 | ok |
| File | Declaration | Line | Lines | Complexity | Cognitive | Status |
|---|---|---|---|---|---|---|
src/maintainability_audit/_adapters.py | BaseAdapter (class) | 216 | 220 | - | - | warn |
tools/build_catalog.py | build | 335 | 36 | 15 | 0 | warn |
tests/test_docs_links.py | test_no_markdown_table_is_split_by_prose | 198 | 35 | 15 | 20 | warn |
tests/test_operator_named_reads.py | test_the_operator_read_resolves_the_name_exactly_once | 405 | 67 | 14 | 12 | warn |
src/maintainability_audit/history.py | history_section | 298 | 51 | 14 | 3 | warn |
tools/build_catalog.py | _entry | 265 | 46 | 14 | 15 | warn |
tests/_ast_reading.py | reachable_names | 203 | 44 | 14 | 17 | warn |
src/maintainability_audit/_html_view.py | _chart_sections | 209 | 39 | 14 | 4 | warn |
tests/test_identity_resolution.py | test_fail_on_new_uses_structured_matching_not_a_label_set_difference | 278 | 33 | 14 | 13 | warn |
tools/calibration/measure.py | _analyzer_row | 177 | 33 | 14 | 7 | warn |
src/maintainability_audit/_ranges_core.py | scan_bounded | 207 | 78 | 13 | 19 | warn |
src/maintainability_audit/_skill_install.py | install_skill | 48 | 67 | 13 | 13 | warn |
tests/test_git_argv.py | test_every_git_command_disables_gits_own_housekeeping | 396 | 66 | 13 | 20 | warn |
src/maintainability_audit/_prompt_sections.py | prompt_focus_sections | 477 | 61 | 13 | 3 | warn |
tests/test_language_coverage.py | test_every_parsed_language_can_reach_a_complexity_analyzer | 219 | 58 | 13 | 3 | warn |
tools/calibration/sampling_error.py | main | 110 | 56 | 13 | 10 | warn |
tools/resolve_pool.py | main | 65 | 46 | 13 | 12 | warn |
tests/test_authorship_gates.py | _step_scripts | 41 | 44 | 13 | 23 | warn |
tests/test_analysis_coverage.py | test_no_built_in_claims_to_be_unique_when_an_adapter_exists | 302 | 36 | 13 | 2 | warn |
src/maintainability_audit/duplication.py | duplicate_blocks | 50 | 35 | 13 | 10 | warn |
tests/test_ci_installs_the_analyzer_pool.py | _pip_installed_by_ci | 73 | 35 | 13 | 15 | warn |
src/maintainability_audit/_documents.py | coverage_document | 262 | 34 | 13 | 4 | warn |
src/maintainability_audit/_semantic_view.py | semantic_markdown | 36 | 33 | 13 | 12 | warn |
src/maintainability_audit/_jvm_adapters.py | _finding_of | 370 | 27 | 13 | 12 | warn |
tests/test_promises.py | _paths_the_audit_produced | 129 | 25 | 13 | 20 | warn |
tests/test_first_run_elicitation.py | _preferred_for | 255 | 18 | 13 | 14 | warn |
src/maintainability_audit/_analysis.py | analyze | 280 | 79 | 12 | 5 | warn |
src/maintainability_audit/_pressures.py | declined_dimensions | 244 | 79 | 12 | 6 | warn |
src/maintainability_audit/cli.py | main | 457 | 71 | 12 | 13 | warn |
tools/calibration/measure_cohorts.py | main | 251 | 67 | 12 | 8 | warn |
src/maintainability_audit/_masking.py | _mask_code | 68 | 47 | 12 | 20 | warn |
src/maintainability_audit/_ranges_js.py | js_declaration_ranges | 202 | 38 | 12 | 24 | warn |
src/maintainability_audit/_test_execution.py | run_test_suite | 204 | 75 | 11 | 11 | warn |
tools/calibration/measure_fix_breadth.py | main | 225 | 66 | 11 | 6 | warn |
tests/test_finding_identity.py | test_no_module_hardcodes_an_ordinal | 300 | 47 | 11 | 19 | warn |
src/maintainability_audit/_masking.py | _blank_fstring_literals | 353 | 44 | 11 | 18 | warn |
src/maintainability_audit/_ranges_fortran.py | _fortran_end | 163 | 38 | 11 | 16 | warn |
tests/test_network_disclosure.py | test_no_module_imports_an_http_client | 69 | 24 | 11 | 16 | warn |
src/maintainability_audit/_analysis.py | _attempt | 450 | 80 | 10 | 12 | warn |
tests/test_verified_grade.py | test_not_applicable_rollup_is_the_only_change_to_the_pre_stage_five_anchor | 272 | 80 | 10 | 0 | warn |
src/maintainability_audit/scoring.py | _score_document | 434 | 77 | 10 | 13 | warn |
tests/test_written_record.py | test_no_document_says_a_register_entry_is_open_that_the_register_closed | 343 | 45 | 10 | 16 | warn |
tests/test_anticipated_refusals.py | _named_exceptions | 95 | 26 | 10 | 16 | warn |
src/maintainability_audit/_prompt_sections.py | prompt_pressure_section | 359 | 66 | 9 | 5 | warn |
tests/test_docs_links.py | test_every_internal_link_resolves_to_a_file_and_an_anchor | 82 | 16 | 9 | 17 | warn |
src/maintainability_audit/_mcp_audit.py | audit_repository | 184 | 79 | 8 | 9 | warn |
src/maintainability_audit/report.py | build_report | 496 | 78 | 8 | 2 | warn |
tests/test_release_plan.py | test_the_release_plan_table_is_measured_not_remembered | 27 | 68 | 8 | 2 | warn |
tests/test_determinism.py | test_the_history_window_is_disclosed_as_clock_relative | 230 | 71 | 7 | 4 | warn |
src/maintainability_audit/_pressures.py | _declaration_pressure | 351 | 69 | 7 | 3 | warn |
Written by secure-code-agent 0.12.11 and reproduced as it wrote it. It is that tool's work order, not this one's: its findings are not re-ranked or merged into the maintainability work order above.
0 to fix · 0 to review · 6144 suppression candidates.
TypeScript semantic coverage: unknown — no recorded type analysis and no local type checker: semantic coverage for TypeScript is unknown. Absence of analysis is not absence of findings.
After Ken Pugh's AlignThree Spectables (https://alignthree.com): a test that is not written, or not run, never counts as passing, and a test that computes its own expected value is testing itself.
Read 1 .spectable file(s). Spectables, by Ken Pugh, writes and runs these specifications. Unknown types are not checked.
| Finding | Location | Evidence |
|---|---|---|
| Skipped test — never counted as passing | tests/_d231_child_probe.py:18 | @pytest.mark.skipif( |
| Skipped test — never counted as passing | tests/test_adapters.py:296 | pytest.skip( |
| Skipped test — never counted as passing | tests/test_analyzer_config_isolation.py:247 | @pytest.mark.skipif(_usable("pylint") is None, reason="pylint is not installed here") |
| Skipped test — never counted as passing | tests/test_analyzer_config_isolation.py:272 | @pytest.mark.skipif(_usable("mypy") is None, reason="mypy is not installed here") |
| Skipped test — never counted as passing | tests/test_analyzer_primary_estimate.py:155 | pytest.skip("this fixture has no declarations pressure to agree about") |
| Skipped test — never counted as passing | tests/test_analyzers_against_the_real_tools.py:24 | @pytest.mark.skipif(shutil.which("cohesion") is None, reason="cohesion is not installed here") |
| Skipped test — never counted as passing | tests/test_analyzers_against_the_real_tools.py:31 | @pytest.mark.skipif(shutil.which("interrogate") is None, reason="interrogate is not installed here") |
| Skipped test — never counted as passing | tests/test_analyzers_never_write.py:104 | @pytest.mark.skipif(_runner.locate("ruff") is None, reason="ruff is not installed here") |
| Skipped test — never counted as passing | tests/test_audit_of_3_11.py:61 | ' pytest.skip("later")', |
| Skipped test — never counted as passing | tests/test_audit_of_3_11.py:62 | " it.skip('pays', () => {", |
| Skipped test — never counted as passing | tests/test_audit_of_3_11.py:63 | " xit('pays', () => {", |
| Skipped test — never counted as passing | tests/test_audit_of_3_11.py:64 | " test.skip('pays', () => {", |
| Skipped test — never counted as passing | tests/test_authorization_freshness.py:69 | pytest.skip("this filesystem reused the inode; D79 discloses that limit") |
| Skipped test — never counted as passing | tests/test_authorization_freshness.py:203 | pytest.skip("this filesystem reused the inode; D79 discloses that limit") |
| Skipped test — never counted as passing | tests/test_checkstyle_adapter.py:267 | pytest.skip( |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:73 | pytest.skip("mypy did not run") |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:96 | pytest.skip("lizard did not run") |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:153 | pytest.skip("mypy did not run") |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:184 | pytest.skip("mypy did not run") |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:252 | pytest.skip("mypy did not run") |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:281 | pytest.skip("mypy did not run") |
| Skipped test — never counted as passing | tests/test_coverage_by_language.py:304 | pytest.skip("mypy did not run") |
| Skipped test — never counted as passing | tests/test_declarative_parsers.py:47 | pytest.skip("no declared tool uses the json-findings parser") |
| Skipped test — never counted as passing | tests/test_declarative_parsers.py:54 | pytest.skip("no declared tool uses the json-lines parser") |
| Skipped test — never counted as passing | tests/test_discovery.py:301 | pytest.skip("validation sample has not been run") |
| Skipped test — never counted as passing | tests/test_discovery.py:305 | pytest.skip(f"{name} has no recorded classifications") |
| Skipped test — never counted as passing | tests/test_evidence_properties.py:207 | pytest.skip(f"{path} is not required by default-v1") |
| Skipped test — never counted as passing | tests/test_evidence_properties.py:252 | pytest.skip(f"{path} is not required by default-v1") |
| Skipped test — never counted as passing | tests/test_evidence_properties.py:281 | pytest.skip(f"{path} is not required by default-v1") |
| Skipped test — never counted as passing | tests/test_evidence_properties.py:353 | pytest.skip(f"{path} is not required by default-v1") |
| Skipped test — never counted as passing | tests/test_exclusion_dialects.py:84 | pytest.skip(f"{slug} names files or class dirs rather than exclude flags") |
| Skipped test — never counted as passing | tests/test_exclusion_dialects.py:102 | pytest.skip(f"{slug} names files or class dirs rather than exclude flags") |
| Skipped test — never counted as passing | tests/test_exclusion_dialects.py:237 | pytest.skip("no external analyzer is installed, so there are no counts to compare") |
| Skipped test — never counted as passing | tests/test_grammar_token_coverage.py:113 | pytest.skip(f"lizard has no reader for {fixture.suffix}") |
| Skipped test — never counted as passing | tests/test_grant_only_user_tier.py:465 | pytest.skip("case-sensitive filesystem: the variant is a different path") |
| Skipped test — never counted as passing | tests/test_history_manifest.py:221 | pytest.skip("no manifest materialized in this checkout") |
| Skipped test — never counted as passing | tests/test_java_range_guard.py:34 | @pytest.mark.skipif( |
| Skipped test — never counted as passing | tests/test_no_private_names.py:143 | pytest.skip(f"no private names on this machine ({guard.DEFAULT_FILE} is absent)") |
| Skipped test — never counted as passing | tests/test_pmd_adapter.py:278 | pytest.skip(f"pmd is unavailable: {available.detail or available.outcome.value}") |
| Skipped test — never counted as passing | tests/test_population_floors.py:197 | pytest.skip(f"{population} cannot be lowered in isolation without breaking a relation") |
| Skipped test — never counted as passing | tests/test_root_grants.py:258 | pytest.skip("this mcp does not withhold crash text; the leak is its own") |
| Skipped test — never counted as passing | tests/test_rubric_ignores_project_lint_config.py:112 | pytest.skip("eslint is not available on PATH") |
| Skipped test — never counted as passing | tests/test_skipped_is_not_passing.py:27 | " pytest.skip('later')", |
| Skipped test — never counted as passing | tests/test_skipped_is_not_passing.py:47 | " return note\n# it.skip( in a comment of a source file\n", encoding="utf-8") |
| Skipped test — never counted as passing | tests/test_spectables_are_read.py:155 | "tests/test_a.py": "import pytest\n@pytest.mark.skip\ndef test_a():\n" |
| Skipped test — never counted as passing | tests/test_spotbugs_adapter.py:355 | pytest.skip(f"spotbugs unavailable: {available.detail or available.outcome.value}") |
| Skipped test — never counted as passing | tests/test_spotbugs_adapter.py:358 | pytest.skip("no working javac; live SpotBugs needs real bytecode") |
| Skipped test — never counted as passing | tests/test_tree_cannot_opt_the_host_in.py:149 | @pytest.mark.skipif(shutil.which("pylint") is None, reason="pylint is not installed") |
| Skipped test — never counted as passing | tests/test_unread_code.py:308 | pytest.skip("validation sample has not been run; see tools/validation/run_sample.py") |
| Skipped test — never counted as passing | tests/test_unread_code.py:313 | pytest.skip(f"{name} was not audited in the recorded run") |
| Skipped test — never counted as passing | tests/test_user_config_tier.py:167 | pytest.skip("permissions do not deny this process; likely running as root") |
| Skipped test — never counted as passing | tests/test_work_order.py:173 | pytest.skip("needs at least two items to compare") |
| Skipped test — never counted as passing | tests/test_work_order_selection.py:105 | pytest.skip("needs a strict subset to compare") |
| Test computes its own expected value | tests/test_readme_translations.py:44 | assert set(_language_row(text)) == LANGUAGES - {code} |