isabl-debug-analysis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited isabl-debug-analysis (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are helping debug a failed or problematic Isabl analysis.
Work through these steps systematically:
import isabl_cli as ii
# Get the analysis
analysis = ii.Analysis(ANALYSIS_PK)
print(f"Status: {analysis.status}")
print(f"Application: {analysis.application.name} v{analysis.application.version}")
print(f"Storage URL: {analysis.storage_url}")
print(f"Targets: {[t.system_id for t in analysis.targets]}")
print(f"References: {[r.system_id for r in analysis.references]}")The generated command is in head_job.sh:
# View the command that was executed
cat {analysis.storage_url}/head_job.shLook for:
# Standard output
cat {analysis.storage_url}/head_job.log
# Standard error (usually more informative)
cat {analysis.storage_url}/head_job.errCommon error patterns:
| Error | Likely Cause |
|---|---|
| "File not found" | Input file path incorrect or missing |
| "Permission denied" | Storage directory permissions |
| "Command not found" | Tool path in settings is wrong |
| "Memory allocation" | Job needs more memory (batch system) |
| "Timeout" | Job exceeded time limit |
# Verify target experiments have data
for target in analysis.targets:
print(f"{target.system_id}:")
print(f" Raw data: {target.raw_data}")
print(f" BAM files: {target.bam_files}")# Check files exist
ls -la {path_to_input_file}If the app depends on other analyses:
# Find dependency analyses
from isabl_cli import utils
# Check if dependency result exists
result, dep_analysis = utils.get_result(
experiment=analysis.targets[0],
application_key=DEPENDENCY_APP_PK,
result_key="expected_result"
)
print(f"Dependency analysis: {dep_analysis}")
print(f"Dependency result: {result}")# Get application settings
app = ii.get_instance("applications", analysis.application.pk)
print(f"Settings: {app.settings}")
# Check specific setting
from my_apps import MyApplication
instance = MyApplication()
print(f"Tool path: {instance.settings.tool_path}")# Wipe failed analysis and restart
isabl myapp-1-0 --analyses pk={ANALYSIS_PK} --force --commit# Resume from checkpoint (if supported)
isabl myapp-1-0 --analyses pk={ANALYSIS_PK} --restart --commit# Execute locally instead of batch system
isabl myapp-1-0 --targets EXPERIMENT_ID --local --commit# If analysis completed but status is wrong
ii.patch_instance("analyses", analysis.pk, status="SUCCEEDED")# For SLURM
sacct -j JOB_ID --format=JobID,State,ExitCode,MaxRSS,Elapsed
# For LSF
bjobs -l JOB_ID
bhist -l JOB_IDIf the analysis SUCCEEDED but something else failed:
# Check if signals are configured
from isabl_cli.settings import system_settings
print(f"ON_STATUS_CHANGE: {system_settings.ON_STATUS_CHANGE}")
# Manually trigger signals
from isabl_cli import signals
signals.run_on_status_change(analysis)When reporting, include:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.