{"name":"main","updatestamp":"2026-11-11T20:19:36.540588Z","head_commit":{"commitid":"c5fb154c003f2d1f33b55c29a067f1b1897f5c08","message":"Sync checks.yml with the organisation template (#525)\n\nAfter merging, Checks runs for the same head SHA no longer cancel each\nother; only runs for an older head commit of a pull request are\ncancelled, by the new `supersede` job (netresearch/.github#593). The\n`Template drift` check passes again, because\n`.github/workflows/checks.yml` becomes a byte-identical copy of\n`templates/typo3-extension/.github/workflows/checks.yml` from\nnetresearch/.github `main`.\n\n<details>\n<summary>Why</summary>\n\nA concurrency group sees only the triggering event, not the pull\nrequest's current head, so every group rule let one run for the head SHA\ncancel or replace another, which left a failed `All security checks`\ncheck-run on the head (netresearch/.github#592). The template drops the\ngroup; the `supersede` job reads the live head and cancels only Checks\nruns of earlier head commits created before its own run.\n</details>","timestamp":"2026-11-11T20:03:23Z","ci_passed":true,"author":{"service":"github","username":"CybotTM","name":"Sebastian Mendel"},"branch":"main","totals":{"files":175,"lines":14764,"hits":14263,"misses":501,"partials":0,"coverage":96.6,"branches":0,"methods":1395,"sessions":18,"complexity":4143.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0},"state":"complete","parent":"6274a6002b94ccc3e4a4c3bf99616f7c139f7084","report":{"totals":{"files":175,"lines":14764,"hits":14263,"misses":501,"partials":0,"coverage":96.6,"branches":0,"methods":1395,"messages":0,"sessions":18,"complexity":4143.0,"complexity_total":0.0,"complexity_ratio":0,"diff":[0,0,0,0,0,null,0,0,0,0,null,null,0]},"files":[{"name":"Classes/Adapter/LocalEncryptionAdapter.php","totals":{"files":0,"lines":54,"hits":54,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Anchor/AnchorFileReader.php","totals":{"files":0,"lines":39,"hits":39,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Anchor/ChainTipAnchor.php","totals":{"files":0,"lines":25,"hits":25,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Anchor/ChainTipAnchorService.php","totals":{"files":0,"lines":209,"hits":209,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":35.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditAction.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditChainAnchor.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditChainAnchorLoad.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditChainAnchorStore.php","totals":{"files":0,"lines":197,"hits":196,"misses":1,"partials":0,"coverage":99.49,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":65.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditChainLockTrait.php","totals":{"files":0,"lines":73,"hits":73,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":27.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditChainRekeyService.php","totals":{"files":0,"lines":74,"hits":74,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditIntegrityAlert.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditIntegrityReason.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditIntegrityReport.php","totals":{"files":0,"lines":42,"hits":42,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditLogEntry.php","totals":{"files":0,"lines":58,"hits":58,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditLogFilter.php","totals":{"files":0,"lines":59,"hits":59,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditLogInputs.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditLogService.php","totals":{"files":0,"lines":600,"hits":597,"misses":3,"partials":0,"coverage":99.5,"branches":0,"methods":44,"messages":0,"sessions":0,"complexity":187.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/GenericContext.php","totals":{"files":0,"lines":12,"hits":12,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/HashChainVerificationResult.php","totals":{"files":0,"lines":46,"hits":46,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/HttpCallContext.php","totals":{"files":0,"lines":18,"hits":18,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/AuditSinkRegistry.php","totals":{"files":0,"lines":110,"hits":110,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":33.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/JsonFileAuditSink.php","totals":{"files":0,"lines":112,"hits":107,"misses":5,"partials":0,"coverage":95.53,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/Rfc5424Formatter.php","totals":{"files":0,"lines":69,"hits":69,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/SinkDeliveryState.php","totals":{"files":0,"lines":23,"hits":23,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/SinkDeliveryStateRepository.php","totals":{"files":0,"lines":52,"hits":52,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/SyslogAuditSink.php","totals":{"files":0,"lines":20,"hits":20,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/Sink/WebhookAuditSink.php","totals":{"files":0,"lines":59,"hits":59,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultAuditAnchorCommand.php","totals":{"files":0,"lines":72,"hits":69,"misses":3,"partials":0,"coverage":95.83,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultAuditCommand.php","totals":{"files":0,"lines":282,"hits":271,"misses":11,"partials":0,"coverage":96.09,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":70.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultAuditMigrateCommand.php","totals":{"files":0,"lines":123,"hits":111,"misses":12,"partials":0,"coverage":90.24,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultAuditVerifyCommand.php","totals":{"files":0,"lines":129,"hits":115,"misses":14,"partials":0,"coverage":89.14,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultBreakGlassCommand.php","totals":{"files":0,"lines":107,"hits":106,"misses":1,"partials":0,"coverage":99.06,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultCleanupOrphansCommand.php","totals":{"files":0,"lines":179,"hits":177,"misses":2,"partials":0,"coverage":98.88,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":45.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultDeleteCommand.php","totals":{"files":0,"lines":59,"hits":59,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultDoctorCommand.php","totals":{"files":0,"lines":125,"hits":125,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultInitCommand.php","totals":{"files":0,"lines":90,"hits":81,"misses":9,"partials":0,"coverage":90.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultListCommand.php","totals":{"files":0,"lines":76,"hits":76,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultMigrateFieldCommand.php","totals":{"files":0,"lines":222,"hits":219,"misses":3,"partials":0,"coverage":98.64,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultRetrieveCommand.php","totals":{"files":0,"lines":69,"hits":63,"misses":6,"partials":0,"coverage":91.3,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultRotateCommand.php","totals":{"files":0,"lines":85,"hits":78,"misses":7,"partials":0,"coverage":91.76,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultRotateMasterKeyCommand.php","totals":{"files":0,"lines":401,"hits":384,"misses":17,"partials":0,"coverage":95.76,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":77.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultScanCommand.php","totals":{"files":0,"lines":139,"hits":136,"misses":3,"partials":0,"coverage":97.84,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":37.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultSeedDemoCommand.php","totals":{"files":0,"lines":125,"hits":118,"misses":7,"partials":0,"coverage":94.4,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultStoreCommand.php","totals":{"files":0,"lines":114,"hits":107,"misses":7,"partials":0,"coverage":93.85,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/Dto/AwsSecretsConfig.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/Dto/TransitConfig.php","totals":{"files":0,"lines":34,"hits":34,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/Dto/VaultServerConfig.php","totals":{"files":0,"lines":19,"hits":19,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/ExtensionConfiguration.php","totals":{"files":0,"lines":139,"hits":137,"misses":2,"partials":0,"coverage":98.56,"branches":0,"methods":35,"messages":0,"sessions":0,"complexity":68.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/SecurityProfile.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/SiteConfigurationVaultProcessor.php","totals":{"files":0,"lines":62,"hits":61,"misses":1,"partials":0,"coverage":98.38,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":28.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/AjaxController.php","totals":{"files":0,"lines":82,"hits":78,"misses":4,"partials":0,"coverage":95.12,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":34.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/AnalyticsController.php","totals":{"files":0,"lines":61,"hits":47,"misses":14,"partials":0,"coverage":77.04,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/BreakGlassBannerProvider.php","totals":{"files":0,"lines":22,"hits":22,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/SecurityStatusProvider.php","totals":{"files":0,"lines":47,"hits":47,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/AbstractMasterKeyProvider.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/EncryptedData.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/EncryptionAlgorithm.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/EncryptionService.php","totals":{"files":0,"lines":128,"hits":115,"misses":13,"partials":0,"coverage":89.84,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":40.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/EnvelopeCodec.php","totals":{"files":0,"lines":65,"hits":65,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/EnvelopeRotationContext.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/EnvironmentMasterKeyProvider.php","totals":{"files":0,"lines":32,"hits":32,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/FileMasterKeyProvider.php","totals":{"files":0,"lines":54,"hits":52,"misses":2,"partials":0,"coverage":96.29,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":28.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/MasterKeyProviderFactory.php","totals":{"files":0,"lines":26,"hits":26,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/MasterKeyProviderRegistry.php","totals":{"files":0,"lines":25,"hits":25,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/ReEncryptedDek.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/TransitMasterKeyProvider.php","totals":{"files":0,"lines":156,"hits":147,"misses":9,"partials":0,"coverage":94.23,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":60.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/Typo3MasterKeyProvider.php","totals":{"files":0,"lines":31,"hits":31,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/MigrationResult.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/OrphanReference.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/OrphanSecretInfo.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/SecretDetails.php","totals":{"files":0,"lines":53,"hits":53,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/SecretFilters.php","totals":{"files":0,"lines":30,"hits":30,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/SecretMetadata.php","totals":{"files":0,"lines":27,"hits":27,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/StaleSecret.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/UsageBar.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Dto/VaultUsageStats.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Model/Secret.php","totals":{"files":0,"lines":177,"hits":173,"misses":4,"partials":0,"coverage":97.74,"branches":0,"methods":40,"messages":0,"sessions":0,"complexity":55.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/SecretRepository.php","totals":{"files":0,"lines":350,"hits":318,"misses":32,"partials":0,"coverage":90.85,"branches":0,"methods":26,"messages":0,"sessions":0,"complexity":83.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/StalenessRule.php","totals":{"files":0,"lines":12,"hits":12,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/AuditIntegrityAlertEvent.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/BreakGlassActivatedEvent.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/BreakGlassDeactivatedEvent.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/MasterKeyRotatedEvent.php","totals":{"files":0,"lines":10,"hits":8,"misses":2,"partials":0,"coverage":80.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/SecretAccessedEvent.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/SecretCreatedEvent.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/SecretDeletedEvent.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/SecretRotatedEvent.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/SecretUpdatedEvent.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/EventListener/AuditIntegrityAlertSinkListener.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/EventListener/TypoScriptVaultListener.php","totals":{"files":0,"lines":45,"hits":44,"misses":1,"partials":0,"coverage":97.77,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/Element/VaultSecretElement.php","totals":{"files":0,"lines":157,"hits":156,"misses":1,"partials":0,"coverage":99.36,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":52.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/DataHandlerHook.php","totals":{"files":0,"lines":346,"hits":340,"misses":6,"partials":0,"coverage":98.26,"branches":0,"methods":20,"messages":0,"sessions":0,"complexity":98.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/FlexFormVaultHook.php","totals":{"files":0,"lines":710,"hits":676,"misses":34,"partials":0,"coverage":95.21,"branches":0,"methods":39,"messages":0,"sessions":0,"complexity":214.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/PendingSecretExtractor.php","totals":{"files":0,"lines":28,"hits":28,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/PendingSecretPersister.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/RecordCreationOutcome.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/SecretTcaHook.php","totals":{"files":0,"lines":508,"hits":472,"misses":36,"partials":0,"coverage":92.91,"branches":0,"methods":29,"messages":0,"sessions":0,"complexity":172.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/VaultFailureReporter.php","totals":{"files":0,"lines":33,"hits":29,"misses":4,"partials":0,"coverage":87.87,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/Dto/FlexFormPendingSecret.php","totals":{"files":0,"lines":34,"hits":34,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/Dto/PendingSecret.php","totals":{"files":0,"lines":23,"hits":23,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/CancellableTransport.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/CurlMultiTicker.php","totals":{"files":0,"lines":3,"hits":0,"misses":3,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/DefaultDnsResolver.php","totals":{"files":0,"lines":18,"hits":18,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/SecureHttpClientFactory.php","totals":{"files":0,"lines":402,"hits":391,"misses":11,"partials":0,"coverage":97.26,"branches":0,"methods":28,"messages":0,"sessions":0,"complexity":177.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/StreamingResponseBody.php","totals":{"files":0,"lines":87,"hits":87,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":39.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/StreamingSink.php","totals":{"files":0,"lines":55,"hits":55,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/StreamingTransfer.php","totals":{"files":0,"lines":43,"hits":43,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/TransferProgress.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/VaultHttpClient.php","totals":{"files":0,"lines":535,"hits":535,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":36,"messages":0,"sessions":0,"complexity":119.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/VaultHttpClientFactory.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/VaultHttpResponse.php","totals":{"files":0,"lines":86,"hits":84,"misses":2,"partials":0,"coverage":97.67,"branches":0,"methods":22,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/OAuth/OAuthConfig.php","totals":{"files":0,"lines":30,"hits":30,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/OAuth/OAuthToken.php","totals":{"files":0,"lines":27,"hits":27,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/OAuth/OAuthTokenManager.php","totals":{"files":0,"lines":298,"hits":281,"misses":17,"partials":0,"coverage":94.29,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":81.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Http/OAuth/OAuthTokenRequestParams.php","totals":{"files":0,"lines":22,"hits":22,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Middleware/VaultOverviewModuleResolver.php","totals":{"files":0,"lines":25,"hits":25,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Secret/SecretPattern.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Secret/SecretPatternLibrary.php","totals":{"files":0,"lines":171,"hits":171,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Secret/SecretRedactor.php","totals":{"files":0,"lines":29,"hits":29,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/AccessControlService.php","totals":{"files":0,"lines":288,"hits":276,"misses":12,"partials":0,"coverage":95.83,"branches":0,"methods":31,"messages":0,"sessions":0,"complexity":123.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/BreakGlassService.php","totals":{"files":0,"lines":92,"hits":92,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/BreakGlassSession.php","totals":{"files":0,"lines":30,"hits":30,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/BreakGlassState.php","totals":{"files":0,"lines":18,"hits":18,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/FrontendPlaceholderPolicy.php","totals":{"files":0,"lines":126,"hits":115,"misses":11,"partials":0,"coverage":91.26,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":51.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/TechnicalActor.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Security/TechnicalActorContext.php","totals":{"files":0,"lines":65,"hits":65,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Seeder/AuditChainSeeder.php","totals":{"files":0,"lines":67,"hits":61,"misses":6,"partials":0,"coverage":91.04,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Seeder/DemoDataProvider.php","totals":{"files":0,"lines":52,"hits":52,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Seeder/DemoEvent.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Seeder/DemoSecretSpec.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Analytics/StalenessEvaluator.php","totals":{"files":0,"lines":23,"hits":23,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Analytics/VaultAnalyticsService.php","totals":{"files":0,"lines":150,"hits":150,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Detection/ConfigSecretFinding.php","totals":{"files":0,"lines":26,"hits":26,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Detection/DatabaseSecretFinding.php","totals":{"files":0,"lines":22,"hits":22,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/AuditCheck.php","totals":{"files":0,"lines":592,"hits":575,"misses":17,"partials":0,"coverage":97.12,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":60.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/BreakGlassCheck.php","totals":{"files":0,"lines":48,"hits":46,"misses":2,"partials":0,"coverage":95.83,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/CliAccessCheck.php","totals":{"files":0,"lines":162,"hits":160,"misses":2,"partials":0,"coverage":98.76,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/EnvironmentCheck.php","totals":{"files":0,"lines":58,"hits":55,"misses":3,"partials":0,"coverage":94.82,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/InventoryConsistencyCheck.php","totals":{"files":0,"lines":118,"hits":118,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/MasterKeyProviderCheck.php","totals":{"files":0,"lines":177,"hits":168,"misses":9,"partials":0,"coverage":94.91,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/SecretHygieneCheck.php","totals":{"files":0,"lines":77,"hits":75,"misses":2,"partials":0,"coverage":97.4,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/SecurityProfileCheck.php","totals":{"files":0,"lines":69,"hits":67,"misses":2,"partials":0,"coverage":97.1,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/SinkProbeCheck.php","totals":{"files":0,"lines":58,"hits":54,"misses":4,"partials":0,"coverage":93.1,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/Typo3VersionRange.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Check/VersionCheck.php","totals":{"files":0,"lines":101,"hits":100,"misses":1,"partials":0,"coverage":99.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/DoctorContext.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/DoctorReport.php","totals":{"files":0,"lines":49,"hits":49,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/Finding.php","totals":{"files":0,"lines":50,"hits":48,"misses":2,"partials":0,"coverage":96.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Doctor/VaultDoctorService.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SecretDetectionService.php","totals":{"files":0,"lines":210,"hits":210,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":75.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/VaultFieldPermissionService.php","totals":{"files":0,"lines":107,"hits":106,"misses":1,"partials":0,"coverage":99.06,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":38.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/VaultHealthService.php","totals":{"files":0,"lines":38,"hits":38,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/VaultHealthStatus.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/VaultService.php","totals":{"files":0,"lines":529,"hits":501,"misses":28,"partials":0,"coverage":94.7,"branches":0,"methods":36,"messages":0,"sessions":0,"complexity":150.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/TCA/VaultFieldHelper.php","totals":{"files":0,"lines":46,"hits":45,"misses":1,"partials":0,"coverage":97.82,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Task/AuditAnchorTask.php","totals":{"files":0,"lines":44,"hits":42,"misses":2,"partials":0,"coverage":95.45,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Task/AuditVerifyTask.php","totals":{"files":0,"lines":50,"hits":48,"misses":2,"partials":0,"coverage":96.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Task/OrphanCleanupTask.php","totals":{"files":0,"lines":125,"hits":125,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":39.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Upgrades/AuditHmacMigration.php","totals":{"files":0,"lines":117,"hits":106,"misses":11,"partials":0,"coverage":90.59,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Upgrades/AuditHmacMigrationWizardTrait.php","totals":{"files":0,"lines":12,"hits":6,"misses":6,"partials":0,"coverage":50.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/CsvFormulaSanitizer.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/FlexFormVaultResolver.php","totals":{"files":0,"lines":52,"hits":42,"misses":10,"partials":0,"coverage":80.76,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/IdentifierValidator.php","totals":{"files":0,"lines":68,"hits":68,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/LocalisationHelper.php","totals":{"files":0,"lines":5,"hits":5,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/TranslationSharedSecretResolver.php","totals":{"files":0,"lines":57,"hits":57,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/VaultFieldResolver.php","totals":{"files":0,"lines":74,"hits":74,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":33.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/ActiveSecretCountDataProvider.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/AuditActivityDataProvider.php","totals":{"files":0,"lines":44,"hits":44,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Configuration/SiteSecretNamespaceValidator.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/VaultMutationTransaction.php","totals":{"files":0,"lines":86,"hits":86,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":29.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/AuditSinkPublicationBuffer.php","totals":{"files":0,"lines":19,"hits":19,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/RotationGapScan.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Audit/RotationGapScanner.php","totals":{"files":0,"lines":109,"hits":102,"misses":7,"partials":0,"coverage":93.57,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":27.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/VaultRotationGapRepairCommand.php","totals":{"files":0,"lines":260,"hits":210,"misses":50,"partials":0,"coverage":80.76,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":57.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Crypto/MasterKeyFile.php","totals":{"files":0,"lines":17,"hits":16,"misses":1,"partials":0,"coverage":94.11,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}}]}}}