{"openapi":"3.1.0","info":{"title":"java-blueprints","description":"","license":{"name":""},"version":"0.1.0"},"paths":{"/api/v1/healthz":{"get":{"tags":["System"],"operationId":"healthz","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/api/v1/projects":{"post":{"tags":["Projects"],"operationId":"upload_project","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"413":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}":{"get":{"tags":["Projects"],"operationId":"get_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/analyze":{"post":{"tags":["Analysis"],"operationId":"analyze_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"source_level","in":"path","description":"Java language level of the sources: 8, 11, 17 or 21 (default). Archive projects only.","required":true,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResult"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/analyze/stream":{"post":{"tags":["Analysis"],"operationId":"analyze_project_stream","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"source_level","in":"path","description":"Java language level of the sources: 8, 11, 17 or 21 (default). Archive projects only.","required":true,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Server-sent analysis lifecycle events","content":{"text/event-stream":{}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/benchmark":{"post":{"tags":["Verification"],"operationId":"run_benchmark","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRequest"}}},"required":true},"responses":{"200":{"description":"Reproducible before/after comparison. Static Big O, functional outcome and measured runtime are separate sections. A speedup is reported only when the evidence supports it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkReport"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"runner_unavailable when no runner image is configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/benchmark/{report_id}":{"get":{"tags":["Verification"],"operationId":"get_benchmark_report","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkReport"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/cfg-edits/apply":{"post":{"tags":["Transformations"],"operationId":"apply_cfg_edit","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CfgEditApplyRequest"}}},"required":true},"responses":{"200":{"description":"A new revision with the edit applied and re-analysed (CFG and source mappings are recomputed)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CfgEditApplyResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"revision_conflict or preview_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"move_rejected, unsupported_node, no_change or transformation_invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/cfg-edits/preview":{"post":{"tags":["Transformations"],"operationId":"preview_cfg_edit","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CfgEditRequest"}}},"required":true},"responses":{"200":{"description":"Exact Java diff of the edit, re-parsed and validated; nothing is stored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CfgEditPreview"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"project or method not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"move_rejected (with `details.reasons`), unsupported_node, no_change or transformation_invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/complexity":{"get":{"tags":["Analysis"],"operationId":"get_project_complexity","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Complexity estimates only; code smells are under /findings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplexityReport"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/decomposition":{"get":{"tags":["Decomposition"],"operationId":"list_decomposition","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"source_level","in":"path","description":"Java language level of the sources: 8, 11, 17 or 21 (default). Archive projects only.","required":true,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Static member types of the current revision that can move into files of their own, each with its preconditions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecompositionList"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/decomposition/apply":{"post":{"tags":["Decomposition"],"operationId":"apply_decomposition","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecompositionApplyRequest"}}},"required":true},"responses":{"200":{"description":"A new revision holding the split project (re-analysed). A single-file project becomes an archive project; roll back with POST /rollback.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecompositionApplyResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"revision_conflict or preview_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/decomposition/preview":{"post":{"tags":["Decomposition"],"operationId":"preview_decomposition","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecompositionRequest"}}},"required":true},"responses":{"200":{"description":"Exact diffs of the split (rewritten host file and new files), re-analysed and validated. Nothing is stored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecompositionPreview"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"project or class not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"not_extractable, dependency_not_selected, nothing_to_extract or transformation_invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/files":{"get":{"tags":["Projects"],"operationId":"list_project_files","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"revision","in":"path","description":"Defaults to the current revision.","required":true,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manifest"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/files/{path}":{"get":{"tags":["Projects"],"operationId":"get_project_file","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"path","description":"Archive-relative file path, e.g. src/main/java/app/Main.java","required":true,"schema":{"type":"string"}},{"name":"revision","in":"path","description":"Defaults to the current revision.","required":true,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"","headers":{"X-Source-Revision":{"schema":{"type":"integer","format":"int64","minimum":0}}},"content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]},"put":{"tags":["Projects"],"operationId":"update_project_file","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"path","in":"path","description":"Path of an existing file","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFileRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"413":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/findings":{"get":{"tags":["Analysis"],"operationId":"get_project_findings","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Code smells and optimization findings, separate from complexity estimates and from transformations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingsReport"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/graph":{"get":{"tags":["Analysis"],"operationId":"get_project_graph","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Project graph persisted by the Java parser for the current published revision. `graph` is JSON null when the parser could not build the graph (see the `project_graph_failed` diagnostic)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGraphResponse"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/methods":{"get":{"tags":["Analysis"],"operationId":"list_methods","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodsResponse"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/methods/{method_selector}/analysis":{"get":{"tags":["Analysis"],"operationId":"get_method_analysis","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"method_selector","in":"path","description":"Opaque revision-local selector returned by the methods endpoint","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodAnalysisResponse"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/methods/{method_selector}/cfg":{"get":{"tags":["Analysis"],"operationId":"get_method_cfg","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"method_selector","in":"path","description":"Opaque revision-local selector returned by the methods endpoint","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cfg"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/optimizations":{"get":{"tags":["Optimization"],"operationId":"list_optimizations","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"source_level","in":"path","description":"Java language level of the sources: 8, 11, 17 or 21 (default). Archive projects only.","required":true,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Optimization candidates of the current revision, applicable or not, each with its preconditions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationList"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/optimizations/{proposal_id}/apply":{"post":{"tags":["Optimization"],"operationId":"apply_optimization","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationApplyRequest"}}},"required":true},"responses":{"200":{"description":"A new revision holding the rewrite, re-analysed. Roll back with POST /rollback.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationApplyResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"revision_conflict or preview_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"optimization_not_applicable, assumptions_not_acknowledged or transformation_invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/optimizations/{proposal_id}/preview":{"post":{"tags":["Optimization"],"operationId":"preview_optimization","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationPreviewRequest"}}},"required":true},"responses":{"200":{"description":"Exact source diff of the rewrite, re-parsed and validated. Nothing is stored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationPreview"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"optimization_not_applicable or transformation_invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/report":{"get":{"tags":["Reports"],"operationId":"get_project_report","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"baseline","in":"path","description":"Revision to compare from (default 1).","required":true,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"candidate","in":"path","description":"Revision to report on (default: the current revision).","required":true,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"Markdown report: Big O before/after, findings, the latest behaviour check and benchmark of the revision pair","content":{"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/revisions":{"get":{"tags":["Projects"],"operationId":"list_project_revisions","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RevisionSummary"}}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/revisions/{from}/diff/{to}":{"get":{"tags":["Projects"],"operationId":"compare_revisions","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"from","in":"path","required":true,"schema":{"type":"integer","format":"int64","minimum":0}},{"name":"to","in":"path","required":true,"schema":{"type":"integer","format":"int64","minimum":0}}],"responses":{"200":{"description":"Unified diff of every file that differs between the two revisions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevisionDiff"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/revisions/{revision}":{"get":{"tags":["Projects"],"operationId":"get_project_revision","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"revision","in":"path","required":true,"schema":{"type":"integer","format":"int64","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevisionDetail"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/rollback":{"post":{"tags":["Optimization"],"operationId":"rollback_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackRequest"}}},"required":true},"responses":{"200":{"description":"A new revision with the files (and analysis) of `to_revision`; history is kept","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/source":{"get":{"tags":["Projects"],"operationId":"get_project_source","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","headers":{"X-Source-Revision":{"schema":{"type":"integer","format":"int64","minimum":0}}},"content":{"text/plain":{"schema":{"type":"string"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]},"put":{"tags":["Projects"],"operationId":"update_project_source","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSourceRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"413":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/trace":{"post":{"tags":["Verification"],"operationId":"trace_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceRequest"}}},"required":true},"responses":{"200":{"description":"The current revision ran once in the Docker runner with a counter before every statement; stdout is the program's own output","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceReport"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"revision is not the current one","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"runner_unavailable or analyzer_unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/transform":{"post":{"tags":["Transformations"],"operationId":"transform_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"422":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"504":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/verify":{"post":{"tags":["Verification"],"operationId":"verify_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistedVerificationReport"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/projects/{project_id}/verify/{report_id}":{"get":{"tags":["Verification"],"operationId":"get_verification_report","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistedVerificationReport"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorBody"}}}}},"security":[{"guestSession":[]}]}},"/api/v1/sessions/guest":{"post":{"tags":["Sessions"],"operationId":"create_guest_session","responses":{"201":{"description":"","headers":{"Set-Cookie":{"schema":{"type":"string"},"description":"Opaque HttpOnly guest session cookie"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestSessionResponse"}}}}}}}},"components":{"schemas":{"AnalysisFinding":{"type":"object","required":["id","severity","category","message","explanation","recommendation","source_range","node_ids"],"properties":{"category":{"type":"string","description":"`complexity` (running time) or `maintainability` (long method, deep nesting, many parameters, duplicated code)."},"explanation":{"type":"string"},"id":{"type":"string"},"message":{"type":"string"},"node_ids":{"type":"array","items":{"type":"string"}},"recommendation":{"type":"string"},"severity":{"type":"string"},"source_range":{"$ref":"#/components/schemas/SourceRange"}}},"AnalysisResult":{"type":"object","required":["protocol_version","status","revision","methods","diagnostics"],"properties":{"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/Diagnostic"}},"methods":{"type":"array","items":{"$ref":"#/components/schemas/Method"}},"protocol_version":{"type":"integer","format":"int32","minimum":0},"revision":{"type":"integer","format":"int64","minimum":1},"status":{"$ref":"#/components/schemas/AnalysisStatus"}}},"AnalysisStatus":{"type":"string","enum":["completed","partial","failed"]},"ApiErrorBody":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"details":{"type":["object","null"],"description":"Structured context for some errors, e.g. the `reasons` of a rejected CFG edit."},"message":{"type":"string"}}},"BehaviorMismatch":{"type":"object","required":["field","explanation"],"properties":{"explanation":{"type":"string"},"field":{"$ref":"#/components/schemas/MismatchField"}}},"BenchmarkEnvironment":{"type":"object","required":["cpu_limit","memory_limit","network"],"properties":{"baseline_jvm":{"type":["object","null"],"description":"JVM facts reported by the harness inside the container (version, VM, flags, processors, heap)."},"candidate_jvm":{"type":["object","null"]},"cpu_limit":{"type":"string"},"memory_limit":{"type":"string"},"network":{"type":"string"},"runner_image":{"type":["string","null"]}}},"BenchmarkReport":{"type":"object","required":["report_id","created_at","status","baseline_revision","candidate_revision","settings","environment","timings","static_complexity","functional","runtime","limitations"],"properties":{"baseline_compilation":{"type":["object","null"]},"baseline_revision":{"type":"integer","format":"int64","minimum":0},"candidate_compilation":{"type":["object","null"]},"candidate_revision":{"type":"integer","format":"int64","minimum":0},"created_at":{"type":"string"},"environment":{"$ref":"#/components/schemas/BenchmarkEnvironment"},"functional":{"$ref":"#/components/schemas/FunctionalOutcome","description":"2. Functional outcome on the workloads."},"limitations":{"type":"array","items":{"type":"string"}},"report_id":{"type":"string","format":"uuid"},"runtime":{"$ref":"#/components/schemas/RuntimeComparison","description":"3. Measured runtime before/after."},"settings":{"$ref":"#/components/schemas/BenchmarkSettingsReport"},"static_complexity":{"$ref":"#/components/schemas/StaticComplexity","description":"1. Static Big O before/after."},"status":{"type":"string","description":"`completed`, `compilation_failed` or `incomplete` (a workload timed out or the run was cut off)."},"timings":{"$ref":"#/components/schemas/PhaseTimings"}}},"BenchmarkRequest":{"type":"object","required":["baseline_revision","candidate_revision","workloads"],"properties":{"baseline_revision":{"type":"integer","format":"int64","minimum":1},"candidate_revision":{"type":"integer","format":"int64","minimum":1},"class_loading":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ClassLoading"}]},"iteration_timeout_ms":{"type":["integer","null"],"format":"int64","description":"Per-iteration limit in ms (default 10000, max 60000); an exceeded iteration aborts the benchmark.","minimum":0},"main_class":{"type":["string","null"],"description":"Archive projects: fully qualified class with `main(String[])`."},"measured_iterations":{"type":["integer","null"],"format":"int32","description":"Measured iterations per workload (1-100, default 15). Fewer than 10 never supports a speed claim.","minimum":0},"source_level":{"type":["string","null"],"description":"Java language level for compilation (8, 11, 17, 21; default 21)."},"warmup_iterations":{"type":["integer","null"],"format":"int32","description":"Discarded iterations per workload (0-50, default 5).","minimum":0},"workloads":{"type":"array","items":{"$ref":"#/components/schemas/BenchmarkWorkloadInput"},"description":"1 to 8 workloads; use several sizes to see how the difference scales."}},"additionalProperties":false},"BenchmarkSettingsReport":{"type":"object","required":["warmup_iterations","measured_iterations","class_loading","iteration_timeout_ms","source_level"],"properties":{"class_loading":{"$ref":"#/components/schemas/ClassLoading"},"iteration_timeout_ms":{"type":"integer","format":"int64","minimum":0},"main_class":{"type":["string","null"]},"measured_iterations":{"type":"integer","format":"int32","minimum":0},"source_level":{"type":"string"},"warmup_iterations":{"type":"integer","format":"int32","minimum":0}}},"BenchmarkWorkloadInput":{"type":"object","required":["name","stdin"],"properties":{"name":{"type":"string","description":"Unique label, e.g. `n=2000`."},"size":{"type":["integer","null"],"format":"int64","description":"Optional input size you used to build `stdin`, reported back for scaling analysis.","minimum":0},"stdin":{"type":"string","description":"Deterministic stdin of the program (at most 64 KiB)."}},"additionalProperties":false},"CapturedStream":{"type":"object","required":["base64","truncated"],"properties":{"base64":{"type":"string"},"truncated":{"type":"boolean"},"utf8":{"type":["string","null"]}}},"Cfg":{"type":"object","required":["method_id","entry","exit","nodes","edges"],"properties":{"edges":{"type":"array","items":{"$ref":"#/components/schemas/CfgEdge"}},"entry":{"type":"string"},"exit":{"type":"string"},"method_id":{"type":"string"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/CfgNode"}}}},"CfgEdge":{"type":"object","required":["from","to","kind"],"properties":{"back":{"type":["boolean","null"]},"from":{"type":"string"},"kind":{"type":"string"},"label":{"type":["string","null"]},"to":{"type":"string"}}},"CfgEditApplyRequest":{"type":"object","required":["base_revision","method_id","operation","preview_sha256"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"method_id":{"type":"string"},"operation":{"$ref":"#/components/schemas/CfgEditOperation"},"preview_sha256":{"type":"string","description":"`preview_sha256` of the preview that is being confirmed."},"source_level":{"type":["string","null"]}}},"CfgEditApplyResponse":{"type":"object","required":["revision","base_revision","method_id","operation","diff","node_mapping","analysis_status"],"properties":{"analysis_status":{"$ref":"#/components/schemas/AnalysisStatus"},"base_revision":{"type":"integer","format":"int64","minimum":0},"diff":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"}},"method_id":{"type":"string"},"node_mapping":{"type":"array","items":{"type":"object"}},"operation":{"type":"object"},"revision":{"type":"integer","format":"int64","minimum":2}}},"CfgEditOperation":{"oneOf":[{"type":"object","description":"Moves one statement before/after another statement of the same block. Moving CFG nodes in the\nbrowser changes layout only; this is the operation that changes Java.","required":["node_id","target_node_id","position","type"],"properties":{"node_id":{"type":"string","description":"CFG node of the statement to move (a statement node, or the condition node of a compound statement)."},"position":{"$ref":"#/components/schemas/MovePosition"},"target_node_id":{"type":"string","description":"CFG node of the statement it is placed next to."},"type":{"type":"string","enum":["move_statement"]}}},{"type":"object","description":"Inserts Java statements before/after a statement of a block. The code must parse as statements and the result\nmust analyse without a new error; whether the behaviour is kept is for `/verify` to show.","required":["target_node_id","position","code","type"],"properties":{"code":{"type":"string","description":"One or more Java statements (at most 4000 characters)."},"position":{"$ref":"#/components/schemas/MovePosition"},"target_node_id":{"type":"string","description":"CFG node of the statement the code is placed next to."},"type":{"type":"string","enum":["insert_statement"]}}},{"type":"object","description":"Deletes one whole statement of a block; refused when the result no longer compiles (still used variable,\nmissing return).","required":["node_id","type"],"properties":{"node_id":{"type":"string","description":"CFG node of the statement to delete."},"type":{"type":"string","enum":["delete_statement"]}}},{"type":"object","description":"Replaces one whole statement of a block with other Java statements (edit a statement by hand). The code must\nparse and the result must analyse without a new error.","required":["node_id","code","type"],"properties":{"code":{"type":"string","description":"One or more Java statements (at most 4000 characters)."},"node_id":{"type":"string","description":"CFG node of the statement to replace."},"type":{"type":"string","enum":["replace_statement"]}}},{"type":"object","description":"Turns consecutive statements of one block into a private method of the same class and replaces them with a\ncall. Values that flow in become parameters; at most one value may flow out. Refused when the selection\nreturns, jumps out of itself or lets more than one value out.","required":["first_node_id","last_node_id","name","type"],"properties":{"first_node_id":{"type":"string","description":"CFG node of the first statement of the selection."},"last_node_id":{"type":"string","description":"CFG node of the last statement of the selection."},"name":{"type":"string","description":"Name of the new method (lowercase Java identifier, not used by another method of the class)."},"type":{"type":"string","enum":["extract_method"]}}}]},"CfgEditPreview":{"type":"object","required":["base_revision","method_id","operation","diff","preview_sha256","node_mapping"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":0},"diff":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"}},"method_id":{"type":"string"},"node_mapping":{"type":"array","items":{"type":"object"},"description":"Old CFG node id -> node id in the edited source (matched by kind and text; null if the node vanished)."},"operation":{"type":"object","description":"What moves and the independence evidence for every statement it jumps over."},"preview_sha256":{"type":"string"}}},"CfgEditRequest":{"type":"object","required":["base_revision","method_id","operation"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"method_id":{"type":"string","description":"Stable method id (`package.Type.method(Params)`); node ids must come from this method's current CFG."},"operation":{"$ref":"#/components/schemas/CfgEditOperation"},"source_level":{"type":["string","null"],"description":"Java language level (8, 11, 17 or 21); default 21."}}},"CfgMethod":{"type":"object","required":["selector","id","name","kind","source_range"],"properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"selector":{"type":"string"},"source_range":{"$ref":"#/components/schemas/SourceRange"}}},"CfgNode":{"type":"object","required":["id","kind","source_range"],"properties":{"id":{"type":"string"},"kind":{"type":"string"},"reachable":{"type":["boolean","null"]},"source_range":{"$ref":"#/components/schemas/SourceRange"},"statement_kind":{"type":["string","null"]},"text":{"type":["string","null"]}}},"ClassLoading":{"type":"string","enum":["fresh","shared"]},"CompilationResult":{"type":"object","required":["status","timed_out","output_overflow","stdout","stderr","diagnostics"],"properties":{"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/RunnerDiagnostic"}},"exit_code":{"type":["integer","null"],"format":"int32"},"main_class":{"type":["string","null"]},"output_overflow":{"type":"boolean"},"status":{"$ref":"#/components/schemas/CompilationStatus"},"stderr":{"$ref":"#/components/schemas/CapturedStream"},"stdout":{"$ref":"#/components/schemas/CapturedStream"},"timed_out":{"type":"boolean"}}},"CompilationStatus":{"type":"string","enum":["completed","failed","timed_out","output_overflow","missing_main"]},"ComplexityChange":{"type":"object","required":["method_id","before","after","confidence_before","confidence_after"],"properties":{"after":{"type":"string"},"before":{"type":"string"},"confidence_after":{"type":"string"},"confidence_before":{"type":"string"},"method_id":{"type":"string"}}},"ComplexityEstimate":{"type":"object","required":["time","confidence","reason","assumptions"],"properties":{"assumptions":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"},"reason":{"type":"string"},"time":{"type":"string"}}},"ComplexityFragment":{"type":"object","required":["kind","statement_kind","source_range","node_ids","time","confidence","reason","assumptions"],"properties":{"assumptions":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"},"kind":{"type":"string"},"node_ids":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"},"source_range":{"$ref":"#/components/schemas/SourceRange"},"statement_kind":{"type":"string"},"time":{"type":"string"}}},"ComplexityReport":{"type":"object","required":["revision","methods"],"properties":{"methods":{"type":"array","items":{"$ref":"#/components/schemas/MethodComplexity"}},"revision":{"type":"integer","format":"int64","minimum":1}}},"DecompositionApplyRequest":{"type":"object","required":["base_revision","preview_sha256"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"classes":{"type":"array","items":{"type":"string"}},"groups":{"type":"array","items":{"$ref":"#/components/schemas/DecompositionGroup"}},"preview_sha256":{"type":"string"},"source_level":{"type":["string","null"]}}},"DecompositionApplyResponse":{"type":"object","required":["revision","base_revision","extracted","diff","analysis_status","project_kind","file_count"],"properties":{"analysis_status":{"$ref":"#/components/schemas/AnalysisStatus","description":"Status of the re-analysis of the new revision."},"base_revision":{"type":"integer","format":"int64","minimum":0},"diff":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"}},"extracted":{"type":"array","items":{"type":"object"}},"file_count":{"type":"integer","format":"int32","minimum":1},"project_kind":{"type":"string","description":"`archive` from now on: a single-file project becomes a multi-file project (earlier revisions stay readable)."},"revision":{"type":"integer","format":"int64","minimum":2}}},"DecompositionGroup":{"type":"object","description":"A group of static methods to move into a new class: a suggested group by `id` (optionally renamed) or an explicit\nlist of method ids with a `name`.","properties":{"id":{"type":["string","null"]},"methods":{"type":"array","items":{"type":"string"}},"name":{"type":["string","null"]}}},"DecompositionList":{"type":"object","required":["revision","rule","candidates","method_groups"],"properties":{"candidates":{"type":"array","items":{"type":"object"},"description":"One entry per static member type of a top-level class: `id`, `name`, `kind`, `host`, `file`, `new_file`,\n`lines`, `extractable`, `depends_on` (ids that must move with it), `preconditions` and\n`not_extractable_reasons`."},"method_groups":{"type":"array","items":{"type":"object"},"description":"Suggested groups of static methods of one class (first word of the method names), each with `id`, `name`,\n`host`, `new_file`, `methods`, `moves_along` (private helpers and constants that travel with it), `lines`,\n`extractable`, `preconditions` and `not_extractable_reasons`."},"revision":{"type":"integer","format":"int64","minimum":1},"rule":{"type":"string"}}},"DecompositionPreview":{"type":"object","required":["base_revision","extracted","diff","preview_sha256","added_files","changed_files","host_lines","validation"],"properties":{"added_files":{"type":"array","items":{"type":"string"}},"base_revision":{"type":"integer","format":"int64","minimum":1},"changed_files":{"type":"array","items":{"type":"string"}},"diff":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"},"description":"Rewritten files and the new files, as exact diffs."},"extracted":{"type":"array","items":{"type":"object"}},"host_lines":{"type":"object","description":"Lines of each rewritten file before and after."},"preview_sha256":{"type":"string"},"validation":{"type":"string"}}},"DecompositionRequest":{"type":"object","required":["base_revision"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"classes":{"type":"array","items":{"type":"string"},"description":"Candidate ids to move; empty or omitted selects every extractable type. A type that uses a sibling must be\nselected together with it."},"groups":{"type":"array","items":{"$ref":"#/components/schemas/DecompositionGroup"},"description":"Method groups to move instead of member types (not both in one step)."},"source_level":{"type":["string","null"],"description":"Java language level (8, 11, 17 or 21); default 21."}}},"Diagnostic":{"type":"object","required":["code","severity","message","source_range"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"$ref":"#/components/schemas/DiagnosticSeverity"},"source_range":{"$ref":"#/components/schemas/SourceRange"}}},"DiagnosticSeverity":{"type":"string","enum":["error","warning","info"]},"DiffStatus":{"type":"string","enum":["added","removed","modified"]},"ExecutionObservation":{"type":"object","required":["stdout","stderr","timed_out","output_overflow"],"properties":{"exit_code":{"type":["integer","null"],"format":"int32"},"output_overflow":{"type":"boolean"},"stderr":{"$ref":"#/components/schemas/CapturedStream"},"stdout":{"$ref":"#/components/schemas/CapturedStream"},"timed_out":{"type":"boolean"}}},"FileDiff":{"type":"object","required":["path","status","additions","deletions","unified_diff"],"properties":{"additions":{"type":"integer","minimum":0},"deletions":{"type":"integer","minimum":0},"path":{"type":"string"},"status":{"$ref":"#/components/schemas/DiffStatus"},"unified_diff":{"type":"string","description":"Standard unified diff (`--- a/<path>` / `+++ b/<path>`, 3 lines of context)."}}},"FileEntry":{"type":"object","required":["path","kind","role","size","sha256"],"properties":{"kind":{"$ref":"#/components/schemas/FileKind"},"path":{"type":"string","description":"Archive-relative path with `/` separators."},"role":{"$ref":"#/components/schemas/FileRole"},"sha256":{"type":"string"},"size":{"type":"integer","format":"int64","minimum":0},"source_root":{"type":["string","null"],"description":"Maven/Gradle-style source root (`src/main/java/`, `src/test/java/`) when the path is\nunder one."}}},"FileKind":{"type":"string","enum":["java","resource"]},"FileRole":{"type":"string","enum":["main","test","resource"]},"FindingsReport":{"type":"object","required":["revision","findings"],"properties":{"findings":{"type":"array","items":{"$ref":"#/components/schemas/MethodFinding"}},"revision":{"type":"integer","format":"int64","minimum":1}}},"FunctionalOutcome":{"type":"object","description":"Functional outcome on the benchmark workloads. This is a behaviour check on the supplied inputs, not a\nproof; use `POST /verify` for the stdin-based test-case verification.","required":["equivalent_on_all_workloads","non_equivalent_workloads","note"],"properties":{"equivalent_on_all_workloads":{"type":"boolean"},"non_equivalent_workloads":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}}},"GuestSessionResponse":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string"}}},"HealthResponse":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}}},"Manifest":{"type":"object","required":["revision","files","skipped"],"properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FileEntry"}},"revision":{"type":"integer","format":"int64","minimum":1},"skipped":{"type":"array","items":{"$ref":"#/components/schemas/SkippedEntry"},"description":"Archive entries that were deliberately not stored, with the reason. Empty for\nsingle-file projects."}}},"Method":{"type":"object","required":["id","name","source_range"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"source_range":{"$ref":"#/components/schemas/SourceRange"}}},"MethodAnalysis":{"type":"object","required":["complexity","fragments","findings"],"properties":{"complexity":{"$ref":"#/components/schemas/ComplexityEstimate"},"findings":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisFinding"}},"fragments":{"type":"array","items":{"$ref":"#/components/schemas/ComplexityFragment"}}}},"MethodAnalysisResponse":{"type":"object","required":["revision","method_id","analysis"],"properties":{"analysis":{"$ref":"#/components/schemas/MethodAnalysis"},"method_id":{"type":"string"},"revision":{"type":"integer","format":"int64","minimum":1}}},"MethodComplexity":{"type":"object","required":["method_id","time_complexity","confidence","analysis_engine","reason","assumptions","limitations","source_range","cfg_node_ids"],"properties":{"analysis_engine":{"type":"string"},"assumptions":{"type":"array","items":{"type":"string"}},"cfg_node_ids":{"type":"array","items":{"type":"string"},"description":"CFG nodes of the loops that determine the estimate (empty when none do)."},"confidence":{"type":"string"},"file":{"type":["string","null"]},"limitations":{"type":"array","items":{"type":"string"}},"method_id":{"type":"string","description":"Stable method reference (`package.Type.method(ParamTypes)`)."},"reason":{"type":"string"},"source_range":{"$ref":"#/components/schemas/SourceRange"},"space_complexity":{"type":["string","null"],"description":"Always null: space complexity is not estimated."},"time_complexity":{"type":"string","description":"`O(...)` or the literal `unknown` when no bound can be justified."}}},"MethodFinding":{"type":"object","required":["method_id","finding"],"properties":{"file":{"type":["string","null"]},"finding":{"$ref":"#/components/schemas/AnalysisFinding"},"method_id":{"type":"string"}}},"MethodsResponse":{"type":"object","required":["revision","methods"],"properties":{"methods":{"type":"array","items":{"$ref":"#/components/schemas/CfgMethod"}},"revision":{"type":"integer","format":"int64","minimum":1}}},"MismatchField":{"type":"string","enum":["stdout","stderr","exit_code","timed_out","output_overflow","unstable"]},"MovePosition":{"type":"string","enum":["before","after"]},"OptimizationApplyRequest":{"type":"object","required":["base_revision","preview_sha256","acknowledged_assumptions"],"properties":{"acknowledged_assumptions":{"type":"array","items":{"type":"string"},"description":"Ids of every assumption listed in the proposal."},"base_revision":{"type":"integer","format":"int64","minimum":1},"preview_sha256":{"type":"string"},"source_level":{"type":["string","null"]}}},"OptimizationApplyResponse":{"type":"object","required":["revision","base_revision","proposal","diff","method_complexity_before","method_complexity_after","analysis_status"],"properties":{"analysis_status":{"$ref":"#/components/schemas/AnalysisStatus","description":"Status of the re-analysis of the new revision."},"base_revision":{"type":"integer","format":"int64","minimum":0},"diff":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"}},"method_complexity_after":{"type":"object"},"method_complexity_before":{"type":"object"},"proposal":{"type":"object"},"revision":{"type":"integer","format":"int64","minimum":2}}},"OptimizationList":{"type":"object","required":["revision","rule","proposals"],"properties":{"proposals":{"type":"array","items":{"type":"object"},"description":"Each proposal has `id`, `applicability` (`applicable` | `not_applicable`), `preconditions`,\n`assumptions`, `complexity`, `method_id`, `file`, `affected_files`, source ranges and a summary."},"revision":{"type":"integer","format":"int64","minimum":1},"rule":{"type":"string"}}},"OptimizationPreview":{"type":"object","required":["base_revision","proposal","diff","preview_sha256","method_complexity_before","method_complexity_after","validation"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"diff":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"}},"method_complexity_after":{"type":"object"},"method_complexity_before":{"type":"object","description":"Complexity estimate of the affected method before / after (static engine, may be `unknown`)."},"preview_sha256":{"type":"string","description":"Fingerprint of `diff`; `apply` must echo it to apply exactly what was previewed."},"proposal":{"type":"object"},"validation":{"type":"string","description":"`valid`: the rewritten project re-parses and introduces no new errors."}}},"OptimizationPreviewRequest":{"type":"object","required":["base_revision"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"source_level":{"type":["string","null"],"description":"Java language level (8, 11, 17 or 21); default 21."}}},"OverallVerdict":{"type":"object","required":["equivalent_on_all_workloads","verdict","summary"],"properties":{"equivalent_on_all_workloads":{"type":"boolean","description":"Every workload produced identical observable behaviour in both revisions."},"summary":{"type":"string"},"verdict":{"$ref":"#/components/schemas/Verdict"}}},"PersistedVerificationReport":{"allOf":[{"$ref":"#/components/schemas/VerificationReport"},{"type":"object","required":["report_id","created_at","requested_test_cases","behaviorally_verified"],"properties":{"behaviorally_verified":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"not_covered":{"type":"array","items":{"type":"string"},"description":"What this result does not cover, so a green status is not read as more than it is."},"report_id":{"type":"string","format":"uuid"},"requested_test_cases":{"type":"integer","minimum":1},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/VerifyWarning"},"description":"Advisory notes on how much a result can be trusted (empty scenarios, unchanged or unreachable code).\nThey never change `behaviorally_verified`; reports stored before this field existed read as empty."}}}]},"PhaseTimings":{"type":"object","required":["baseline","candidate"],"properties":{"baseline":{"$ref":"#/components/schemas/RevisionTimings"},"candidate":{"$ref":"#/components/schemas/RevisionTimings"}}},"Project":{"type":"object","required":["id","filename","revision","created_at"],"properties":{"created_at":{"type":"string","format":"date-time"},"file_count":{"type":"integer","format":"int32","minimum":1},"filename":{"type":"string","description":"Single-file projects: the Java file name. Archive projects: the uploaded archive name."},"id":{"type":"string","format":"uuid"},"kind":{"$ref":"#/components/schemas/ProjectKind"},"revision":{"type":"integer","format":"int64","minimum":1}}},"ProjectGraph":{"type":"object","required":["version","scope","nodes","edges","unresolved_calls","stats"],"properties":{"edges":{"type":"array","items":{"$ref":"#/components/schemas/ProjectGraphEdge"}},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/ProjectGraphNode"}},"scope":{"type":"string"},"stats":{"$ref":"#/components/schemas/ProjectGraphStats"},"unresolved_calls":{"type":"array","items":{"$ref":"#/components/schemas/ProjectGraphUnresolvedCall"}},"version":{"type":"integer","format":"int32","minimum":0}}},"ProjectGraphEdge":{"type":"object","required":["from","to","kind","count","sites"],"properties":{"count":{"type":"integer","format":"int64","minimum":0},"from":{"type":"string"},"kind":{"type":"string"},"sites":{"type":"array","items":{"$ref":"#/components/schemas/SourceRange"}},"to":{"type":"string"}}},"ProjectGraphNode":{"type":"object","required":["id","kind","name","source_range"],"properties":{"cfg_entry":{"type":["string","null"]},"external_supertypes":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ProjectGraphSupertype"}},"file":{"type":["string","null"],"description":"Project-relative file path (archive projects)."},"id":{"type":"string"},"kind":{"type":"string"},"method_id":{"type":["string","null"]},"name":{"type":"string"},"qualified_name":{"type":["string","null"]},"source_range":{"$ref":"#/components/schemas/SourceRange"}}},"ProjectGraphResponse":{"type":"object","required":["revision"],"properties":{"graph":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ProjectGraph"}]},"revision":{"type":"integer","format":"int64","minimum":1}}},"ProjectGraphStats":{"type":"object","required":["resolved_internal_calls","external_calls","unresolved_calls"],"properties":{"external_calls":{"type":"integer","format":"int64","minimum":0},"resolved_internal_calls":{"type":"integer","format":"int64","minimum":0},"unresolved_calls":{"type":"integer","format":"int64","minimum":0}}},"ProjectGraphSupertype":{"type":"object","required":["name","relation","resolved"],"properties":{"name":{"type":"string"},"relation":{"type":"string"},"resolved":{"type":"boolean"}}},"ProjectGraphUnresolvedCall":{"type":"object","required":["id","from","kind","name","expression","source_range","reason"],"properties":{"expression":{"type":"string"},"from":{"type":"string"},"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"reason":{"type":"string"},"source_range":{"$ref":"#/components/schemas/SourceRange"}}},"ProjectKind":{"type":"string","enum":["single_file","archive"]},"RevisionDetail":{"type":"object","required":["revision","source","has_analysis"],"properties":{"has_analysis":{"type":"boolean"},"revision":{"type":"integer","format":"int64","minimum":1},"source":{"type":"string"}}},"RevisionDiff":{"type":"object","required":["from_revision","to_revision","files"],"properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FileDiff"}},"from_revision":{"type":"integer","format":"int64","minimum":0},"to_revision":{"type":"integer","format":"int64","minimum":0}}},"RevisionSummary":{"type":"object","required":["revision","has_analysis"],"properties":{"has_analysis":{"type":"boolean"},"revision":{"type":"integer","format":"int64","minimum":1}}},"RevisionTimings":{"type":"object","required":["compile_and_setup_ms","harness_setup_ms","benchmark_process_ms"],"properties":{"benchmark_process_ms":{"type":"integer","format":"int64","description":"Wall time of the whole benchmark JVM including its startup; the per-iteration algorithm timings are\nunder `runtime`.","minimum":0},"compile_and_setup_ms":{"type":"integer","format":"int64","description":"Container start, source copy, javac, main-class inspection.","minimum":0},"harness_setup_ms":{"type":"integer","format":"int64","minimum":0}}},"RollbackRequest":{"type":"object","required":["base_revision","to_revision"],"properties":{"base_revision":{"type":"integer","format":"int64","description":"The current revision (optimistic lock).","minimum":1},"to_revision":{"type":"integer","format":"int64","description":"An earlier revision whose files are restored as a new revision.","minimum":1}}},"RunnerDiagnostic":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}},"RuntimeComparison":{"type":"object","required":["workloads","overall"],"properties":{"overall":{"$ref":"#/components/schemas/OverallVerdict"},"workloads":{"type":"array","items":{"$ref":"#/components/schemas/WorkloadComparison"}}}},"SampleStats":{"type":"object","required":["iterations","median_ns","min_ns","max_ns","p25_ns","p75_ns","relative_spread","mean_ns","stddev_ns","mad_ns"],"properties":{"iterations":{"type":"integer","minimum":0},"mad_ns":{"type":"integer","format":"int64","description":"Median absolute deviation.","minimum":0},"max_ns":{"type":"integer","format":"int64","minimum":0},"mean_ns":{"type":"number","format":"double"},"median_ns":{"type":"integer","format":"int64","minimum":0},"min_ns":{"type":"integer","format":"int64","minimum":0},"p25_ns":{"type":"integer","format":"int64","minimum":0},"p75_ns":{"type":"integer","format":"int64","minimum":0},"relative_spread":{"type":"number","format":"double","description":"Interquartile range divided by the median: the run-to-run spread."},"stddev_ns":{"type":"number","format":"double"}}},"SkippedEntry":{"type":"object","required":["path","reason"],"properties":{"path":{"type":"string"},"reason":{"type":"string"}}},"SourceRange":{"type":"object","required":["start","length"],"properties":{"end_line":{"type":["integer","null"],"format":"int64","minimum":0},"file":{"type":["string","null"]},"length":{"type":"integer","format":"int64","minimum":0},"line":{"type":["integer","null"],"format":"int64","minimum":0},"start":{"type":"integer","format":"int64","minimum":0}}},"StaticComplexity":{"type":"object","description":"Static Big O before/after, from the analysis of each revision. No timing is involved.","required":["changes","unchanged_methods","note"],"properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/ComplexityChange"},"description":"Methods whose estimate differs between the revisions (only methods present in both)."},"note":{"type":"string"},"unchanged_methods":{"type":"integer","minimum":0}}},"TestCaseResult":{"type":"object","required":["name","passed","mismatches","baseline","candidate"],"properties":{"baseline":{"$ref":"#/components/schemas/ExecutionObservation"},"candidate":{"$ref":"#/components/schemas/ExecutionObservation"},"expectation_failures":{"type":"array","items":{"$ref":"#/components/schemas/BehaviorMismatch"},"description":"Expectations of the scenario that the baseline run did not meet (empty when none were given)."},"mismatches":{"type":"array","items":{"$ref":"#/components/schemas/BehaviorMismatch"}},"name":{"type":"string"},"passed":{"type":"boolean"},"runs":{"type":"integer","format":"int32","description":"Runs per revision that actually happened (a timed-out or overflowing run is not repeated).","minimum":0}}},"TraceReport":{"type":"object","required":["revision","status","timed_out","stdout","stderr","hits","complete"],"properties":{"complete":{"type":"boolean","description":"False when the program ended without running its shutdown hooks (timeout, `Runtime.halt`): counts are then missing."},"exit_code":{"type":["integer","null"],"format":"int32"},"hits":{"type":"object","description":"How often each statement started, keyed `<file>:<offset>` (the `source_range.start` of its CFG node);\n`<file>:<offset>:i` counts the iterations of a loop body. Statements that never ran are absent.","additionalProperties":{"type":"integer","format":"int64","minimum":0},"propertyNames":{"type":"string"}},"revision":{"type":"integer","format":"int64","minimum":1},"status":{"type":"string","description":"`completed`, or the compilation status when the traced copy did not compile."},"stderr":{"type":"string","description":"stderr of the program without the counter lines."},"stdout":{"$ref":"#/components/schemas/CapturedStream"},"timed_out":{"type":"boolean"}}},"TraceRequest":{"type":"object","required":["revision"],"properties":{"main_class":{"type":["string","null"],"description":"Archive projects with several main classes: the class to run."},"revision":{"type":"integer","format":"int64","description":"Must be the current revision.","minimum":1},"source_level":{"type":["string","null"],"description":"Archive projects: Java language level (8, 11, 17 or 21; default 21)."},"stdin":{"type":"string","description":"Standard input of the run (at most 64 KiB)."}},"additionalProperties":false},"TransformOperation":{"oneOf":[{"type":"object","required":["expression","type"],"properties":{"expression":{"type":"string"},"type":{"type":"string","enum":["replace_condition"]}}}]},"TransformRequest":{"type":"object","required":["base_revision","method_id","node_id","operation"],"properties":{"base_revision":{"type":"integer","format":"int64","minimum":1},"method_id":{"type":"string"},"node_id":{"type":"string"},"operation":{"$ref":"#/components/schemas/TransformOperation"}}},"TransformResponse":{"type":"object","required":["revision","source"],"properties":{"revision":{"type":"integer","format":"int64","minimum":2},"source":{"type":"string"}}},"UpdateFileRequest":{"type":"object","required":["source","expected_revision"],"properties":{"expected_revision":{"type":"integer","format":"int64","minimum":1},"source":{"type":"string"}}},"UpdateSourceRequest":{"type":"object","required":["source","expected_revision"],"properties":{"expected_revision":{"type":"integer","format":"int64","minimum":1},"source":{"type":"string"}}},"UploadRequest":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}},"Verdict":{"type":"string","enum":["not_equivalent","faster","slower","no_significant_difference","insufficient_evidence","incomplete"]},"VerificationReport":{"type":"object","required":["status","baseline_revision","candidate_revision","baseline_compilation","candidate_compilation","executed_test_cases","test_cases","explanation"],"properties":{"baseline_compilation":{"$ref":"#/components/schemas/CompilationResult"},"baseline_revision":{"type":"integer","format":"int64","minimum":1},"candidate_compilation":{"$ref":"#/components/schemas/CompilationResult"},"candidate_revision":{"type":"integer","format":"int64","minimum":1},"executed_test_cases":{"type":"integer","minimum":0},"explanation":{"type":"string"},"repeats":{"type":"integer","format":"int32","description":"Runs per revision and scenario that were requested; reports stored before this field read as 1.","minimum":0},"status":{"$ref":"#/components/schemas/VerificationStatus"},"test_cases":{"type":"array","items":{"$ref":"#/components/schemas/TestCaseResult"}}}},"VerificationStatus":{"type":"string","enum":["passed","failed","unstable","compilation_failed"]},"VerifyRequest":{"type":"object","required":["baseline_revision","candidate_revision","test_cases"],"properties":{"baseline_revision":{"type":"integer","format":"int64","minimum":1},"candidate_revision":{"type":"integer","format":"int64","minimum":1},"main_class":{"type":["string","null"],"description":"Archive projects only: fully qualified class with `public static void main(String[])`\n(e.g. `com.acme.Main`). Required when the project has no single `main` method."},"repeats":{"type":["integer","null"],"format":"int32","description":"How many times each revision runs every scenario (1..=5, default 1). With more than one run a\nrevision whose own runs disagree is reported as unstable instead of as a behavior difference.","maximum":5,"minimum":1},"source_level":{"type":["string","null"],"description":"Archive projects only: Java language level of the sources (8, 11, 17 or 21; default 21)."},"test_cases":{"type":"array","items":{"$ref":"#/components/schemas/VerifyTestCase"}}},"additionalProperties":false},"VerifyTestCase":{"type":"object","required":["name","stdin"],"properties":{"expected_exit_code":{"type":["integer","null"],"format":"int32"},"expected_stderr":{"type":["string","null"]},"expected_stdout":{"type":["string","null"],"description":"Optional expectation checked against the baseline run (exact UTF-8 text)."},"name":{"type":"string"},"stdin":{"type":"string"}},"additionalProperties":false},"VerifyWarning":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable code: `empty_scenarios`, `no_method_changes`, `change_not_reached`,\n`reachability_unknown`."},"message":{"type":"string"}}},"WorkloadComparison":{"type":"object","required":["name","stdin_sha256","stdin_bytes","verdict","notes"],"properties":{"baseline":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/WorkloadObservation"}]},"baseline_stats":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/SampleStats"}]},"candidate":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/WorkloadObservation"}]},"candidate_stats":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/SampleStats"}]},"declared_size":{"type":["integer","null"],"format":"int64","minimum":0},"equivalent":{"type":["boolean","null"],"description":"Same stdout and same outcome (return / exit code / exception) in baseline and candidate."},"name":{"type":"string"},"notes":{"type":"array","items":{"type":"string"}},"p_value":{"type":["number","null"],"format":"double","description":"Mann-Whitney U p-value (two-sided); informational for every verdict that had enough samples."},"speedup":{"type":["number","null"],"format":"double","description":"Baseline median / candidate median. Present only when the verdict is `faster` or `slower`."},"speedup_ci95":{"type":["array","null"],"items":{"type":"number","format":"double"}},"stdin_bytes":{"type":"integer","minimum":0},"stdin_sha256":{"type":"string"},"verdict":{"$ref":"#/components/schemas/Verdict"}}},"WorkloadObservation":{"type":"object","description":"Raw per-workload observation from the harness.","required":["status"],"properties":{"outcome":{"type":["string","null"],"description":"`returned`, `exit:N` or `exception:Class: message`."},"samples_ns":{"type":"array","items":{"type":"integer","format":"int64","minimum":0}},"stable_across_iterations":{"type":"boolean"},"status":{"type":"string"},"stdout_bytes":{"type":["integer","null"],"format":"int64","minimum":0},"stdout_sha256":{"type":["string","null"]},"warmup_ns":{"type":"array","items":{"type":"integer","format":"int64","minimum":0}}}}},"securitySchemes":{"guestSession":{"type":"apiKey","in":"cookie","name":"blueprints_session"}}},"tags":[{"name":"System"},{"name":"Sessions"},{"name":"Projects"},{"name":"Analysis"},{"name":"Optimization"},{"name":"Transformations"},{"name":"Verification"}]}