diagnosis
diagnosis
¶
Diagnosis engine for analyzing errors and suggesting remedies.
The diagnosis engine takes an ErrorContext and returns a list of Diagnosis objects, sorted by confidence. Each diagnosis identifies what went wrong, why, and how to fix it.
Classes¶
Diagnosis
dataclass
¶
Diagnosis(error_code, issue, explanation, suggestion, confidence, remedy_name=None, requires_confirmation=False, context=dict())
Result of analyzing an error.
Contains information about what went wrong and how to fix it. Multiple diagnoses may be returned for a single error, sorted by confidence (highest first).
Attributes:
| Name | Type | Description |
|---|---|---|
error_code |
str
|
The error code being diagnosed |
issue |
str
|
What went wrong (human-readable summary) |
explanation |
str
|
Why the error happened (detailed) |
suggestion |
str
|
How to fix it (actionable) |
confidence |
float
|
0.0-1.0, higher = more certain this diagnosis is correct |
remedy_name |
str | None
|
Name of the remedy that can fix this (if any) |
requires_confirmation |
bool
|
True for suggested remedies |
context |
dict[str, Any]
|
Extra data for the remedy to use |
Functions¶
format_short
¶
format_full
¶
Format with full details.
Source code in src/marianne/healing/diagnosis.py
DiagnosisEngine
¶
Diagnoses errors and suggests remedies.
Takes an ErrorContext and queries all registered remedies to find applicable diagnoses, returning them sorted by confidence (highest first).
Example
registry = create_default_registry() engine = DiagnosisEngine(registry)
context = ErrorContext.from_preflight_error(...) diagnoses = engine.diagnose(context)
for diagnosis in diagnoses: print(f"{diagnosis.issue}: {diagnosis.suggestion}")
Initialize the diagnosis engine.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
remedy_registry
|
RemedyRegistry
|
Registry containing available remedies. |
required |
Source code in src/marianne/healing/diagnosis.py
Functions¶
diagnose
¶
Analyze error and return possible diagnoses.
Queries all registered remedies and collects their diagnoses. Results are sorted by confidence (highest first).
If a remedy's diagnose() raises an exception, a zero-confidence
sentinel Diagnosis is appended with remedy_name set to the failing
remedy's class name and issue describing the failure. This ensures
callers can detect partial diagnosis results without a return-type change.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context with diagnostic information. |
required |
Returns:
| Type | Description |
|---|---|
list[Diagnosis]
|
List of Diagnosis objects, sorted by confidence descending. |
list[Diagnosis]
|
Empty list if no remedies apply. |
Source code in src/marianne/healing/diagnosis.py
get_primary_diagnosis
¶
Get the highest-confidence diagnosis.
Convenience method when you only care about the best match.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context. |
required |
Returns:
| Type | Description |
|---|---|
Diagnosis | None
|
Highest-confidence Diagnosis, or None if no remedies apply. |
Source code in src/marianne/healing/diagnosis.py
get_automatic_diagnoses
¶
Get diagnoses for automatic remedies only.
Filters to only diagnoses that can be auto-applied without user confirmation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context. |
required |
Returns:
| Type | Description |
|---|---|
list[Diagnosis]
|
List of diagnoses from AUTOMATIC remedies. |