<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="1054" failures="0" errors="0" time="39.565374">
	<testsuite tests="26" failures="0" time="0.002000" name="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" timestamp="2026-10-24T10:57:39Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestHealthcheckSucceedsWhenHealthzAnswers200" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestHealthcheckAsksForReadiness" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestHealthcheckFailsWhenHealthzAnswersNon200" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestHealthcheckFailsWhenNothingIsListening" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestHealthcheckFallsBackToDefaultAddrWhenEnvUnset" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestBuildHandlerReadyzFollowsTheDatabase" time="3.230000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestDBReady/passes_against_a_migrated_database" time="0.110000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestDBReady/fails_once_the_connection_is_closed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestDBReady/fails_against_a_file_that_isn&#39;t_a_database" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestDBReady" time="0.110000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestLoadConfig_HyphenatedFlagsFromEnv" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestLoadConfig_LogLevelDefaultsToInfo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestLoadConfig_LogLevelFromEnv" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestLoadConfig_InvalidLogLevel" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestServeUntilDone_DrainsBeforeClosing" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestServeUntilDone_ShutdownIsBounded" time="0.300000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestLoadConfig_ShutdownFlagsFromEnv" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestLoadConfig_ShutdownDefaultsFitADockerStop" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestListenAndServe/serves_on_the_address_and_returns_nil_once_the_context_ends" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestListenAndServe/reports_an_address_it_can&#39;t_listen_on" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestListenAndServe" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestServeUntilDone_ReturnsAServeError" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestRunServe_StartsServesAndStopsOnContext" time="0.250000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestParseLogLevel/parses_a_valid_level_case-insensitively" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestParseLogLevel/rejects_an_invalid_level" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" name="TestParseLogLevel" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="15" failures="0" time="0.001000" name="github.com/alrayyes/pipeline-analytics/internal/auth" timestamp="2026-10-24T10:57:39Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FinishRegistration_UnknownCeremony" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FullCeremony/register" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FullCeremony/registering_a_second_account_is_rejected" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_Token/issues_a_token_that_authenticates,_then_revokes_it" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_AddCredential/enrolls_a_second_credential_against_the_same_account" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_Token/a_requested_lifetime_reaches_the_store_unchanged" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FullCeremony/login" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_Token/an_unknown_raw_token_does_not_authenticate" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_Token" time="0.520000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_AddCredential/rejects_revoking_the_account&#39;s_last_remaining_credential" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_AddCredential" time="0.520000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FullCeremony/a_failed_assertion_does_not_establish_a_session" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FullCeremony" time="0.520000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_FinishLogin_UnknownCeremony" time="0.300000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth" name="TestService_BeginLogin_NoUser" time="0.260000"></testcase>
	</testsuite>
	<testsuite tests="25" failures="0" time="0.002000" name="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" timestamp="2026-10-24T10:57:39Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Ceremony/round_trips_and_then_deletes" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Ceremony/an_expired_ceremony_is_not_returned" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Ceremony" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CreateUser/creates_the_first_user" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CredentialInfosAndRevoke/lists_label_and_creation_date_per_credential" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CreateUser/rejects_a_second_user" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CreateUser" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Token/an_unknown_raw_token_is_not_found" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Token/an_unset_lifetime_gets_the_default,_not_the_ceiling" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Token/a_lifetime_over_the_ceiling_is_clamped_to_it" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Token/a_requested_lifetime_under_the_ceiling_sets_the_expiry" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Token/round_trips,_is_not_recoverable_from_the_row,_and_revokes" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Session/round_trips_and_then_deletes" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Token" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Credentials/round_trips_a_stored_credential" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Session" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Credentials/updates_in_place_on_a_second_PutCredential_for_the_same_id" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_Credentials" time="0.290000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_GetUser/returns_ErrNoUser_before_any_registration" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_GetUser/returns_the_created_user" time="0.150000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_GetUser" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CredentialInfosAndRevoke/rejects_revoking_the_last_remaining_credential" time="0.140000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CredentialInfosAndRevoke/an_unknown_credential_id_is_not_found" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CredentialInfosAndRevoke/revokes_one_of_two_credentials" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" name="TestStore_CredentialInfosAndRevoke" time="0.460000"></testcase>
	</testsuite>
	<testsuite tests="9" failures="0" time="0.001000" name="github.com/alrayyes/pipeline-analytics/internal/config" timestamp="2026-10-24T10:57:39Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/a_zero_drain_period_is_allowed,_a_negative_one_is_not" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/missing_addr" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/valid_config" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/the_shutdown_timeout_must_be_positive,_or_shutdown_can_wait_forever" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/non-positive_reconcile_interval" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/encryption_key_wrong_size" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/missing_callback_url" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate/missing_db_path" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/config" name="TestValidate" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="5" failures="0" time="0.000000" name="github.com/alrayyes/pipeline-analytics/internal/crypto" timestamp="2026-10-24T10:57:39Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/crypto" name="TestRandomHex" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/crypto" name="TestEncryptDecrypt/round_trip_recovers_the_plaintext" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/crypto" name="TestEncryptDecrypt/decrypt_fails_under_the_wrong_key" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/crypto" name="TestEncryptDecrypt/rejects_a_key_of_the_wrong_size" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/crypto" name="TestEncryptDecrypt" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="15" failures="0" time="1.201000" name="github.com/alrayyes/pipeline-analytics/internal/db" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/leaves_nothing_behind_in_the_directory" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/names_the_directory_when_the_path&#39;s_parent_is_a_file" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/names_the_directory_when_it_does_not_exist" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/a_bare_file_name_checks_the_working_directory" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/says_the_directory_is_not_writable,_and_by_whom,_naming_the_directory" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/an_in-memory_database_has_no_directory_to_check" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestOpenInMemory" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir/passes_for_a_writable_directory" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestCheckDir" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestMigrate/repos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestMigrate/runs" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestMigrate/steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestMigrate/jobs" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestMigrate" time="0.170000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/db" name="TestMigrate_DedupesPreExistingRepos" time="0.180000"></testcase>
	</testsuite>
	<testsuite tests="466" failures="0" time="38.706000" name="github.com/alrayyes/pipeline-analytics/internal/httpserver" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging/a_successful_request_is_logged_at_Info" time="0.210000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging/a_handler_that_never_calls_WriteHeader_still_logs_status_200" time="0.220000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging/a_rejected_(401)_request_is_still_logged,_at_Warn" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging/a_client-error_(4xx)_request_is_logged_at_Warn" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging/a_server-error_(5xx)_request_is_logged_at_Error" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging//healthz_produces_no_log_record" time="0.170000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging/no_sensitive_data_reaches_the_log" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequestLogging" time="1.330000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/answers_200_when_the_readiness_probe_passes,_with_no_session" time="0.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/answers_503_when_the_probe_fails,_without_leaking_the_cause" time="0.080000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/is_ready_when_no_probe_is_configured" time="0.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/gives_the_probe_a_deadline,_so_a_hung_database_fails_instead_of_hanging_the_check" time="0.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/a_probe_that_outlives_its_deadline_gives_503" time="1.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/liveness_is_unaffected_by_a_failing_probe" time="0.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz/a_passing_check_produces_no_request_log_record" time="0.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz" time="1.510000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz_Draining/a_draining_instance_doesn&#39;t_probe_its_dependency" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz_Draining/liveness_stays_up_while_draining" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz_Draining" time="0.070000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz_CachesTheProbe" time="0.080000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReadyz_CacheExpiresSoARecoveryShows" time="0.090000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_LogsFailures/a_duplicate_registration_is_logged" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_LogsFailures/any_other_registration_failure_is_also_logged" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_LogsFailures" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet_LogsStoreFailures" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAuthHTTPFlow/register" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAuthHTTPFlow/registering_a_second_account_is_rejected" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRejectedRequestsAskNotToBeIndexedToo" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAuthHTTPFlow/login" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAuthHTTPFlow/logout_clears_the_session" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAuthHTTPFlow" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRunSteps" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRobotsTxtDoesNotDisallowCrawling" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetVersion" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListFlakySteps" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetFailureInsights" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPBearerTokenAuthenticates" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListUnhealthySteps" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelineFlakyRuns" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelineSteps" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelines" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPEndpointRequiresAuth" time="0.340000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolsList" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryOperationHasAnMCPTool" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListBranches" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens_StoreFailure" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokens_NotServedWithoutAStore" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestVersion" time="0.320000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_ABodyWithNoDeclaredLengthIsStillCut" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestHealthz" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths/an_identifier_past_its_limit_is_a_400" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths/a_token_past_its_limit_is_a_400" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths/an_instance_URL_past_its_limit_is_a_400" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths/a_discovery_token_past_its_limit_is_a_400" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths/a_repo_selector_past_its_limit_is_a_400" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths/values_at_the_limit_are_accepted" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_FieldLengths" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_AnOrdinaryBodyIsUnaffected" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_WebhooksAllowMoreThanTheAPIButNotUnbounded" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList_HealthFilterAndSort/an_unknown_health_value_is_a_400,_not_an_empty_list" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList_HealthFilterAndSort/the_health_filter_spans_pages:_the_match_on_the_second_page_is_found" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRuns" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList_HealthFilterAndSort/an_unknown_sort_is_a_400" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/quarantining_a_step_marks_it_for_30_days_and_the_list_reports_it" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList_HealthFilterAndSort/hasMore_is_accurate_over_the_filtered_set" time="0.490000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList_HealthFilterAndSort/sort=lastRun_orders_by_the_most_recent_run,_name_alphabetically" time="0.490000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList_HealthFilterAndSort" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/only_a_session_may_write;_a_token_can_read_the_mark" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/an_unknown_or_malformed_pipeline_is_404" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/a_step_name_with_a_slash_is_one_path_segment" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/un-quarantining_clears_it" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/quarantining_again_renews_it_and_replaces_the_note" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/the_pipeline&#39;s_step_list_reports_the_mark" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/a_note_is_at_most_500_characters" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine/a_quarantined_flaky_step_no_longer_makes_its_pipeline_unhealthy" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestQuarantine" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUnhealthySteps/no_unhealthy_steps_anywhere_reports_an_empty_list" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUnhealthySteps/requires_a_session" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUnhealthySteps/reports_only_flaky_or_failing_steps,_grouped_by_pipeline" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUnhealthySteps/paginates_with_limit_and_offset" time="0.510000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUnhealthySteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRepoUsage/a_store_failure_is_a_500_with_no_detail,_not_a_404" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRepoUsage/an_unknown_repo_is_not_found" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRepoUsage/reports_runner_minutes_broken_down_by_workflow" time="0.540000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRepoUsage" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRunSteps/returns_the_run&#39;s_own_steps" time="0.530000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRunSteps/requires_a_session" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRunSteps/an_unknown_run_is_not_found" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRunSteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineGet/an_unknown_pipeline_is_not_found" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineSteps/ranks_steps_by_duration_contribution" time="0.560000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineSteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakyRuns/a_step_with_no_failures_reports_an_empty_list" time="0.560000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineGet/returns_pipeline_detail_with_a_duration_trend" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineGet" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakyRuns/requires_a_session" time="0.490000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakyRuns/lists_only_the_runs_where_the_named_step_failed,_most-recent-first" time="0.510000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakyRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList/reports_every_pipeline&#39;s_health_status" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList/list_filters_by_the_repoId_query_param" time="0.490000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList/list_paginates_with_limit_and_offset" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineHealth_SelfHeals/once_the_failure_ages_out_of_a_narrower_window,_the_pipeline_reports_healthy_again" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineHealth_SelfHeals/the_failure_still_counts_within_a_window_wide_enough_to_include_it" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelineHealth_SelfHeals" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList/requires_a_session" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList/list_filters_by_the_forge_query_param" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList/reports_the_most_recent_run&#39;s_start_time_as_lastRunAt" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestPipelinesList" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetSettings/an_API_token_reads_them_too,_as_on_the_endpoint" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetSettings/a_build_with_no_settings_service_reports_it_instead_of_failing" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetSettings/returns_the_account&#39;s_settings_beside_the_defaults" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetSettings" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//no/such/page" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//robots.txt" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//api/no-such-endpoint" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//api/version" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//readyz" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//api/repos" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepo/returns_the_repo_with_the_token_masked" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed//healthz" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestEveryResponseAsksNotToBeIndexed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepo/an_unknown_repo_is_not_found" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepoIdentifiers/lists_a_forge&#39;s_tracked_identifiers" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepoIdentifiers/a_forge_of__is_refused_as_on_the_endpoint" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepoIdentifiers/a_forge_of_gitlab_is_refused_as_on_the_endpoint" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepoIdentifiers/no_forge_at_all_is_refused_by_the_tool&#39;s_schema" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepoIdentifiers" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepos/a_forge_filter_keeps_that_forge&#39;s_repos" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepos/offset_skips_to_the_next_repo" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepos/a_forge_filter_that_matches_nothing_returns_no_repos" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepos/limit_pages_the_list_and_reports_that_more_follow" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepos/lists_the_tracked_repos_with_the_token_masked" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListRepos" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetGitHubRateLimit/groups_the_repos_that_share_a_token,_with_its_status" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetGitHubRateLimit/a_token_never_seen_on_a_request_has_no_status_yet" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetGitHubRateLimit" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepo/a_store_failure_is_an_error,_not_a_not-found" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepo" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUnquarantineStep/an_unknown_pipeline_is_not_found" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUnquarantineStep/a_step_with_no_mark_is_fine" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUnquarantineStep/an_empty_step_is_refused" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUnquarantineStep/an_API_token_cannot_clear_a_mark_either" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUnquarantineStep/clears_the_mark" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUnquarantineStep" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepoUsage/returns_usage_for_a_tracked_repo" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepoUsage/a_store_failure_is_an_internal_error,_not_a_not-found" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelines_HealthFilterAndSort/an_unknown_health_value_is_a_tool_error,_not_an_empty_list" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelines_HealthFilterAndSort/the_sort_reaches_the_tool" time="0.030000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelines_HealthFilterAndSort/the_health_filter_reaches_the_tool,_across_pages" time="0.030000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPListPipelines_HealthFilterAndSort" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepoUsage/unknown_repo_id_is_a_tool_error" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetRepoUsage" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetPipeline/unknown_pipeline_id_is_a_tool_error,_not_a_crash" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetPipeline/returns_trend_data_for_a_tracked_pipeline" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetPipeline" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/a_key_left_out_is_left_alone" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/a_build_with_no_settings_service_says_so" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/a_key_that_is_not_a_setting_is_refused_by_the_schema,_before_the_service" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/an_API_token_may_update_them,_as_the_endpoint_allows" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/a_value_outside_the_setting&#39;s_set_is_refused" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/null_clears_a_setting_back_to_its_default" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/sets_a_value,_and_a_later_read_sees_it" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings/a_repo_selector_past_the_length_limit_is_refused_by_the_service" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUpdateSettings" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRunActionsWithoutAService/cancel_run_reports_that_run_actions_are_not_available" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRunActionsWithoutAService/rerun_run_reports_that_run_actions_are_not_available" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRunActionsWithoutAService" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPCancelRun/a_forge_with_no_actor_is_unsupported" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPCancelRun/cancels_a_run_that_has_not_concluded" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPCancelRun/a_concluded_run_is_not_actionable" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPCancelRun/an_API_token_is_refused_here_too,_before_the_forge_is_asked" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPCancelRun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRerunRun/a_token_without_Actions_write_is_forbidden" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRerunRun/an_API_token_is_not_a_session,_so_it_is_refused_before_the_forge_is_asked" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRerunRun/an_unknown_run_is_not_found" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRerunRun/a_run_that_has_not_concluded_is_not_actionable,_as_on_the_endpoint" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRerunRun/re-runs_the_failed_jobs_of_a_failed_run_through_the_same_service" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRerunRun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUntrackRepo/a_store_failure_is_an_internal_error,_not_a_not-found" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUntrackRepo/an_unknown_repo_is_not_found" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo_SavedToken/a_token_in_the_call_wins_over_the_saved_one" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo_SavedToken/with_no_token_it_uses_the_one_saved_for_the_forge,_and_never_echoes_any_token" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo_SavedToken" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUntrackRepo/an_API_token_may_untrack,_as_the_endpoint_allows" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/registers_a_repo_and_reports_it_with_the_token_masked" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUntrackRepo/removes_the_repo" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPUntrackRepo" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/an_identifier_past_the_length_limit_is_refused" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/an_API_token_may_register,_as_the_endpoint_allows" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/no_token_given_and_none_saved_says_so" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/an_archived_repo_is_refused" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/a_repo_that_is_already_tracked_is_a_conflict,_as_on_the_endpoint" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo/an_empty_identifier_is_refused_by_the_handler&#39;s_own_check" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPRegisterRepo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPDiscoverRepos/with_no_token_it_uses_the_one_saved_for_the_forge" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPDiscoverRepos/an_unknown_forge_is_refused" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPDiscoverRepos/a_forge_failure_is_reported_as_one" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPDiscoverRepos/lists_the_repos_the_token_can_reach" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPDiscoverRepos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog/a_log_the_forge_can&#39;t_give_carries_the_reason" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog/an_unexpected_reader_failure_is_a_tool_error" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog/lines_outside_1_to_1000_is_a_tool_error" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog/a_build_without_a_log_service_says_so" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog/an_unknown_job_is_a_tool_error" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog/returns_the_log_tail,_as_the_REST_endpoint_does" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPGetJobLog" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/returns_the_log_tail_from_the_forge,_ANSI_untouched" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/lines_outside_1_to_1000,_or_not_a_number,_are_rejected" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/requires_a_session" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/an_unknown_job,_or_one_from_another_run,_is_not_found" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/an_unexpected_reader_failure_is_a_500" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/a_log_the_forge_can&#39;t_give_is_a_200_with_a_reason_and_the_deep_link" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestGitHubRateLimitInsights/a_token_never_observed_on_a_real_request_has_no_status_yet" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_pipelines" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/untrack_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/register_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog/a_forge_with_no_log_reader_is_unsupported" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestJobLog" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/quarantine_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/unquarantine_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/rerun_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/discover_repos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/update_settings" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_version" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_branches" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_flaky_steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_runs" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_github_rate_limit" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_run_steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_unhealthy_steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_repo_usage" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_settings" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_repos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_job_log" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_repo_identifiers" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_pipeline" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/cancel_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_pipeline_flaky_runs" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/get_failure_insights" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI/list_pipeline_steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPToolSchemasMatchOpenAPI" time="0.830000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestGitHubRateLimitInsights/requires_a_session" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/an_API_token_is_not_a_session,_so_it_marks_nothing" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestGitHubRateLimitInsights/groups_repos_sharing_one_token,_with_its_rate-limit_status" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestGitHubRateLimitInsights" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/marks_the_step_for_30_days_with_a_note,_and_the_flaky_list_reports_it" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/an_unknown_pipeline_is_not_found" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/a_note_of_exactly_500_characters_is_accepted" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/an_empty_step_is_refused,_as_the_endpoint&#39;s_path_cannot_match_one" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/a_note_over_500_characters_is_refused_as_on_the_endpoint" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep/a_note_is_optional" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestMCPQuarantineStep" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/api/auth/register/options" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/releases" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/webhooks/github" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/readyz" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/api/version" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession/public:_/healthz" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRequireSession" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery/registering_with_no_token_uses_the_saved_one_for_the_forge" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery/no_token_and_none_saved_is_a_400_with_its_own_code" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery/a_Forgejo_token_is_looked_up_by_instance" time="0.330000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery/deleting_the_saved_token_means_asking_for_one_again" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery/a_token_in_the_request_wins_over_the_saved_one" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery/discovery_with_no_token_uses_the_saved_one" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSavedTokenUsedForRegistrationAndDiscovery" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps/requires_a_session" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps/pages_the_list" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps/the_window_bounds_which_runs_count,_and_an_unknown_one_reports_the_default" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps/an_empty_result_is_an_empty_array,_not_null" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps/a_step_that_only_ever_fails_or_only_ever_passes_isn&#39;t_listed" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps/lists_a_flaky_step_with_its_rate,_run_count_and_outcomes,_oldest_first" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFlakySteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/saves_a_token_and_returns_only_its_masked_form,_in_every_response" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/requires_a_session,_and_an_API_token_isn&#39;t_one" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/a_Forgejo_token_needs_its_instance_URL" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/deleting_removes_it,_and_an_unknown_id_is_not_found" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/rejects_a_bad_forge,_no_token_or_an_over-long_one" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/an_empty_list_is_an_empty_array,_not_null" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens/saving_again_for_the_same_forge_replaces_it" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestForgeTokens" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/requires_a_session" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/startedAt_is_an_RFC_3339_time" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/paginates_and_reports_whether_more_remain" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/an_unknown_status_is_a_400,_not_an_empty_list" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/scopes_to_one_repo_and_one_forge" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/filters_by_status_bucket" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/every_run_and_step_carries_a_normalized_outcome,_and_the_run-steps_endpoint_does_too" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/an_empty_database_is_an_empty_list,_not_null" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/omits_what_isn&#39;t_known_instead_of_sending_empty_strings_or_zero" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/each_run_carries_its_steps_in_order,_and_its_id_works_with_the_run-steps_endpoint" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/lists_runs_newest_first_with_their_commit_fields,_duration_and_forge_link" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns/a_run_with_no_steps_has_an_empty_array,_not_null" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/an_invalid_signature_is_rejected" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/a_forgejo_non-push_delivery_is_accepted_but_doesn&#39;t_trigger_a_reconciliation_poll" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/an_untracked_repo_is_rejected_the_same_way_as_a_bad_signature" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/a_forgejo_push_delivery_triggers_an_immediate_reconciliation_poll_for_the_repo" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec/theme" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec/telemetryWindow" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec/pipelinesRepoSelector" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec/pipelinesHealthFilter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec/forgeFilter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec/pipelinesSortOrder" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestUpdateSettingsSchemaMatchesSpec" time="0.830000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/the_webhook_endpoint_itself_is_public,_no_session_required" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/forgejo_delivery_uses_its_own_signature_header_and_event_header" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver/a_valid_signature_for_a_tracked_repo_is_accepted_and_updates_run_storage" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestWebhookReceiver" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/serves_a_file_with_no_compressed_copy_as_it_is" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/serves_gzip_when_brotli_is_not_accepted" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/serves_the_page_compressed_too" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/keeps_the_original_file&#39;s_content_type" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/tells_caches_the_response_depends_on_the_encoding" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/serves_brotli_to_a_client_that_takes_it" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression/serves_the_plain_file_to_a_client_that_takes_neither" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCompression" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_path_no_route_matches_answers_404_with_the_app_shell,_which_renders_the_not-found_view" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_build_with_no_route_list_keeps_serving_the_shell" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/an_unreadable_asset_answers_500_with_the_error_page_and_no_detail" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_404_with_no_app_shell_falls_back_to_the_static_not-found_page" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/an_unknown_API_path_keeps_the_JSON_error_shape" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_404_with_neither_page_still_answers_404" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_file_that_doesn&#39;t_exist_answers_404,_not_the_shell" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticServing/serves_a_real_file_directly" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticServing/api_routes_still_take_priority_over_the_static_catch-all" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_dynamic_route_matches_one_segment" time="0.850000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticServing/serves_index.html_at_the_root" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticServing/falls_back_to_index.html_for_an_unmatched_client_route" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticServing" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch/null_reverts_a_setting_to_its_default" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus/a_route_still_gets_the_app_shell" time="1.580000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticErrorStatus" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch/rejects_an_unauthenticated_request" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch/rejects_a_malformed_body" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch/rejects_an_invalid_enum_value_with_400,_leaving_the_stored_value_unchanged" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch/resets_the_three_Pipelines_filters_in_one_request" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch/updates_a_setting,_visible_on_the_next_GET" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsPatch" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsGet/carries_the_defaults,_so_a_client_never_keeps_its_own_copy" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsGet/rejects_an_unauthenticated_request" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRunsActions/a_concluded_GitHub_run_offers_a_re-run" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsGet/returns_documented_defaults_for_a_fresh_account" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestSettingsGet" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRunsActions/a_queued_GitHub_run_offers_a_cancel" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRunsActions/a_Forgejo_run_offers_nothing,_as_an_empty_list" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches/lists_branches_with_their_run_counts,_busiest_first_then_by_name" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRunsActions/a_running_GitHub_run_offers_a_cancel" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestListRunsActions" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches/no_runs_is_an_empty_list,_not_an_error" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches/an_unrecognised_window_falls_back_to_7d" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches/the_window_bounds_which_runs_count,_and_is_reported" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches/requires_a_session" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches/a_run_with_no_recorded_branch_isn&#39;t_a_branch" time="0.330000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranches" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranchFilter/a_branch_longer_than_255_characters_is_rejected,_on_every_read" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranchFilter/the_run_list_covers_only_the_chosen_branch" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticRevalidation/answers_a_matching_ETag_with_304_and_no_body" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticRevalidation" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranchFilter/flaky_steps_cover_only_the_chosen_branch" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranchFilter/a_branch_with_no_runs_is_an_empty_result,_not_an_error" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranchFilter/the_failure_insights_cover_only_the_chosen_branch" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBranchFilter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet/a_store_failure_carries_the_internal_error_body_and_no_detail" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet/rejects_an_unauthenticated_request" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet/returns_the_repo_with_its_token_masked_as_the_list_does" time="0.540000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet/an_unknown_id_is_a_404_with_the_API&#39;s_error_body" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet/a_store_failure_is_a_500,_not_a_404" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet/never_carries_the_token_itself" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposGet" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCaching/a_hashed_asset_is_cached_for_a_year_and_never_revalidated" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCaching/the_page_is_revalidated" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCaching/an_unhashed_static_file_is_revalidated" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCaching/a_client_route_served_as_the_page_is_revalidated" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestStaticCaching" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCancelRun/cancels_a_run_that&#39;s_still_running" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCancelRun/an_API_token_isn&#39;t_a_session" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCancelRun/a_run_that_has_concluded_is_not_actionable" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCancelRun/a_forge_with_no_actor_is_unsupported" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCancelRun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposUntrack/untracking_a_repo_removes_it_from_the_list" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposUntrack/a_store_failure_is_a_500_with_no_detail,_not_a_404" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposUntrack/untracking_an_unknown_repo_returns_404" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposUntrack/rejects_an_unauthenticated_request" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposUntrack" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/re-runs_only_the_failed_jobs_of_a_failed_run" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/requires_a_session,_and_an_API_token_isn&#39;t_one" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/an_unexpected_forge_failure_is_a_500" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/a_forge_with_no_actor_is_unsupported" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/an_unknown_run_is_a_404" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/a_forge_that_didn&#39;t_answer_is_a_502" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/a_token_without_Actions_write_is_forbidden" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/a_run_that_hasn&#39;t_concluded_is_not_actionable" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun/re-runs_the_whole_run_when_it_didn&#39;t_fail" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestRerunRun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/reports_run_counts_and_the_pass_rate_over_the_default_7d_window" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/reports_mean_time_to_recovery_in_seconds" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/scopes_to_one_repo" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/scopes_to_one_forge" time="0.460000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/groups_failed_steps_with_a_category,_the_stage_distribution_and_the_flaky_ratio" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/ranks_failing_pipelines_with_ids_the_pipeline_endpoints_accept" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/the_window_parameter_bounds_which_runs_count" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/absent_figures_are_omitted,_not_zero,_and_lists_are_empty_arrays,_not_null" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies/register_a_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies/the_public_registration_ceremony" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies/discover_repos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies/the_MCP_endpoint" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies/the_public_login_ceremony" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies/update_settings" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestBodyLimit_APIRoutesRejectOversizedBodies" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/requires_a_session" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/an_unrecognised_window_falls_back_to_7d,_as_the_contract_says" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights/reports_the_window_it_used:_the_requested_one,_or_the_default_when_none_or_an_unknown_one_is_given" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestFailureInsights" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposIdentifiers/returns_every_tracked_identifier_for_the_forge,_unpaginated" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposIdentifiers/rejects_an_unauthenticated_request" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_ArchivedForkMirror/an_archived_repo_is_rejected_with_409_and_a_distinct_reason" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposIdentifiers/rejects_a_missing_forge" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposIdentifiers" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_ArchivedForkMirror/a_mirror_is_rejected_with_409_and_a_distinct_reason" time="0.340000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_ArchivedForkMirror/a_normal_repo_still_registers" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_AlreadyTracked/a_duplicate_registration_does_not_create_a_second_row" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_AlreadyTracked/re-registering_the_same_forge_and_identifier_returns_409,_not_500" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_AlreadyTracked" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_ArchivedForkMirror/a_fork_is_rejected_with_409_and_a_distinct_reason" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegister_ArchivedForkMirror" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposDiscover/returns_the_repos_the_token_can_access" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposDiscover/surfaces_a_forge_error_as_502" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposDiscover/rejects_a_request_missing_the_token" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposDiscover/rejects_an_unauthenticated_request" time="0.450000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposDiscover" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/rejects_a_request_missing_required_fields" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/list_filters_by_the_forge_query_param" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/list_paginates_with_limit_and_offset" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/list_returns_every_registered_repo" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCredentialManagementHTTPFlow/listing_credentials_without_a_session_is_denied" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCredentialManagementHTTPFlow/adding_a_credential_without_a_session_is_denied" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCredentialManagementHTTPFlow/adding,_listing,_and_revoking_a_credential" time="0.050000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow/a_requested_lifetime_sets_the_expiry_the_response_reports" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow/no_body,_or_no_ttlSeconds,_gets_the_90_day_default" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestCredentialManagementHTTPFlow" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow/issuing,_using,_and_revoking_a_token" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow/a_zero_or_negative_lifetime_is_rejected_and_issues_no_token" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow/a_lifetime_over_the_ceiling_is_clamped_in_the_response" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow/issuing_a_token_without_a_session_is_denied" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestAPITokenHTTPFlow" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/rejects_an_unauthenticated_request" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/webhook_failure_registers_the_repo_as_degraded,_not_an_error_response" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList/registers_a_repo_and_returns_it_masked,_active_on_webhook_success" time="0.320000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="TestReposRegisterAndList" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzWebhookReceiver/seed#0" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzWebhookReceiver/seed#1" time="0.200000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzWebhookReceiver/seed#2" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzWebhookReceiver/seed#3" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzWebhookReceiver/seed#4" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzWebhookReceiver" time="0.950000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest/seed#0" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest/seed#1" time="0.230000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest/seed#2" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest/seed#3" time="0.220000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest/seed#4" time="0.190000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest/seed#5" time="0.180000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/httpserver" name="FuzzMCPRequest" time="1.180000"></testcase>
	</testsuite>
	<testsuite tests="86" failures="0" time="0.004000" name="github.com/alrayyes/pipeline-analytics/internal/ingestion" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_UnknownEventType" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_WorkflowJob/creates_a_run_stub_if_the_parent_run_hasn&#39;t_arrived_yet" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_WorkflowJob" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_WorkflowRun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestActionsFor/a_concluded_GitHub_run_can_be_re-run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestActionsFor/a_Forgejo_run_offers_nothing" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestActionsFor/a_GitHub_run_that_hasn&#39;t_concluded_can_be_cancelled" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileRepo/a_first_poll_backfills_runs,_jobs,_and_steps_and_persists_the_new_ETag" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestVerifySignature/rejects_a_tampered_body" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileRepo/an_unchanged_repo_makes_no_run-storage_writes" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileRepo/passes_already-stored_run_states_as_KnownRuns_on_the_next_poll" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestVerifySignature/rejects_garbage" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestActionsFor" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileRepo/a_repo_whose_forge_has_no_registered_client_is_skipped_without_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileRepo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestVerifySignature/accepts_a_valid_signature_with_the_sha256=_prefix" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestVerifySignature/accepts_a_valid_signature_with_no_prefix_(Forgejo&#39;s_format)" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Cancel/a_concluded_run_is_not_actionable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestVerifySignature/rejects_a_signature_from_the_wrong_secret" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessForgejoEvent/a_non-push_delivery_is_ignored_--_Forgejo&#39;s_webhook_only_ever_subscribes_to_push" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileRepo_SkipsUnchangedRunJobs" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestVerifySignature" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessForgejoEvent/a_push_delivery_triggers_an_immediate_reconciliation_poll" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessForgejoEvent/propagates_a_reconciliation_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Cancel/cancels_a_run_that_hasn&#39;t_concluded" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/asks_the_forge_to_re-run_the_failed_jobs_of_a_failed_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_refusal_from_the_forge_comes_through" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_token_lookup_failure_is_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_repo_lookup_failure_is_not_an_unknown_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/an_unknown_run_is_reported_as_such" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_repo_lookup_failure_is_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_forge_with_no_actor_is_unsupported" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_run_still_in_progress_is_not_actionable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Cancel" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Discover/errors_when_no_client_is_configured_for_the_forge" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileAll/one_repo&#39;s_failure_doesn&#39;t_block_reconciling_the_others" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_timed-out_run_counts_as_failed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Discover/propagates_a_forge_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun/a_run_whose_repo_is_no_longer_tracked_is_an_unknown_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/an_unknown_job_is_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_WorkflowRunCommitMetadata/stores_the_run_when_the_forge_omits_the_actor" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Discover/returns_the_repos_the_client_discovers" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_WorkflowRunCommitMetadata/records_branch,_sha,_first_message_line_and_actor" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_ReconcileAll" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_repo_or_token_lookup_failure_is_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_repo_lookup_failure_is_not_an_unknown_job" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRunActionService_Rerun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessForgejoEvent" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/any_other_reader_failure_is_an_error,_not_a_reason" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/no_lines_asked_for_means_200,_and_the_most_is_1000" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_unsupported_log_is_a_result_with_a_reason_and_the_deep_link,_not_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_forge_with_no_reader_is_unsupported" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_job_whose_repo_is_no_longer_tracked_is_an_unknown_job" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_unreachable_log_is_a_result_with_a_reason_and_the_deep_link,_not_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_forbidden_log_is_a_result_with_a_reason_and_the_deep_link,_not_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Discover" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestMaskToken/masks_entirely_when_too_short_to_reveal_a_suffix_safely" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/hands_the_reader_the_repo,_token_and_forge_job_id,_and_returns_its_lines" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestProcessGitHubEvent_WorkflowRunCommitMetadata" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestMaskToken/keeps_only_the_last_four_characters" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestMaskToken" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/webhook_creation_failure_degrades_the_repo_instead_of_failing_registration" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/a_GetRepo_failure_doesn&#39;t_block_registration_--_falls_through_to_the_usual_degrade_path" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/a_normal_repo_still_registers" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/registering_a_mirror_is_rejected,_no_record_created" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/registering_a_fork_is_rejected,_no_record_created" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/registering_an_archived_repo_is_rejected,_no_record_created" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/successful_webhook_creation_marks_the_repo_active" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/a_GetRepo_failure_with_webhook_creation_still_succeeding_leaves_the_repo_active" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register/no_client_configured_for_the_forge_degrades_the_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestRegistrar_Register" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail/a_expired_log_is_a_result_with_a_reason_and_the_deep_link,_not_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestJobLogService_Tail" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_Run/polls_immediately_and_again_on_every_tick,_until_the_context_is_done" time="0.060000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="TestReconciler_Run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzVerifySignature/seed#0" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzVerifySignature/seed#1" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzVerifySignature/seed#2" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzVerifySignature/seed#3" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzVerifySignature" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzProcessGitHubEvent/seed#0" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzProcessGitHubEvent/seed#1" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzProcessGitHubEvent/seed#2" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzProcessGitHubEvent/seed#3" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzProcessGitHubEvent/seed#4" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion" name="FuzzProcessGitHubEvent" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="41" failures="0" time="0.003000" name="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_FetchWorkflowJobsDoesNotUseGlobalDefaultHTTPClient" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestIntegration_ForgejoWebhookEvents/push_persists_as_a_subscribed_event_--_the_current_fix" time="0.900000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestIntegration_ForgejoWebhookEvents/workflow_run_and_workflow_job_silently_persist_as_zero_events_--_why_this_project_no_longer_uses_them" time="0.910000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestIntegration_ForgejoWebhookEvents" time="16.950000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_JobLogTail_Unsupported" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_CreateWebhook/sends_an_authenticated_request_creating_a_push_webhook" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListAccessibleRepos/sends_an_authenticated_request_and_returns_full_name_identifiers" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns_SkipsNullEntries/a_null_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_CreateWebhook/rejects_an_identifier_not_in_owner/name_form" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns_SkipsNullEntries/a_null_step" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_CreateWebhook/wraps_a_forge-side_failure" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_CreateWebhook" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListAccessibleRepos/follows_pagination_across_multiple_pages" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns_SkipsNullEntries/a_null_job_in_a_bare_array" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns_SkipsNullEntries/a_null_job_in_a_wrapped_response" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo/returns_a_normal_repo&#39;s_status" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListAccessibleRepos/excludes_archived,_forked,_and_mirror_repos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListAccessibleRepos/wraps_a_forge-side_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo/rejects_an_identifier_not_in_owner/name_form" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns_SkipsNullEntries" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListAccessibleRepos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo/wraps_a_forge-side_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo/reports_a_fork" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo/reports_a_mirror" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/fetches_recent_runs_with_their_jobs_and_steps_--_jobs_wrapped_in_{jobs:_[...]}" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/rejects_an_identifier_not_in_owner/name_form" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/treats_a_404_on_the_runs_endpoint_as_no_runs,_not_an_error_--_Forgejo_404s_a_repo_with_no_Actions_configured" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/wraps_a_forge-side_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/treats_a_404_on_the_jobs_endpoint_as_no_job_detail,_not_an_error_--_not_every_Forgejo_version_implements_it" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo/reports_an_archived_repo" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_GetRepo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/KnownRuns_is_ignored_--_jobs_are_still_fetched_unconditionally" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns/fetches_recent_runs_with_their_jobs_and_steps_--_jobs_as_a_bare_array_(#123)" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="TestClient_ListRecentRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses/seed#0" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses/seed#1" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses/seed#2" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses/seed#3" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses/seed#4" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses/seed#5" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" name="FuzzListRecentRunsResponses" time="0.010000"></testcase>
	</testsuite>
	<testsuite tests="63" failures="0" time="0.003000" name="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ConditionalGetDoesNotUseGlobalDefaultHTTPClient" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_KeepsItsConnectionsWhenTheDefaultTransportClosesIdleOnes" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CancelRun/posts_to_the_cancel_endpoint" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_body_cut_off_mid-stream_is_unreachable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CancelRun/a_read-only_token_is_forbidden" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CancelRun" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/follows_GitHub&#39;s_redirect_and_returns_the_last_lines,_oldest_first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/an_identifier_that_isn&#39;t_owner/name_is_rejected" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_job_id_that_can&#39;t_form_a_URL_is_an_error,_not_a_request" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_dead_forge_is_unreachable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_cut_never_splits_a_multibyte_character" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/asking_for_no_lines_still_returns_the_last_one" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_log_with_no_final_newline_and_CRLF_endings_keeps_every_line_clean" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_403_means_the_token_can&#39;t_read_it" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_401_means_the_token_can&#39;t_read_it" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_404_means_the_log_expired" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_500_means_the_forge_is_unreachable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_short_log_isn&#39;t_truncated" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_very_long_line_is_cut" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RateLimitFor/captures_the_rate-limit_headers_from_a_real_response,_per_token" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RateLimitFor" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListAccessibleRepos/follows_pagination_across_multiple_pages" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListAccessibleRepos/excludes_archived,_forked,_and_mirror_repos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListAccessibleRepos/sends_an_authenticated_request_and_returns_full_name_identifiers" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail/a_410_means_the_log_expired" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListAccessibleRepos/wraps_a_forge-side_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns_KnownRuns/skips_fetching_jobs_for_a_run_matching_KnownRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_JobLogTail" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns_KnownRuns/still_fetches_jobs_for_a_run_re-run_under_the_same_id_(completed_-&gt;_in_progress)" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CreateWebhook/rejects_an_identifier_not_in_owner/name_form" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListAccessibleRepos" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns_KnownRuns/still_fetches_jobs_for_a_run_transitioning_into_completed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/a_forge_error_is_unreachable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/a_run_the_forge_won&#39;t_re-run_is_not_actionable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CreateWebhook/sends_an_authenticated_request_creating_a_workflow_webhook" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/a_malformed_repo_identifier_is_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/an_unauthorized_token_is_forbidden" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/re-runs_the_whole_run_otherwise" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/a_read-only_token_is_forbidden" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CreateWebhook/wraps_a_forge-side_failure" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_CreateWebhook" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns_KnownRuns/still_fetches_jobs_for_a_run_whose_conclusion_differs_from_KnownRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns_KnownRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/re-runs_only_the_failed_jobs_when_asked_to" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns/wraps_an_unexpected_status_from_the_forge" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns/rejects_an_identifier_not_in_owner/name_form" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo/returns_a_normal_repo&#39;s_status" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns/sends_the_repo&#39;s_ETag_as_If-None-Match_and_reports_304_as_unmodified" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo/rejects_an_identifier_not_in_owner/name_form" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo/reports_a_mirror" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo/wraps_a_forge-side_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns/a_first_poll_(no_ETag)_fetches_runs_with_their_jobs_and_steps" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_ListRecentRuns" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo/reports_an_archived_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo/reports_a_fork" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_GetRepo" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun/a_404_reads_as_forbidden,_since_GitHub_hides_repos_a_token_can&#39;t_write" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="TestClient_RerunRun" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="FuzzListRecentRunsResponses/seed#0" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="FuzzListRecentRunsResponses/seed#1" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="FuzzListRecentRunsResponses/seed#2" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="FuzzListRecentRunsResponses/seed#3" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" name="FuzzListRecentRunsResponses" time="0.010000"></testcase>
	</testsuite>
	<testsuite tests="62" failures="0" time="0.006000" name="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListReposForgeFilter" time="0.510000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_DeleteRepo_UnknownRepo" time="0.570000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_DeleteRepo" time="0.490000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_SetIngestionStatus" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_SetReconcileETag" time="0.480000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_SetReconcileETag_UnknownRepo" time="0.630000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RepoToken" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunByID/returns_what_an_action_needs" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunByID/an_unknown_id_is_ErrRunNotFound" time="0.360000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunByID" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/saving_again_for_the_same_forge_replaces_it,_keeping_one_row" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/deleting_a_saved_token_leaves_a_registered_repo&#39;s_own_copy_working" time="0.330000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/Forgejo_tokens_are_per_instance,_and_a_trailing_slash_is_the_same_instance" time="0.440000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/an_instance_URL_means_nothing_for_GitHub" time="0.320000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/no_token_saved_is_not_found" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_LocateJob/a_job_under_another_run_is_not_found" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_LocateJob/an_unknown_job_is_not_found" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/deleting_removes_it,_and_an_unknown_id_is_not_found" time="0.350000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun/updates_the_same_run_on_a_second_delivery" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListAndGetRepo/list_includes_the_created_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun/creates_a_new_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/never_keeps_the_token_in_the_clear" time="0.280000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_LocateJob/finds_a_job_by_its_run_and_id" time="0.030000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListRepoIdentifiers/scopes_to_the_forge_and_instance_URL" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun" time="0.550000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListRepoIdentifiers/a_different_instance_URL_sees_nothing" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo_AlreadyTracked_Forgejo/same_identifier_on_a_different_instance_URL_is_not_a_duplicate" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo_AlreadyTracked_Forgejo/same_forge,_identifier,_and_instance_URL" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_LocateJob" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListAndGetRepo/get_returns_the_same_repo" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListRepoIdentifiers/returns_every_identifier_for_the_forge,_unpaginated" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo_AlreadyTracked/same_forge_and_identifier,_both_GitHub_(no_instance_URL)" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo_AlreadyTracked/same_identifier_on_a_different_forge_is_not_a_duplicate" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunStates/doesn&#39;t_include_another_repo&#39;s_runs" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertJobAndReplaceSteps/creates_then_updates_the_same_job" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListAndGetRepo" time="0.600000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo_AlreadyTracked_Forgejo" time="0.520000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListRepoIdentifiers" time="0.530000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo_AlreadyTracked" time="0.600000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunStates/a_repo_with_no_runs_returns_an_empty_map" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun_CommitMetadata/persists_the_commit_fields" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunStates/returns_every_stored_run_for_the_repo,_keyed_by_forge_run_id" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RunStates" time="0.490000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertJobAndReplaceSteps/replace_steps_overwrites_the_previous_set" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListReposPagination/limit_trims_the_page_and_reports_more_remain" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertJobAndReplaceSteps" time="0.540000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun_CommitMetadata/stores_null,_not_empty_strings,_when_the_forge_omits_them" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListReposPagination/no_limit_returns_every_repo_unpaginated" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RepoByIdentifier/finds_the_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RepoByIdentifier/not_found_for_a_different_forge" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo/stores_the_token_encrypted,_not_in_plaintext" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo/generates_a_per-repo_webhook_secret" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo/starts_pending" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo/returns_a_masked_token,_never_the_raw_value" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListReposPagination/offset_returns_the_next_page" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_CreateRepo" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_RepoByIdentifier" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ListReposPagination" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun_CommitMetadata/a_later_delivery_without_commit_fields_keeps_the_stored_ones" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_UpsertRun_CommitMetadata" time="0.410000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens/saves_a_token_and_reads_it_back_for_the_same_forge" time="0.280000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" name="TestStore_ForgeTokens" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="165" failures="0" time="0.012000" name="github.com/alrayyes/pipeline-analytics/internal/metrics" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_FlakyStepRatio" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_FlakyList/a_quarantined_step_stays_listed_with_every_figure_unchanged" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_FlakyList/and_reports_the_mark" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_FlakyList" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseHealthFilter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParsePipelineSort" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf_AgreesWithTheFailureInsights" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParsePipelineID_Invalid" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestPipelineRef_IDRoundTrip" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_ReportsItsWindow" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListBranches_StoreError" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListBranches" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestRunEntry_DurationSeconds/is_absent_while_the_run_is_still_going" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestRunEntry_DurationSeconds/is_absent_for_a_run_that_never_started" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseRunStatus/empty_means_all,_the_contract&#39;s_default" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestRunEntry_DurationSeconds/is_the_span_between_start_and_completion" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestRunEntry_DurationSeconds" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Steps/the_unhealthy-steps_overview_leaves_out_a_quarantined_flaky_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseRunStatus/anything_else_is_rejected,_not_coerced" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseRunStatus" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Steps/the_pipeline&#39;s_step_list_carries_the_mark_and_keeps_the_figures" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_Sort/with_a_health_filter,_the_matches_are_sorted_then_paged" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_Sort/lastRun_puts_the_most_recently_run_first_and_a_pipeline_with_no_runs_last" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_HealthFilter/returns_only_the_matching_pipelines,_from_the_whole_set" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_HealthFilter/healthy_pages_hold_their_full_size_over_the_filtered_set" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_HealthFilter/an_offset_past_the_matches_is_an_empty_page,_not_an_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_HealthFilter/composes_with_the_repo_filter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_HealthFilter/a_match_on_a_later_page_is_found,_and_every_page_but_the_last_is_full" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_HealthFilter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_Sort/name_is_the_default_order" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Health/a_mark_on_another_pipeline&#39;s_step_of_the_same_name_does_nothing" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Health/failures_still_count:_the_failure-rate_signal_survives_a_quarantine" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/queued_with_no_conclusion_is_queued" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Health/a_quarantined_flaky_step_no_longer_raises_the_signal" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_status_we_don&#39;t_recognise_is_unknown" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/matching_is_exact:_an_upper-case_conclusion_isn&#39;t_recognised" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_conclusion_we_don&#39;t_recognise_is_unknown:_neutral" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_conclusion_we_don&#39;t_recognise_is_unknown:_action_required" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/completed_with_no_conclusion_is_unknown,_not_passed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_conclusion_wins_over_a_stale_in_progress_status:_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/requested_is_queued" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/pending_is_queued" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/nothing_at_all_is_unknown" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_conclusion_wins_over_a_stale_in_progress_status:_success" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/in_progress_with_no_conclusion_is_running" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_skipped_conclusion_is_skipped" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/waiting_is_queued" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_cancelled_conclusion_is_cancelled" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_timeout_failed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_failure_failed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetRepoUsage/reports_runner_minutes_broken_down_by_workflow,_highest_first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetRepoUsage" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListUnhealthySteps/paginates_over_pipeline_groups_with_an_unhealthy_step,_not_every_candidate_pipeline" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/an_empty_name" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/nothing_matches" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_hyphenated_name_splits_into_words" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/author_isn&#39;t_auth" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/plurals_match_their_stem" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_keyword_inside_another_word_doesn&#39;t_match" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/credentials_win_over_test_in_the_name" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/latest_isn&#39;t_test" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_cache_restore_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/matching_ignores_case" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_runner_setup_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_dependency_install_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/an_image_pull_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_credentials_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_registry_login_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/an_end-to-end_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_test_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_timed-out_step_is_a_timeout_whatever_it&#39;s_called" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListUnhealthySteps/no_unhealthy_steps_anywhere_reports_an_empty_list" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure/a_lint_step" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf/a_successful_conclusion_passed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakyRuns/only_the_step&#39;s_failed_occurrences_show,_most-recent-first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestOutcomeOf" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetRunSteps/returns_the_run&#39;s_own_steps_in_recorded_order" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakyRuns/an_invalid_pipeline_id_is_rejected" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakyRuns/a_step_with_no_failures_in_the_window_reports_an_empty_list" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakyRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetRunSteps/an_unknown_run_is_not_found" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetRunSteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipelineSteps/ranks_steps_by_duration_contribution,_highest_first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipelineSteps/a_step_that_alternates_pass_and_fail_is_flaky,_distinct_from_one_that_always_fails" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipeline/a_pipeline_with_no_run_history_is_not_found" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestInsightWindow_Label/an_omitted_or_unrecognised_window_labels_as_the_default,_so_a_client_can_show_what_was_used" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipelineSteps/separates_queue_time_(the_job&#39;s_wait)_from_execution_time_(the_step&#39;s_own_run)" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipelineSteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestInsightWindow_Label" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipeline/an_invalid_pipeline_id_is_rejected" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipeline/returns_a_duration_and_failure-rate_trend_with_real_data_points" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FailureGroups/groups_are_ordered_by_occurrences,_highest_first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetPipeline" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_Sort/the_sort_applies_across_pages,_not_within_one" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines_Sort" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FailureGroups/a_step_no_rule_recognises_is_uncategorised" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FailureGroups/the_most_common_conclusion_drives_the_category" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseWindow/empty_falls_back_to_the_default_run_count" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FailureGroups/groups_a_step_across_pipelines_with_its_occurrences_and_affected_pipelines" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FailureGroups" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseWindow/garbage_falls_back_to_the_default" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FlakyStepRatio/the_same_step_name_in_two_pipelines_is_two_steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseWindow/a_positive_integer_is_a_run_count" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseWindow" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FlakyStepRatio/no_steps_gives_zero,_not_a_division_error" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines/an_elevated_recent_failure_rate_is_flagged" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines/the_filter_and_its_hasMore_reach_through_to_the_store" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines/LastRunAt_is_the_most_recent_run&#39;s_start_time" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines/a_flaky_step_is_flagged_even_when_runs_all_pass" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines/a_significant_duration_regression_is_flagged" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines/a_pipeline_with_a_low_failure_rate_and_no_flaky_steps_is_healthy" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FlakyStepRatio/a_step_that_both_passed_and_failed_is_flaky;_the_ratio_is_flaky_steps_over_distinct_steps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_StageDistribution/counts_failed_steps_by_name,_highest_first,_ignoring_passes_and_skips" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListPipelines" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_StageDistribution/steps_from_the_preceding_window_are_not_counted" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_StageDistribution/a_timed-out_step_counts_as_a_failure" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow/&#34;12&#34;" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow/&#34;30d&#34;" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_Shares/the_category_breakdown_counts_occurrences,_not_groups,_heaviest_first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestCategorizeFailure" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_Shares/nothing_failed_gives_empty_lists,_not_zero_shares" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_FlakyStepRatio" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_Shares/a_timeout_counts_under_network_and_timeouts" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow/&#34;banana&#34;" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_Shares/each_failing_step&#39;s_share_is_its_failures_over_all_failures,_and_they_sum_to_1" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow/&#34;7d&#34;" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow/&#34;&#34;" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_Shares/equal_categories_order_by_name_so_the_result_is_stable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_Shares" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/scopes_to_one_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/counts_runs_and_computes_the_pass_rate_over_concluded_runs_only" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_StageDistribution/equal_counts_order_by_step_name,_so_the_result_is_stable" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow/&#34;24h&#34;" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/ranks_pipelines_by_failed_runs,_highest_first,_omitting_ones_that_never_failed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/an_empty_preceding_window_leaves_the_delta_absent,_not_the_full_rate" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/a_timed-out_run_counts_as_failed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/no_concluded_runs_in_the_window_leaves_the_pass_rate_absent" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Health/a_flaky_step_that_is_not_quarantined_makes_the_pipeline_unhealthy" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_Quarantine_Health" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/runs_given_newest-first_are_ordered_before_pairing" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/a_pipeline_that_only_passed_has_no_MTTR" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/cancelled_and_running_runs_neither_break_nor_end_an_outage" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/a_failure_that_never_recovered_contributes_nothing" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/averages_across_recoveries,_and_across_pipelines" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/repeated_failures_count_from_the_first_one" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/recent_outcomes_run_oldest_first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/pages_the_ranked_list_and_says_whether_more_follow" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/the_same_step_name_in_two_pipelines_is_two_entries" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/no_flaky_steps_is_an_empty_list" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/keeps_only_the_40_most_recent_outcomes,_counting_every_run" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListUnhealthySteps/only_flaky_or_failing_steps_show,_grouped_by_pipeline" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListRuns/passes_the_filter_through_and_returns_the_page_with_its_has-more_flag" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_StageDistribution" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestParseInsightWindow" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListRuns" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListUnhealthySteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/reports_the_flake_rate_and_run_count" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/lists_only_steps_that_both_passed_and_failed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps/ranks_by_flake_rate,_then_run_count,_then_pipeline_and_step_name" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_ListFlakySteps" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR/a_failure_fixed_by_the_next_success_contributes_the_gap_between_them" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights_MTTR" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights/reports_the_pass-rate_change_versus_the_preceding_window_in_percentage_points" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics" name="TestService_GetFailureInsights" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="47" failures="0" time="0.004000" name="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_RepoUsage" time="0.700000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_RunSteps/an_unknown_run_returns_an_empty_slice" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesPagination/no_limit_returns_every_pipeline_unpaginated" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesPagination/offset_returns_the_next_page" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesPagination/limit_trims_the_page_and_reports_more_remain" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesPagination" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_RunSteps/returns_the_run&#39;s_own_steps,_tagged_with_the_run_they_belong_to" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_RunSteps" time="0.430000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_PipelineRuns/returns_runs_most-recent-first" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_PipelineRuns/respects_the_window&#39;s_run_count" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_PipelineRuns/a_pipeline_with_no_runs_returns_an_empty_slice" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowBranches/counts_runs_per_branch_in_the_window,_busiest_first_then_by_name,_skipping_runs_with_no_branch" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowBranches/scopes_to_a_repo_and_a_forge,_and_ignores_a_branch_filter" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowBranches" time="0.520000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowRuns/returns_runs_started_within_[since,_until)_with_their_pipeline" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_PipelineRuns" time="0.500000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowRuns/filters_by_forge" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowRuns/filters_by_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowRuns/the_upper_bound_is_exclusive" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowRuns" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/lists_newest_first,_with_a_run_that_hasn&#39;t_started_yet_before_the_rest" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/filters_by_repo_and_forge" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/paginates_and_reports_whether_more_remain" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/a_run_with_no_recorded_steps_has_an_empty,_non-nil_step_list" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/attaches_each_run&#39;s_steps_in_job_order" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/success_covers_only_successful_conclusions" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/running_covers_every_run_that_hasn&#39;t_completed" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_PipelineSteps" time="0.470000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/leaves_commit_fields_empty_when_the_run_has_none" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/failed_covers_failure_and_timed_out,_nothing_else" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns/carries_the_run&#39;s_pipeline,_commit_fields_and_forge_link" time="0.010000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListRuns" time="0.610000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowSteps/excludes_steps_of_runs_outside_the_window" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowSteps/returns_steps_of_runs_started_in_[since,_until)_with_their_pipeline" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowSteps/filters_by_repo_and_forge" time="0.020000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_WindowSteps" time="0.610000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelines" time="0.420000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine/a_step_is_one_name_within_one_pipeline" time="0.380000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine/un-quarantining_removes_it,_and_is_fine_when_there_is_none" time="0.390000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine/marking_again_renews_it_and_replaces_the_note" time="0.400000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesFilters/repoId_restricts_the_list_to_one_tracked_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesFilters/forge_restricts_the_list_via_the_owning_repo" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_ListPipelinesFilters" time="0.320000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine/the_instant_of_expiry_is_already_inactive" time="0.370000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine/a_quarantined_step_is_active_for_30_days_from_the_mark" time="0.220000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine/an_expired_mark_behaves_as_if_it_was_never_set" time="0.240000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" name="TestStore_Quarantine" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="21" failures="0" time="0.001000" name="github.com/alrayyes/pipeline-analytics/internal/settings" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_ResetPipelinesFilters" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestAllowedValues/lists_a_closed_setting&#39;s_values" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestUpdate_RepoSelectorLength/one_past_it_is_rejected,_and_nothing_changes" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestUpdate_RepoSelectorLength/a_selector_at_the_limit_is_accepted" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Get/returns_a_stored_override_merged_onto_the_remaining_defaults" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestUpdate_RepoSelectorLength" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestAllowedValues/a_caller_cannot_change_what_the_package_accepts_by_editing_the_result" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestAllowedValues/a_setting_with_no_closed_set_has_none" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Get/returns_documented_defaults_when_nothing_has_ever_been_set" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Get" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestAllowedValues" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/the_telemetry_window_defaults_to_7d_and_accepts_24h,_7d_and_30d" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/an_invalid_value_in_a_multi-key_request_rejects_the_whole_request" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/a_free-form_value_(PipelinesRepoSelector)_isn&#39;t_validated_against_an_enum" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/multiple_keys_in_one_request_all_apply_together" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/an_unrecognized_key_is_rejected" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/an_invalid_enum_value_is_rejected_and_leaves_the_stored_value_unchanged" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/a_telemetry_window_outside_the_documented_set_is_rejected,_leaving_the_stored_one" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/nil_clears_a_key_back_to_its_default" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update/a_value_is_visible_on_the_next_Get,_from_any_caller" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings" name="TestService_Update" time="0.000000"></testcase>
	</testsuite>
	<testsuite tests="8" failures="0" time="0.003000" name="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Patch/sets_a_new_key" time="0.660000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Patch/a_nil_value_clears_the_key_entirely" time="0.670000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Patch/updates_an_existing_key_without_disturbing_others" time="0.680000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Patch/persists_across_a_fresh_Get,_not_just_the_Patch_return_value" time="0.690000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Patch" time="0.000000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Get/a_user_with_no_settings_row_yet_returns_an_empty_map,_not_an_error" time="0.260000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Get/returns_whatever_was_previously_patched" time="0.270000"></testcase>
		<testcase classname="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" name="TestStore_Get" time="0.010000"></testcase>
	</testsuite>
	<testsuite tests="0" failures="0" time="0.139000" name="github.com/alrayyes/pipeline-analytics/internal/webassets" timestamp="2026-10-24T10:57:40Z">
		<properties>
			<property name="go.version" value="go1.27.2 linux/amd64"></property>
		</properties>
	</testsuite>
</testsuites>