187 references to ValidationException
AnalyzeCiFailure (180)
AnalysisCommands.cs (7)
74throw new ValidationException("--github-output must name a nonempty file path."); 79throw new ValidationException("--github-output must name a file, not a directory."); 187throw new ValidationException("--analysis-dir must not be empty"); 201throw new ValidationException($"Invalid path: {ex.Message}"); 206=> string.IsNullOrEmpty(path) ? throw new ValidationException("--evidence-dir is required for this command.") 220throw new ValidationException("--history-dir must be outside the evidence and proposal input directories."); 247throw new ValidationException("History checkout path contains a symbolic-link cycle.");
AnalysisInvocation.cs (1)
38throw new ValidationException("Invocation paths must not contain newlines.");
AnalysisPublicationQueries.cs (4)
23throw new ValidationException($"Failed to load {state} cause issues: {ex.Message}"); 41throw new ValidationException($"Unable to determine whether PR #{pr} is actionable: {ex.Message}"); 46throw new ValidationException($"Unable to determine whether PR #{pr} is actionable"); 61throw new ValidationException($"Failed to list existing analysis comments: {ex.Message}");
AnalysisPublisher.cs (15)
49throw new ValidationException("Invalid publication repository"); 57throw new ValidationException("Invalid observation timestamp"); 137existing = Read(path) as JsonObject ?? throw new ValidationException($"Stored cause is not readable: {cause.FileName}"); 140throw new ValidationException($"Stored cause type is not readable: {cause.FileName}"); 142var stored = ToContract<PriorCauseRecord>(existing) ?? throw new ValidationException($"Stored cause is not readable: {cause.FileName}"); 147throw new ValidationException($"Stored cause ID must match its filename: {cause.FileName}"); 153throw new ValidationException($"New cause ID already exists in fresh history: {cause.FileName}"); 158throw new ValidationException($"Existing cause is missing from fresh history: {cause.FileName}"); 161?? throw new ValidationException($"New cause is missing its definition: {cause.FileName}"); 183throw new ValidationException("Linked cause issue detail does not match the cause; review its destination before retrying"); 199throw new ValidationException("Cause issue detail lookup returned invalid results"); 205throw new ValidationException("Cause issue detail lookup returned invalid results"); 209throw new ValidationException($"Cause {cause.Id} destination is locked; review its destination before retrying"); 213throw new ValidationException($"Cause {cause.Id} destination is closed as a duplicate; review its destination before retrying"); 616throw new ValidationException(createsComment
AnalysisPublisher.Overflow.cs (4)
28throw new ValidationException("Multiple aggregate issues identify this source run."); 41throw new ValidationException("Stored aggregate issue link conflicts with the source run."); 51throw new ValidationException("Aggregate issue destination is not a uniquely identified, unlocked automation issue."); 76throw new ValidationException("Aggregate continuation ownership or page identity is ambiguous.");
AnalysisRerunner.cs (8)
29throw new ValidationException("Agent output must contain an items array."); 37throw new ValidationException("Every agent output item must be an object with a string type."); 52throw new ValidationException("Exactly one rerun_failed_jobs request is permitted."); 63throw new ValidationException("Rerun request does not match the validated transient infrastructure analysis."); 102throw new ValidationException($"Unable to read current run {bundle.Run.Url} attempt={bundle.Run.Attempt}: " + 108throw new ValidationException($"Invalid current workflow run metadata for {bundle.Run.Url}."); 126throw new ValidationException($"Unable to request rerun for {bundle.Run.Url} attempt={bundle.Run.Attempt}: " + 135: throw new ValidationException($"{name} is required {purpose}.");
AnalysisValidator.cs (26)
25throw new ValidationException("The proposal version, repository, run ID, or attempt does not match the collected evidence."); 29throw new ValidationException("Test evidence is unavailable; diagnosis may continue, but publication and reruns are not authorized."); 35throw new ValidationException("The proposal must contain jobs, tests, and causes arrays."); 39throw new ValidationException("Proposal arrays must contain objects, not null."); 45throw new ValidationException("Analysis failed-job IDs do not match the trusted failed jobs; classify every collected job exactly once without unknown or duplicate IDs."); 51throw new ValidationException(TestMismatch + 60throw new ValidationException("A confirmed runner-loss job without observed test failures must be classified as infrastructure."); 73throw new ValidationException("Test classification must be 'flaky', 'code-issue' or 'transient-infra'."); 99throw new ValidationException("Cause IDs must be unique within the proposal."); 149throw new ValidationException(acceptedVerdicts.Count == 0 194throw new ValidationException("Each cause must reference unique collected job IDs and test references, with at least one job."); 204?? throw new ValidationException("An existing cause ID must occur in the collected prior-cause catalogue."); 213throw new ValidationException("A new cause ID must not already occur in the collected catalogue."); 220throw new ValidationException("A new cause needs a visible title of at most 238 characters and an error pattern of at most 500 characters."); 226throw new ValidationException("Cause kind must be 'existing' or 'new', with only its documented fields."); 230throw new ValidationException("A cause needs a lowercase hyphenated ID and a recognized cause type."); 234throw new ValidationException("Infrastructure and main-breakage causes must not reference tests."); 241throw new ValidationException("A cause references a test that is not in the collected evidence."); 265throw new ValidationException("The evidence version, repository, run ID, attempt, scope, or GitHub run URL is invalid."); 273throw new ValidationException("The evidence scope, event, branch, PR, and main context do not agree."); 282throw new ValidationException("The captured main context has an invalid history state, candidate array, or identifier."); 290throw new ValidationException("Evidence jobs must be a nonempty array with unique positive IDs, names, and complete step arrays."); 297throw new ValidationException("Test evidence must have a recognized state, unique references, and empty failures when not applicable."); 307throw new ValidationException("Each test failure needs an opaque reference, a collected job, all diagnostic strings, and at least one valid result source."); 314throw new ValidationException("The prior-cause catalogue must contain unique readable cause identities and types."); 320: throw new ValidationException("A decision reason must be a string.");
BranchHistoryReader.cs (6)
16? branchName : throw new ValidationException("Branch name must not be empty."); 22throw new ValidationException("Failed run ID must be numeric."); 64throw new ValidationException("GitHub returned invalid workflow-run metadata."); 73throw new ValidationException("A one-second workflow-run window reached GitHub's 1,000-result cap."); 86throw new ValidationException("GitHub returned invalid workflow-run page metadata."); 95throw new ValidationException($"GitHub returned only {unique} of {total} unique workflow runs.");
CauseHistoryStore.cs (3)
22throw new ValidationException("History checkout destination already exists. Use a new directory to read current history."); 31throw new ValidationException($"Unable to load CI failure history: {CiFailureJson.Display(DiagnosticTextSanitizer.Sanitize(reference.Error, limit: 4096))}"); 38throw new ValidationException("Unable to load CI failure history: invalid memory branch reference");
CauseIssueRenderer.cs (9)
57throw new ValidationException("invalid stored occurrence history"); 100throw new ValidationException("IssueDraft title exceeds GitHub's 256-character limit"); 111throw new ValidationException("invalid occurrence row"); 117throw new ValidationException("occurrence total is smaller than the rendered history"); 137throw new ValidationException("issue identity marker does not match"); 144throw new ValidationException("ambiguous main issue type"); 261throw new ValidationException("unsupported occurrence section contents"); 288throw new ValidationException("ambiguous managed occurrence section"); 309throw new ValidationException("unsupported legacy occurrence section");
CiFailureJson.cs (1)
76throw new ValidationException(message);
CollectionProjection.cs (3)
16Name = Text(job["name"]) ?? throw new ValidationException("A collected job needs a name"), 21Number = step?["number"]?.GetValue<int>() ?? throw new ValidationException("Collected job steps must provide their source number."), 62PullRequest = candidate.PullRequest is not { } pr ? throw new ValidationException("A candidate merge needs a pull request.") : new CollectedCandidatePr
EvidencePreparation.cs (2)
97throw new ValidationException("Run attempt must be a positive integer"); 297var bundle = invocation.Capture.Bundle ?? throw new ValidationException("Limited analysis requires captured run evidence.");
GitHubActionsIntegration.cs (3)
37throw new ValidationException($"Invalid workflow output value for {name}"); 57throw new ValidationException("HAS_WORK must be true, false, or empty."); 66throw new ValidationException("CI failure analysis did not reach an accepted terminal outcome " +
Infrastructure\AnalysisGitHubClient.cs (2)
32throw new ValidationException("GitHub returned invalid paginated metadata"); 40throw new ValidationException($"GitHub returned invalid paginated metadata: expected an object at " +
Infrastructure\AnalyzerCommandExecutor.cs (1)
34throw new ValidationException($"{executable} failed ({result.ExitCode}): {CiFailureJson.Display(DiagnosticTextSanitizer.Sanitize(result.Error, limit: 4096))}");
Infrastructure\GitHubJson.cs (2)
15? id : throw new ValidationException("GitHub metadata must contain a positive 64-bit integer ID."); 19? id : throw new ValidationException("GitHub metadata must contain a positive 64-bit integer ID.");
Models\PriorContextContracts.cs (1)
36throw new ValidationException("Prior cause 'tests' and 'occurrences' must contain objects, not null entries.");
OverflowIssueRenderer.cs (2)
28throw new ValidationException("One aggregate report entry exceeds the publication budget."); 55throw new ValidationException("Aggregate report has missing or ambiguous managed sections.");
PriorCauseCatalogue.cs (2)
30?? throw new ValidationException("Prior cause is not an object"); 34throw new ValidationException("Prior cause ID does not match its filename");
TestFailureReader.cs (5)
59throw new ValidationException($"Cannot associate test artifact {artifactId} with a failed job: expected one job named " + 141throw new ValidationException("Collected test failures must have a nonempty test name."); 175=> new($"{message}; {TestResultArtifacts.Describe(artifact.Expectation)}"); 186throw new ValidationException("Collected test failures must have a nonempty test name. " + 197throw new ValidationException("Conflicting diagnostics for the same test execution: " +
TestResultArchiveExtractor.cs (20)
52throw new ValidationException("Invalid test results extraction budget"); 57throw new ValidationException($"downloaded archive exceeds the {maxArchiveBytes}-byte budget"); 61throw new ValidationException("downloaded archive size does not match artifact metadata"); 66throw new ValidationException("test results output directory already exists"); 77throw new ValidationException("archive entry count does not match its central directory"); 88throw new ValidationException("archive contains an unsafe path"); 97throw new ValidationException("archive contains an unsupported file type"); 103throw new ValidationException("archive contains an unsupported file type"); 123throw new ValidationException($"uncompressed data exceeds the {maxExpandedBytes}-byte budget"); 133throw new ValidationException("archive result data does not match its central directory"); 169throw new ValidationException("archive has no valid end-of-central-directory record"); 175throw new ValidationException("multi-disk archives are unsupported"); 180throw new ValidationException("ZIP64 archives exceed the supported extraction limits"); 186throw new ValidationException("archive central directory bounds are invalid"); 196throw new ValidationException("archive central directory is truncated"); 200throw new ValidationException("archive central directory contains an invalid record"); 207throw new ValidationException("archive central directory record exceeds its bounds"); 211throw new ValidationException($"archive contains more than the {maxEntries}-entry budget"); 215throw new ValidationException("archive contains an encrypted entry"); 221throw new ValidationException("archive entry count does not match its central directory");
TestResultArtifacts.cs (9)
88throw new ValidationException($"Workflow conventions returned an invalid test artifact plan: {Describe(job)}"); 92throw new ValidationException($"test result artifact does not identify exactly one failed job: repeated expectation for {Describe(job)}"); 114throw new ValidationException($"test result artifact is missing for a failed test job: {Describe(job)}"); 118throw new ValidationException($"test result artifact does not identify exactly one failed job: {Describe(job)} matches={matches.Length}"); 137throw new ValidationException($"test result artifact count exceeds the download budget: required={requiredArtifacts.Count} limit={maxArtifacts}"); 141throw new ValidationException($"test result artifact has invalid or excessive size metadata: {Describe(invalid.Expectation)} " + 147throw new ValidationException("test result artifact does not identify exactly one failed job: repeated artifact IDs among required results"); 152throw new ValidationException($"test result artifacts exceed the cumulative download budget: required={bytes} limit={maxTotalBytes}"); 171throw new ValidationException("test result artifact does not identify exactly one failed job: repeated artifact IDs among selected results");
TransientJson.cs (3)
58throw new ValidationException("Cannot decode the versioned analysis contract: " + 76throw new ValidationException("Cannot decode JSON: files must contain valid UTF-8 text."); 97throw new ValidationException("An identifier must be canonical positive 64-bit decimal text without signs, spaces, or leading zeros.");
ValidationRules.cs (29)
26throw new ValidationException($"Verdict {EnumText(analysis.Verdict.GetValueOrDefault())} is not permitted for run scope {EnumText(run.Scope)}"); 34throw new ValidationException("Analysis must classify every failed job with a recognized classification"); 42throw new ValidationException("Analysis failed-job IDs do not match the trusted failed jobs"); 47throw new ValidationException($"Analysis contains a failed-job classification that is not permitted for run scope {EnumText(run.Scope)}"); 62throw new ValidationException(TestMismatch); 69throw new ValidationException(TestMismatch); 79throw new ValidationException($"Cause {Display(cause.FileName)} is not referenced by the analysis summary"); 83throw new ValidationException($"Cause {Display(cause.FileName)} type {EnumText(cause.Type)} is not permitted for run scope {EnumText(run.Scope)}"); 100throw new ValidationException(IncompatibleJob(cause.FileName)); 111throw new ValidationException($"Cause {Display(cause.FileName)} contains unsupported or publisher-owned fields"); 119throw new ValidationException($"Cause {Display(cause.FileName)} cannot change type from {EnumText(prior.Type)} to {EnumText(cause.Type)}"); 140throw new ValidationException("Analysis failed_tests are incompatible with verdict transient-infra"); 144throw new ValidationException("A transient-infra verdict requires every failed job and cause to be an infrastructure failure"); 150throw new ValidationException("Analysis failed_tests are incompatible with verdict flaky-test"); 154throw new ValidationException("A flaky-test verdict requires at least one flaky job, only transient failed jobs, and only transient causes"); 160throw new ValidationException("Analysis failed_tests are incompatible with verdict code-issue"); 164throw new ValidationException("A code-issue verdict requires every failed job to be a code issue and must not include cause files"); 170throw new ValidationException("Analysis failed_tests are incompatible with verdict main-repository-breakage"); 174throw new ValidationException("A main-repository-breakage verdict requires every failed job and cause to be a main repository breakage"); 180throw new ValidationException("A mixed verdict for main requires a main-breakage job and cause plus transient job or test evidence and cause"); 186throw new ValidationException("A mixed verdict for a pull request requires a code-issue job plus transient job or test evidence and a transient cause"); 206throw new ValidationException("Failed-job classifications and persisted cause types do not match"); 217throw new ValidationException("Every infrastructure test observation must belong to an infrastructure job covered by an infrastructure cause."); 231throw new ValidationException("Every transient, flaky, and main-breakage failed job must be covered by a matching cause"); 241throw new ValidationException("Cause test observation must reference a validated flaky test in its trusted job"); 245throw new ValidationException("Every cause job must contain a referenced test observation"); 256throw new ValidationException("Every flaky test and job observation must be covered by a matching cause"); 267throw new ValidationException("Unable to render the PR comment during validation"); 271throw new ValidationException("Rendered PR comment exceeds the 65000-byte publication budget");
WorkflowRunEvidenceCollector.cs (11)
61throw new ValidationException("Invalid analysis repository"); 109throw new ValidationException("Trusted run metadata does not match the requested run"); 115var runAttempt = run["run_attempt"]?.GetValue<int>() ?? throw new ValidationException("Trusted run metadata is missing its attempt"); 118throw new ValidationException("Trusted run metadata must contain a positive attempt."); 122throw new ValidationException("Trusted run metadata does not match the requested attempt"); 130throw new ValidationException($"Run {runId} belongs to workflow '{Display(Text(run["path"]) ?? "")}', not '{Display(_workflow.WorkflowPath)}'"); 595throw new ValidationException("GitHub returned invalid PR metadata"); 599throw new ValidationException("GitHub PR metadata does not match the known subject."); 644throw new ValidationException("Workflow conventions cannot change a collected test job's identity: " + 723throw new ValidationException("The shared artifact acquisition budget has been exhausted."); 730throw new ValidationException("Test result artifact does not match the trusted run and SHA");
Workflows\AspireCiWorkflowConventions.cs (1)
53throw new ValidationException("failed test job name does not match the artifact naming contract: " +
AnalyzeCiFailure.Tests (7)
AnalyzeCiFailureCohesionTests.cs (1)
21var error = new ValidationException("client factory failed");
AnalyzeCiFailureDiagnosticsTests.cs (1)
249invocation.Capture.Failure = new ValidationException("original history failure");
AnalyzeCiFailureProgressTests.cs (1)
68invocation.Capture.Failure = new ValidationException("original acquisition error");
AnalyzeCiFailureRenderingTests.cs (3)
76throw new ValidationException("Rendered cause issue exceeds the 65000-byte publication budget"); 132throw new ValidationException("occurrence section cannot fit within the publication budget"); 147throw new ValidationException("migrated issue body exceeds the publication budget");
TestServices\AlternateWorkflowConventions.cs (1)
27throw new ValidationException("Alternate tests have an invalid artifact convention");