You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+65-1Lines changed: 65 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -327,6 +327,21 @@ QuPath integration provides the most powerful way to visualize and interact with
327
327
328
328
**Congratulations!** You have successfully downloaded a public dataset, submitted an Atlas H&E-TME analysis run, and learned how to access and inspect your results.
329
329
330
+
### System Health Checks
331
+
332
+
The Launchpad automatically monitors system health before allowing run submissions. If the system is unhealthy (e.g., network connectivity issues, authentication problems, or platform unavailability), the submission workflow is blocked:
333
+
334
+
- A tooltip displays "System is unhealthy, you cannot prepare a run at this time."
335
+
- The "Next" button in the application workflow is disabled.
336
+
- The health status is shown in the footer bar at the bottom of the Launchpad.
337
+
338
+
To resolve health issues:
339
+
340
+
1. Check the health status indicator in the footer bar
341
+
2. Click "Info and Settings" in the menu to see detailed health information
342
+
3. Verify your network connection and authentication status
343
+
4. Check the [Aignostics Platform Status](https://status.aignostics.com) page
344
+
330
345
### Advanced Setup: Extensions
331
346
332
347
> 💡 The Launchpad features a growing ecosystem of extensions that seamlessly integrate with standard digital pathology tools. To use the Launchpad with all available extensions, run `uvx --from "aignostics[qupath,marimo]" aignostics launchpad`. Currently available extensions are:
to learn about all commands and options available.
402
417
418
+
### System Health Checks
419
+
420
+
The CLI automatically checks system health before uploading slides or submitting runs. If the system is unhealthy, the operation is blocked and an error message is displayed:
421
+
422
+
```
423
+
Error: Platform is not healthy: <reason>. Aborting.
424
+
```
425
+
426
+
To override this behavior (not recommended for production use), add the `--force` flag:
427
+
428
+
```shell
429
+
uvx aignostics application run upload he-tme metadata.csv --force
430
+
uvx aignostics application run submit he-tme metadata.csv --force
431
+
uvx aignostics application run execute he-tme metadata.csv data/ --force
432
+
```
433
+
434
+
To manually check system health before running commands:
435
+
436
+
```shell
437
+
uvx aignostics system health
438
+
```
439
+
403
440
## Python Library: Call the Aignostics Platform API from your Python scripts
404
441
405
442
The Python SDK includes the *Aignostics Python Library* for integration with your Python codebase.
The low-level Python SDK does **not** perform automated health checks before operations. If health verification is required for your use case, you should implement checks in your application logic:
508
+
509
+
```python
510
+
from aignostics import platform
511
+
from aignostics.system import Service as SystemService
512
+
513
+
# Check system health before submitting runs
514
+
health = SystemService().health()
515
+
ifnot health:
516
+
raiseRuntimeError(f"System is unhealthy: {health.reason}")
517
+
518
+
# Proceed with run submission
519
+
client = platform.Client()
520
+
run = client.runs.submit(...)
521
+
```
522
+
523
+
This design gives you full control over health check behavior, allowing you to:
524
+
525
+
- Implement custom retry logic for transient failures
526
+
- Log health status for monitoring and debugging
527
+
- Gracefully handle unhealthy states in your application
528
+
468
529
### Example Notebooks: Interact with the Aignostics Platform from your Python Notebook environment
469
530
470
531
> [!IMPORTANT]
@@ -856,9 +917,12 @@ Architectural style for web services that the Aignostics Platform API follows, e
856
917
**Self-signed URLs**
857
918
Secure URLs with embedded authentication that allow the platform to access user data without exposing credentials.
858
919
859
-
**SVS**
920
+
**SVS**
860
921
Aperio ScanScope Virtual Slide format, commonly used for whole slide images and supported by the platform.
861
922
923
+
**System Health Check**
924
+
Automated verification that the SDK and Aignostics Platform are operational before critical operations. The Launchpad blocks run submission when unhealthy (no override available for regular users). The CLI blocks uploads and submissions by default but allows override with `--force`. The Python Library does not perform automatic health checks, giving developers full control over health verification logic.
Copy file name to clipboardExpand all lines: docs/partials/README_glossary.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -164,9 +164,12 @@ Architectural style for web services that the Aignostics Platform API follows, e
164
164
**Self-signed URLs**
165
165
Secure URLs with embedded authentication that allow the platform to access user data without exposing credentials.
166
166
167
-
**SVS**
167
+
**SVS**
168
168
Aperio ScanScope Virtual Slide format, commonly used for whole slide images and supported by the platform.
169
169
170
+
**System Health Check**
171
+
Automated verification that the SDK and Aignostics Platform are operational before critical operations. The Launchpad blocks run submission when unhealthy (no override available for regular users). The CLI blocks uploads and submissions by default but allows override with `--force`. The Python Library does not perform automatic health checks, giving developers full control over health verification logic.
Copy file name to clipboardExpand all lines: docs/partials/README_main.md
+61Lines changed: 61 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -305,6 +305,21 @@ QuPath integration provides the most powerful way to visualize and interact with
305
305
306
306
**Congratulations!** You have successfully downloaded a public dataset, submitted an Atlas H&E-TME analysis run, and learned how to access and inspect your results.
307
307
308
+
### System Health Checks
309
+
310
+
The Launchpad automatically monitors system health before allowing run submissions. If the system is unhealthy (e.g., network connectivity issues, authentication problems, or platform unavailability), the submission workflow is blocked:
311
+
312
+
- A tooltip displays "System is unhealthy, you cannot prepare a run at this time."
313
+
- The "Next" button in the application workflow is disabled.
314
+
- The health status is shown in the footer bar at the bottom of the Launchpad.
315
+
316
+
To resolve health issues:
317
+
318
+
1. Check the health status indicator in the footer bar
319
+
2. Click "Info and Settings" in the menu to see detailed health information
320
+
3. Verify your network connection and authentication status
321
+
4. Check the [Aignostics Platform Status](https://status.aignostics.com) page
322
+
308
323
### Advanced Setup: Extensions
309
324
310
325
> 💡 The Launchpad features a growing ecosystem of extensions that seamlessly integrate with standard digital pathology tools. To use the Launchpad with all available extensions, run `uvx --from "aignostics[qupath,marimo]" aignostics launchpad`. Currently available extensions are:
to learn about all commands and options available.
380
395
396
+
### System Health Checks
397
+
398
+
The CLI automatically checks system health before uploading slides or submitting runs. If the system is unhealthy, the operation is blocked and an error message is displayed:
399
+
400
+
```
401
+
Error: Platform is not healthy: <reason>. Aborting.
402
+
```
403
+
404
+
To override this behavior (not recommended for production use), add the `--force` flag:
405
+
406
+
```shell
407
+
uvx aignostics application run upload he-tme metadata.csv --force
408
+
uvx aignostics application run submit he-tme metadata.csv --force
409
+
uvx aignostics application run execute he-tme metadata.csv data/ --force
410
+
```
411
+
412
+
To manually check system health before running commands:
413
+
414
+
```shell
415
+
uvx aignostics system health
416
+
```
417
+
381
418
## Python Library: Call the Aignostics Platform API from your Python scripts
382
419
383
420
The Python SDK includes the *Aignostics Python Library* for integration with your Python codebase.
The low-level Python SDK does **not** perform automated health checks before operations. If health verification is required for your use case, you should implement checks in your application logic:
486
+
487
+
```python
488
+
from aignostics import platform
489
+
from aignostics.system import Service as SystemService
490
+
491
+
# Check system health before submitting runs
492
+
health = SystemService().health()
493
+
ifnot health:
494
+
raiseRuntimeError(f"System is unhealthy: {health.reason}")
495
+
496
+
# Proceed with run submission
497
+
client = platform.Client()
498
+
run = client.runs.submit(...)
499
+
```
500
+
501
+
This design gives you full control over health check behavior, allowing you to:
502
+
503
+
- Implement custom retry logic for transient failures
504
+
- Log health status for monitoring and debugging
505
+
- Gracefully handle unhealthy states in your application
506
+
446
507
### Example Notebooks: Interact with the Aignostics Platform from your Python Notebook environment
Copy file name to clipboardExpand all lines: src/aignostics/application/CLAUDE.md
+51Lines changed: 51 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,6 +48,57 @@ Core application operations:
48
48
49
49
## Architecture & Design Patterns
50
50
51
+
### Health Check Gates
52
+
53
+
The application module enforces system health checks before critical operations to prevent users from uploading data or submitting runs when the platform is unavailable.
54
+
55
+
**CLI Health Check Enforcement (`_cli.py`):**
56
+
57
+
The `_abort_if_system_unhealthy()` function is called before upload and submit operations:
58
+
59
+
```python
60
+
def_abort_if_system_unhealthy() -> None:
61
+
"""Check system health and abort if unhealthy."""
62
+
health = SystemService.health_static()
63
+
ifnot health:
64
+
logger.error(f"Platform is not healthy: {health.reason}. Aborting.")
65
+
console.print(f"[error]Error:[/error] Platform is not healthy: {health.reason}. Aborting.")
66
+
sys.exit(1)
67
+
```
68
+
69
+
**Commands with Health Check Gates:**
70
+
71
+
| Command | Health Check | Override |
72
+
|---------|--------------|----------|
73
+
|`run execute`| Yes |`--force`|
74
+
|`run upload`| Yes |`--force`|
75
+
|`run submit`| Yes |`--force`|
76
+
|`run prepare`| No | N/A |
77
+
|`run list`| No | N/A |
78
+
|`run describe`| No | N/A |
79
+
|`run result download`| No | N/A |
80
+
81
+
**GUI Health Check Enforcement (`_gui/_page_application_describe.py`):**
82
+
83
+
The stepper workflow checks health at the application version selection step:
Copy file name to clipboardExpand all lines: src/aignostics/system/CLAUDE.md
+54Lines changed: 54 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,6 +41,60 @@ Core system operations and diagnostics:
41
41
42
42
## Architecture & Design Patterns
43
43
44
+
### Health Check Enforcement
45
+
46
+
The system module's health checks are used by other modules to gate critical operations. This ensures users don't submit runs or upload data when the platform is unavailable.
47
+
48
+
**Enforcement by Interface:**
49
+
50
+
| Interface | Behavior When Unhealthy | Override Mechanism |
The system module's health check aggregates status from **ALL modules** in the SDK by discovering and querying every service that inherits from `BaseService`:
0 commit comments