Troubleshooting
Common issues and solutions for using Latch‑X effectively. If you don't find your issue here, search the docs or contact support.
Quick diagnostic checklist
Run this first
- Read the error text carefully (it usually tells you the failing rule).
- Validate the model validate button.
- Try a minimal model to isolate the issue:
yaml root: A components: A: { type: normal, mttf: 1000, mttr: 1 } dependencies: {} - Check tier & limits (Safety Limits).
- Restart session (log out/in) and retry once.
- Try another browser / clear cache & cookies.
Analysis issues
Analysis fails or times out
Symptoms - Analysis never completes - Long wait with no progress. - “Resource limit exceeded” messages.
Likely causes & fixes
Check these
- Model too large: See Safety Limits for your tier. Simplify (fewer nodes/edges, more hierarchy) or upgrade.
- Network/session issues: Refresh or re‑authenticate.
- Timeout limits reached Retry with lower sim parameters.
BN vs MC results don’t match
Symptoms - Different availabilities / downtimes. - Different critical contributors.
Checklist
Align assumptions
- Repair mode: BN “availability” assumes repairable steady‑state; MC uses temporal simulation. Set
repair_enabledconsistently. - Time horizon:
simulation_timedrives MC runs and BN reporting (e.g., expected downtime). - Randomness: MC has variance. Increase
simulation_runs(1,000 → 10,000) and set arandom_seedfor comparison.
Unexpected analysis results
Symptoms - Availability values seem too high/low. - Critical components show minimal impact.
Steps
Try this
- Parameter sanity: Recheck MTTF/MTTR magnitudes and units.
- Dependency correctness: Confirm the intended AND/OR/quorum structure (see Dependencies).
- Risk modeling: If using
probon risk nodes, remember it means P(UP) = “risk does not materialize”. - Sensitivity Explorer: Force single components DOWN to check impact.
- Simplify & compare: Remove tiers until numbers make sense, then re‑add.
Slow performance
Symptoms - Analysis is much slower than expected.
Optimization
Speed it up
- Reduce MC runs for iteration (100–1,000) and scale for final.
- Prefer BN for quick structural validation; switch to MC for temporal/RTO.
- Layer logic: Use hierarchical logical nodes rather than huge flat gates.
- Prune model: Remove non‑critical nodes during exploration.
- Check Latches" Latches can be significant contributor to the number of generated events.
- Low MTTF/MTTR " Extremely Low MTTF/MTTR can be significant contributor to the number of generated events
Model creation issues
Component validation errors
Common messages & fixes
Fixes
- “MTTF must be positive” → ensure values > 0 (in hours).
- “Use prob OR mttf+mttr” → pick one approach for normals.
- “Stored model limit reached for your tier” → appears when you save a new model or use Save As while your stored models are at your tier limit. The storage limit does not prevent opening or re-saving models you already have; other validation and tier limits still apply. Delete a model you no longer need, or upgrade, to store more.
- “prob must be a success probability greater than 0 and less than 1” → use a
value strictly between 0 and 1. Exactly 0 or 1, negative, larger than 1, or
non-numeric values are rejected in every model version, including stored models.
For a component that can never fail, remove it or use a value such as
0.9999. - Unsupported distribution or dispersion field → use failure
exp, repairexp | delta, and removesigma/omega. - “max_delay required for latch with mttf” → add
max_delay. - “Unknown type” → valid types are
normal | logical | latch. - “Duplicate component name” → choose a unique name.
Dependency issues
Common problems
Don’t do this
- Circular dependency detected → refactor.
- Invalid dependency target (name not in
components) → fix typo / add component. - Multiple dep types on same target → split into layered logical nodes.
and/or/n_of_kon a normal target → use a logical target instead.n_of_kwith invalidn→ ensure1 ≤ n ≤ len(inputs).n_of_kcontainsk→ replace it with canonical threshold fieldn; do not keep both fields.n_of_khas duplicate inputs → list each existing component exactly once.
Use the graph - Open diagram view to spot cycles, orphans, and overly dense hubs.
YAML parsing/import errors
Symptoms - Import fails; parser errors; model won’t load.
Fixes
YAML hygiene
- Use spaces, not tabs; consistent indentation (2 spaces recommended).
- Avoid duplicate keys in the same map.
- Ensure lists are properly indented:
```yaml
do: [a, b]
# or
do:
- a
- b ```
- Validate with any YAML linter if in doubt.
Model integrity (signing)
Errors - “hashblock invalid” / “signature mismatch”. - A saved model fails current model validation while loading.
Fixes
- Re‑validate the model to regenerate the signature.
- Ensure no background edits modified the file between save and upload.
- Saved models are checked against the current model contract before being loaded
into a session. Unsupported legacy fields such as n_of_k.k are not migrated
automatically; correct an exported copy to use canonical n, then validate and
import it again, or contact support if no valid export is available.
Graph & UI issues
Diagram not rendering / blank SVG
Causes & fixes - Cache: Login/Logout.
Saving & autosave
Symptoms - Changes don’t persist; “Save failed”.
Fixes - Check connectivity; wait for autosave indicator to finish. - Manually Export YAML as a backup; re‑import if needed. - Avoid closing the tab during save operations.
Login & access
Symptoms - Session expires quickly; features greyed out.
Fixes - Clear cookies for the site and sign in again. - Check your tier and active limits (feature gating). - Try another browser / incognito session.
LLM Assistant issues
Model generation / editing via LLM
Common issues - Output too generic or overly complex. - Wrong component types, parameters, or dependency style. - Missing critical elements.
Improve results
Prompting checklist
- Provide context: system overview, major tiers, constraints.
- Be specific: list components, known MTTF/MTTR or
prob, failover expectations. - State targets:
simulation_time,target_availability,target_rto,repair_enabled. - Iterate: generate a minimal skeleton first, then refine.
- Use higher tier AI model try the prompt with higher AI model (costs more units)
Always check if AI generated models meet your criteria.
Reporting issues
What to include
Technical details - Browser and version, OS, time of occurrence. - Exact error text and screenshots. - Account tier/subscription; current model size (nodes/edges).
Context - What you attempted; steps to reproduce. - Expected vs actual behavior. - Relevant YAML snippet (prefer a minimal reproducer).
Prevention tips
- Build incrementally; validate at each step.
- Export YAML backups regularly.
- Keep units consistent (hours everywhere).
- Use hierarchical logical nodes; avoid mixing dep types per target.
- Set simulation_time to match SLA reporting.
- Start MC with smaller
simulation_runs; scale as needed.
More help
- → User guide home — Complete docs
- → Introduction — Basic concepts and workflow
- → Safety limits — Tier & runtime constraints
- → Components and Dependencies — Modeling rules
- → Simulation Settings — Engine knobs
- → BN Engine / MC Engine — Analysis details
Distribution validation and changed results
- “mttf/mttr must be a finite positive arithmetic mean”: supply a positive,
finite time in hours. Zero is not accepted, even in older models that were
previously accepted (for example,
mttr: 0intended as instant repair). - “Field sigma/omega is no longer supported”: remove the obsolete field.
- “Unsupported mttf_dist/mttr_dist/distribution/dist”: failure supports only
exp; repair supportsexpordeltaviamttr_dist.normandlognormare no longer available. Addingexpalongside a retired legacy selector does not bypass validation. - An older model passes its JSON schema but is rejected by Latch-X: schema
validity and supported features are separate checks. Experimental distributions
and dispersion fields are retired for every version. Keeping an old version
does not enable a legacy engine. Explicitly select supported assumptions and
remove retired fields; use
schema_version: "2.8"when updating the source. The application does not silently convert or re-sign stored models. - Regenerate simulations and reports after changing assumptions. Existing caches are not automatically recalculated by this change.