monitor/api/.phpunit.result.cache
fds2610-bot d5f7ac9f92 Klick auf den PO oeffnet den Projekte-Dialog zuverlaessig
Der Konfig-Dialog liess sich in der Praxis kaum oeffnen (Fehlerbericht in
Issue #27). Drei Ursachen, alle reproduziert:

- Ein Klick auf den PO selbst tat gar nichts: der Klick-Handler hing nur am
  Schreibtisch, die Figur liegt aber in der Avatar-Schicht darueber. Genau sie
  meint das Ticket ("bei Klick auf den PO"). Der Avatar ist jetzt klickbar,
  auch waehrend er am Board steht.
- Klicks auf den Platz trafen nur, wenn sie zufaellig auf einem gefuellten
  Moebelstueck landeten - eine <g> faengt in ihren Luecken keine Klicks. Der
  Platz hat jetzt eine eigene Trefferflaeche, wie die Board-Spalten.
- Dass hinter dem PO ueberhaupt etwas steckt, war nicht zu sehen. Ein kleines
  Zahnrad auf seinem Tisch (mit Tooltip) zeigt es an.

Ausserdem oeffnet der Dialog jetzt auch bei nicht erreichbarer API - er meldet
dann selbst, dass er die Projekte nicht laden konnte, statt tot zu wirken.

Und genau dieser Fall trat leicht ein: der eingebaute PHP-Server beantwortet
Anfragen nacheinander, eine offene SSE-Verbindung blockiert damit alles andere
(gemessen 16s fuer ein GET /api/v1/tickets, ab dem zweiten offenen Monitor
dauerhaft). Das Frontend faellt dann auf Demo-Daten zurueck. Mit
PHP_CLI_SERVER_WORKERS=4 sind es 0,006s; PRAGMA busy_timeout deckt die
Schreibzugriffe ab, die sich jetzt begegnen koennen.

ApplicationTest::testFullFlowCreateUpdateAndDeleteRepoConfigWithAdminKey war
seit dem Seed in 003_repo_configs.sql rot (legte fds2610/monitor ein zweites
Mal an) - der Test nutzt jetzt ein nicht geseedetes Repo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 22:09:31 +02:00

1 line
No EOL
19 KiB
Text

{"version":2,"defects":{"Monitor\\Api\\Tests\\Controller\\StreamControllerTest::testStreamSendsHeartbeatsWhenNothingChanges":8,"Monitor\\Api\\Tests\\Controller\\StreamControllerTest::testStreamEmitsUpdateEventWhenAResourceChangesBetweenPolls":8,"Monitor\\Api\\Tests\\Controller\\StreamControllerTest::testStreamStopsAfterMaxIterations":8,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testInactiveProjectIsNotSynced":7,"Monitor\\Api\\Tests\\ApplicationTest::testFullFlowCreateUpdateAndDeleteRepoConfigWithAdminKey":7},"times":{"Monitor\\Api\\Tests\\ApplicationTest::testUnknownRouteReturns404":0.069,"Monitor\\Api\\Tests\\ApplicationTest::testWrongMethodReturns405":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testWritingWithoutAgentKeyReturns401":0,"Monitor\\Api\\Tests\\ApplicationTest::testRegisterAgentRequiresAdminKey":0,"Monitor\\Api\\Tests\\ApplicationTest::testFullFlowRegisterAgentThenCreateTicket":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testActivityWithUnknownTicketReturns422WithoutInternals":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testPatchUnknownTicketReturns404":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testStreamRouteIsPublicAndReturnsAStreamResponse":0,"Monitor\\Api\\Tests\\Auth\\AdminAuthenticatorTest::testAuthenticateAcceptsCorrectKey":0,"Monitor\\Api\\Tests\\Auth\\AdminAuthenticatorTest::testAuthenticateRejectsWrongKey":0,"Monitor\\Api\\Tests\\Auth\\AdminAuthenticatorTest::testAuthenticateRejectsWhenNoAdminKeyConfigured":0,"Monitor\\Api\\Tests\\Auth\\AdminAuthenticatorTest::testAuthenticateRejectsMissingHeader":0,"Monitor\\Api\\Tests\\Auth\\AgentAuthenticatorTest::testAuthenticateReturnsAgentForValidKey":0.001,"Monitor\\Api\\Tests\\Auth\\AgentAuthenticatorTest::testAuthenticateReturnsNullWithoutHeader":0.001,"Monitor\\Api\\Tests\\Auth\\AgentAuthenticatorTest::testAuthenticateReturnsNullForWrongKey":0.001,"Monitor\\Api\\Tests\\Auth\\ApiKeyGeneratorTest::testGenerateProducesUnique64CharHexKeys":0,"Monitor\\Api\\Tests\\Auth\\ApiKeyGeneratorTest::testHashIsDeterministicSha256":0,"Monitor\\Api\\Tests\\ConfigTest::testDefaultsAreUsedWhenNothingConfigured":0,"Monitor\\Api\\Tests\\ConfigTest::testExplicitEnvArrayDoesNotFallBackToProcessEnvironment":0,"Monitor\\Api\\Tests\\ConfigTest::testValuesCanBeOverridden":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testRegisterRejectsMissingDisplayName":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testRegisterRejectsUnknownRole":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testRegisterReturns201WithApiKey":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testActivityRejectsMismatchedAgentId":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testActivityRejectsMissingState":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testActivityUpdatesOwnState":0,"Monitor\\Api\\Tests\\Controller\\AgentControllerTest::testIndexListsAgents":0,"Monitor\\Api\\Tests\\Controller\\EventControllerTest::testCreateRejectsMissingFields":0,"Monitor\\Api\\Tests\\Controller\\EventControllerTest::testCreateRejectsInvalidSeverity":0,"Monitor\\Api\\Tests\\Controller\\EventControllerTest::testCreateReturns201":0,"Monitor\\Api\\Tests\\Controller\\EventControllerTest::testIndexReturnsEvents":0,"Monitor\\Api\\Tests\\Controller\\KpiControllerTest::testReportRejectsMissingValue":0,"Monitor\\Api\\Tests\\Controller\\KpiControllerTest::testReportRejectsNonNumericValue":0,"Monitor\\Api\\Tests\\Controller\\KpiControllerTest::testReportReturns201WithKpi":0,"Monitor\\Api\\Tests\\Controller\\KpiControllerTest::testIndexListsKpis":0,"Monitor\\Api\\Tests\\Controller\\StreamControllerTest::testStreamSendsHeartbeatsWhenNothingChanges":0,"Monitor\\Api\\Tests\\Controller\\StreamControllerTest::testStreamEmitsUpdateEventWhenAResourceChangesBetweenPolls":0,"Monitor\\Api\\Tests\\Controller\\StreamControllerTest::testStreamStopsAfterMaxIterations":0,"Monitor\\Api\\Tests\\Controller\\SystemControllerTest::testIndexImportsLegacyStatusFile":0,"Monitor\\Api\\Tests\\Controller\\SystemControllerTest::testReportStatusRejectsInvalidStatus":0,"Monitor\\Api\\Tests\\Controller\\SystemControllerTest::testReportStatusReturnsUpdatedSystem":0,"Monitor\\Api\\Tests\\Controller\\TicketControllerTest::testIndexReturnsAllTickets":0,"Monitor\\Api\\Tests\\Controller\\TicketControllerTest::testCreateRejectsMissingTitle":0,"Monitor\\Api\\Tests\\Controller\\TicketControllerTest::testCreateReturns201WithTicket":0,"Monitor\\Api\\Tests\\Controller\\TicketControllerTest::testCreateRejectsInvalidColumnWith422":0,"Monitor\\Api\\Tests\\Controller\\TicketControllerTest::testUpdateMovesTicket":0,"Monitor\\Api\\Tests\\Controller\\TicketControllerTest::testUpdatePropagatesNotFoundForUnknownTicket":0,"Monitor\\Api\\Tests\\Db\\DatabaseTest::testMigrateCreatesAllTables":0.001,"Monitor\\Api\\Tests\\Db\\DatabaseTest::testMigrateIsIdempotent":0.001,"Monitor\\Api\\Tests\\Db\\DatabaseTest::testNowReturnsIso8601Utc":0,"Monitor\\Api\\Tests\\Http\\RequestTest::testCreateNormalizesTrailingSlash":0,"Monitor\\Api\\Tests\\Http\\RequestTest::testCreateKeepsRootPath":0,"Monitor\\Api\\Tests\\Http\\RequestTest::testHeaderLookupIsCaseInsensitive":0,"Monitor\\Api\\Tests\\Http\\RequestTest::testHeaderReturnsNullWhenMissing":0,"Monitor\\Api\\Tests\\Http\\RequestTest::testCreateStoresQueryAndBody":0,"Monitor\\Api\\Tests\\Http\\ResponseTest::testJsonResponseCarriesStatusAndBody":0,"Monitor\\Api\\Tests\\Http\\ResponseTest::testErrorResponseDefaultsToGivenStatus":0,"Monitor\\Api\\Tests\\Http\\ResponseTest::testJsonResponseIsNotAStream":0,"Monitor\\Api\\Tests\\Http\\ResponseTest::testStreamResponseExposesTheWriterWithoutBody":0,"Monitor\\Api\\Tests\\Http\\RouterTest::testMatchesStaticRoute":0,"Monitor\\Api\\Tests\\Http\\RouterTest::testExtractsPathParams":0,"Monitor\\Api\\Tests\\Http\\RouterTest::testReturnsNullForUnknownPath":0,"Monitor\\Api\\Tests\\Http\\RouterTest::testThrowsMethodNotAllowedForKnownPathWrongMethod":0,"Monitor\\Api\\Tests\\Http\\RouterTest::testCarriesAuthRequirement":0,"Monitor\\Api\\Tests\\Realtime\\ChangeFeedTest::testCurrentFingerprintCoversAllFiveResources":0,"Monitor\\Api\\Tests\\Realtime\\ChangeFeedTest::testDiffIsEmptyWithoutChanges":0,"Monitor\\Api\\Tests\\Realtime\\ChangeFeedTest::testDiffReportsOnlyTheChangedResource":0,"Monitor\\Api\\Tests\\Realtime\\ChangeFeedTest::testDiffReportsMultipleChangedResources":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testRegisterAssignsLowestFreeDesk":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testUserRoleNeverGetsADesk":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testOverflowAgentGetsNoDeskWhenAllOccupied":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testRegisterRejectsUnknownRole":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testFindByApiKeyReturnsMatchingAgent":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testFindByApiKeyReturnsNullForUnknownKey":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testUpdateActivityChangesStateAndTicket":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testUpdateActivityRejectsUnknownTicket":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testUpdateActivityThrowsForUnknownAgent":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testAllListsAgentsWithoutApiKeyHash":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testFingerprintChangesWhenAnAgentIsRegistered":0,"Monitor\\Api\\Tests\\Repository\\EventRepositoryTest::testCreateStoresEvent":0,"Monitor\\Api\\Tests\\Repository\\EventRepositoryTest::testCreateRejectsInvalidSeverity":0,"Monitor\\Api\\Tests\\Repository\\EventRepositoryTest::testLatestReturnsNewestFirst":0,"Monitor\\Api\\Tests\\Repository\\EventRepositoryTest::testLatestRespectsDefaultLimitOfFive":0,"Monitor\\Api\\Tests\\Repository\\EventRepositoryTest::testLatestClampsLimitToAtLeastOne":0,"Monitor\\Api\\Tests\\Repository\\EventRepositoryTest::testFingerprintChangesWhenAnEventIsCreated":0,"Monitor\\Api\\Tests\\Repository\\KpiRepositoryTest::testReportCreatesKpiWithCurrentValue":0,"Monitor\\Api\\Tests\\Repository\\KpiRepositoryTest::testReportAppendsHistoryAndUpdatesCurrentValue":0,"Monitor\\Api\\Tests\\Repository\\KpiRepositoryTest::testHistoryIsLimited":0,"Monitor\\Api\\Tests\\Repository\\KpiRepositoryTest::testFindReturnsNullForUnknownKey":0,"Monitor\\Api\\Tests\\Repository\\KpiRepositoryTest::testAllListsAllKpis":0,"Monitor\\Api\\Tests\\Repository\\KpiRepositoryTest::testFingerprintChangesWhenAValueIsReported":0,"Monitor\\Api\\Tests\\Repository\\LegacyStatusFileReaderTest::testReadsValidLines":0,"Monitor\\Api\\Tests\\Repository\\LegacyStatusFileReaderTest::testSkipsMalformedLines":0,"Monitor\\Api\\Tests\\Repository\\LegacyStatusFileReaderTest::testReturnsEmptyArrayForMissingFile":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testReportStatusInsertsSystem":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testReportStatusRejectsInvalidStatus":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testReportStatusUpdatesExistingSystem":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testImportLegacyRowsDoesNotOverwriteApiSourcedSystem":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testImportLegacyRowsCreatesNewLegacySystem":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testAllOrdersErrorsFirstAndLimitsToNineTiles":0,"Monitor\\Api\\Tests\\Repository\\SystemRepositoryTest::testFingerprintChangesWhenStatusIsReported":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testCreateDefaultsToBacklogColumn":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testCreateRejectsUnknownColumn":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpdateMovesTicketToAnotherColumn":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpdateRejectsUnknownColumn":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpdateThrowsNotFoundForMissingTicket":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testAllFiltersByColumn":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testAllOrdersByColumnThenCreatedAt":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpsertFromCodebergCreatesNewTicket":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpsertFromCodebergUpdatesExistingBacklogTicket":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpsertFromCodebergDoesNotResetManuallyMovedTicket":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testFingerprintChangesWhenATicketIsCreated":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testFingerprintIsStableWithoutChanges":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncCreatesBacklogAndDoneTickets":0.004,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncNormalizesLabelColorRegardlessOfLeadingHash":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncDoesNotResetManuallyMovedTicket":0.001,"Monitor\\Api\\Tests\\Sync\\CurlCodebergClientTest::testListIssuesParsesSinglePage":0.003,"Monitor\\Api\\Tests\\Sync\\CurlCodebergClientTest::testListIssuesStopsWhenPageEmpty":0,"Monitor\\Api\\Tests\\Sync\\CurlCodebergClientTest::testListIssuesSendsAuthorizationHeaderWhenTokenGiven":0,"Monitor\\Api\\Tests\\Sync\\CurlCodebergClientTest::testThrowsOnHttpError":0,"Monitor\\Api\\Tests\\ApplicationTest::testCodebergWebhookWithoutSignatureReturns401":0,"Monitor\\Api\\Tests\\ApplicationTest::testCodebergWebhookWithValidSignatureIsAccepted":0.001,"Monitor\\Api\\Tests\\Auth\\WebhookAuthenticatorTest::testAcceptsForgejoSignature":0,"Monitor\\Api\\Tests\\Auth\\WebhookAuthenticatorTest::testAcceptsGiteaSignatureHeaderForCompatibility":0,"Monitor\\Api\\Tests\\Auth\\WebhookAuthenticatorTest::testRejectsSignatureCreatedWithAnotherSecret":0,"Monitor\\Api\\Tests\\Auth\\WebhookAuthenticatorTest::testRejectsSignatureForDifferentPayload":0,"Monitor\\Api\\Tests\\Auth\\WebhookAuthenticatorTest::testRejectsRequestWithoutSignature":0,"Monitor\\Api\\Tests\\Auth\\WebhookAuthenticatorTest::testRejectsEverythingWhenNoSecretIsConfigured":0,"Monitor\\Api\\Tests\\Controller\\WebhookControllerTest::testIssueEventRequestsASync":0,"Monitor\\Api\\Tests\\Controller\\WebhookControllerTest::testPingIsAnsweredWithoutRequestingASync":0,"Monitor\\Api\\Tests\\Controller\\WebhookControllerTest::testUnknownEventStillRequestsASync":0,"Monitor\\Api\\Tests\\Sync\\SyncTriggerTest::testConsumeReportsNothingWhenNoSyncWasRequested":0,"Monitor\\Api\\Tests\\Sync\\SyncTriggerTest::testConsumeReportsRequestedSyncExactlyOnce":0,"Monitor\\Api\\Tests\\Sync\\SyncTriggerTest::testRepeatedRequestsCollapseIntoOneSync":0,"Monitor\\Api\\Tests\\Sync\\SyncTriggerTest::testRequestCreatesMissingDirectory":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testRegisterAndUpdateActivityReportFreshAgentAsPresent":0,"Monitor\\Api\\Tests\\Repository\\AgentRepositoryTest::testFindByIdReportsAgentAsAbsentAfterPresenceTimeout":0,"Monitor\\Api\\Tests\\Repository\\TicketRepositoryTest::testUpsertFromCodebergMovesTicketBetweenSyncManagedColumns":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncMapsOpenIssueLabelToBoardColumn#automate -> bereit":0.001,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncMapsOpenIssueLabelToBoardColumn#wip -> in_arbeit":0.001,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncMapsOpenIssueLabelToBoardColumn#testing -> testing":0.001,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncMovesTicketBetweenAutomatedColumnsWhenLabelChanges":0.002,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncClosesTicketFromAnyAutomatedColumnIntoDone":0.002,"Monitor\\Api\\Tests\\Sync\\SyncScheduleTest::testUsesTheRegularIntervalWhileEverythingWorks":0.001,"Monitor\\Api\\Tests\\Sync\\SyncScheduleTest::testRetriesQuicklyAfterAFailure":0,"Monitor\\Api\\Tests\\Sync\\SyncScheduleTest::testBacksOffExponentiallyWhileFailuresContinue":0,"Monitor\\Api\\Tests\\Sync\\SyncScheduleTest::testNeverWaitsLongerThanTheRegularInterval":0,"Monitor\\Api\\Tests\\Sync\\SyncScheduleTest::testSurvivesAnAbsurdNumberOfFailures":0,"Monitor\\Api\\Tests\\Sync\\SyncScheduleTest::testShortIntervalIsNotStretchedByTheRetryBase":0,"Monitor\\Api\\Tests\\ApplicationTest::testProjectListIsPublic":0,"Monitor\\Api\\Tests\\ApplicationTest::testProjectWritesRequireAdminKey#anlegen":0,"Monitor\\Api\\Tests\\ApplicationTest::testProjectWritesRequireAdminKey#aendern":0,"Monitor\\Api\\Tests\\ApplicationTest::testProjectWritesRequireAdminKey#loeschen":0,"Monitor\\Api\\Tests\\ApplicationTest::testProjectLifecycleWithAdminKey":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testTicketsOfDeactivatedProjectDisappearFromTheBoard":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testPreflightIsAnsweredWithoutAuth":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testIndexListsActiveAndInactiveProjects":0.001,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testCreateReturns201AndRequestsImmediateSync":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testCreateWithoutRepoReturns422":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testUpdateChangesColorWithoutTriggeringSync":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testReactivatingAProjectRequestsSync":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testUpdateWithUnusableColorReturns422":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testDeleteRemovesProject":0,"Monitor\\Api\\Tests\\Controller\\ProjectControllerTest::testDeleteOfUnknownProjectIsNotFound":0,"Monitor\\Api\\Tests\\Realtime\\ChangeFeedTest::testCurrentFingerprintCoversAllResources":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testCreateUsesRepoAsNameAndAssignsDefaultColor":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testCreateRequiresOwnerAndRepo":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testCreateRejectsDuplicateRepo":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testCreateNormalizesColorWithoutLeadingHash":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testCreateRejectsUnusableColor":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testUpdateChangesColorAndVisibility":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testUpdateRejectsEmptyName":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testUpdateOfUnknownProjectIsNotFound":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testAllActiveSkipsDeactivatedProjects":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testDeleteRemovesProjectWithItsTickets":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testDeleteKeepsAgentWorkingOnADeletedTicket":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testSeedFromEnvironmentAdoptsExistingCodebergTickets":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testSeedFromEnvironmentRunsOnlyOnce":0,"Monitor\\Api\\Tests\\Repository\\ProjectRepositoryTest::testFingerprintChangesWithEveryEdit":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncCoversEveryActiveProject":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testIssueNumbersOfDifferentProjectsDoNotCollide":0.001,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testInactiveProjectIsNotSynced":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testFailingProjectDoesNotStopTheOthersButIsReported":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSeedProjectIsNotRecreatedAfterDeletion":0,"Monitor\\Api\\Tests\\ApplicationTest::testRepoConfigsIndexIsPublic":0.001,"Monitor\\Api\\Tests\\ApplicationTest::testCreateRepoConfigRequiresAdminKey":0,"Monitor\\Api\\Tests\\ApplicationTest::testFullFlowCreateUpdateAndDeleteRepoConfigWithAdminKey":0.001,"Monitor\\Api\\Tests\\Controller\\RepoConfigControllerTest::testIndexReturnsEmptyListInitially":0,"Monitor\\Api\\Tests\\Controller\\RepoConfigControllerTest::testCreateReturns201WithNewRepo":0,"Monitor\\Api\\Tests\\Controller\\RepoConfigControllerTest::testCreateRejectsInvalidColorWith422":0,"Monitor\\Api\\Tests\\Controller\\RepoConfigControllerTest::testUpdateReturnsUpdatedRepo":0,"Monitor\\Api\\Tests\\Controller\\RepoConfigControllerTest::testDeleteReturnsDeletedTrue":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testAllIsEmptyWithoutConfiguredProjects":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testCreateNormalizesColorAndAppendsAtEndOfSortOrder":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testCreateRejectsMissingOwnerOrRepo":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testCreateRejectsInvalidColor":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testCreateRejectsDuplicateOwnerRepo":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testUpdateChangesFields":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testUpdateUnknownIdThrowsNotFound":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testDeleteRemovesEntry":0,"Monitor\\Api\\Tests\\Repository\\RepoConfigRepositoryTest::testDeleteUnknownIdThrowsNotFound":0,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncCreatesBacklogAndDoneTicketsColoredByProject":0.004,"Monitor\\Api\\Tests\\Sync\\CodebergSyncServiceTest::testSyncKeepsIssuesFromDifferentProjectsSeparateAndColorsThemPerProject":0.001}}