Troubleshooting
Scope
This page is the canonical v1.6 troubleshooting surface for jhf-loom.
It is intentionally command-first and points to bounded diagnostics instead of ad-hoc host probing.
Common Failure Classes
Search Mandatory Gate Fails
Symptoms:
- readiness is red
- search service is unhealthy or delayed
Likely owner:
JaddaHelpifyr/jhf-loom
First checks:
- confirm readiness is red before collecting broader diagnostics
- validate the runtime contract to rule out repo/runtime drift first
Run:
bash scripts/loom-runtime-control.sh readiness
python scripts/validate_runtime_contract.py
Evidence to collect:
- readiness command output
- runtime contract validator output
Next action:
- if search remains unhealthy after bounded postcheck, continue with
docs/OPERATIONS.mdand attach the bounded diagnostics output to the Loom owner issue
Escalation path:
- ingress/auth symptoms ->
jhf-openclaw-envorjhf-heddle - search/runtime symptoms -> stay in
jhf-loom
Verify after recovery:
bash scripts/loom-runtime-control.sh postcheck
bash scripts/loom-runtime-control.sh readiness
Runtime Materialization Drift
Symptoms:
- repo truth and live stack diverge
- app readback does not match compose/runtime truth
Likely owner:
JaddaHelpifyr/jhf-loom
First checks:
- compare repo truth and live stack with the repo-owned drift validator first
- avoid ad-hoc manual host probing before the validator output exists
Run:
python scripts/validate_runtime_materialization_drift.py
python scripts/validate_runtime_materialization_drift.py --host <live-host> --stack-dir <owner-runtime-stack-dir> --insecure
Evidence to collect:
- local drift validator JSON/text output
- live host drift validator output for the canonical stack dir
Next action:
- if drift is repo-owned, fix the repo truth or materialization path in the Loom lane
- if ingress or identity readback mismatches the stack truth, hand off to the owning repo instead of patching Loom around it
Escalation path:
- stack/materialization drift ->
jhf-loom - ingress/TLS/DNS drift ->
jhf-openclaw-env - auth/session drift ->
jhf-heddle
Verify after recovery:
python scripts/validate_runtime_materialization_drift.py --host <live-host> --stack-dir <owner-runtime-stack-dir> --insecure
Shared-Host Pressure / Memory Guard
Symptoms:
- excessive swap growth
- low-idle profile no longer stays in the expected budget corridor
Likely owner:
JaddaHelpifyr/jhf-loom
First checks:
- run the memory guard before any restart decision
- confirm whether the idle-profile verifier or the guard fired first
Run:
bash scripts/loom-runtime-control.sh memory-guard
python scripts/validate_live_low_idle_runtime_policy.py --insecure --idle-window-seconds 1800 --moderate-traffic-seconds 90
Evidence to collect:
- memory-guard output
- low-idle validator output
Next action:
- if the guard fails closed, treat it as a runtime-capacity incident and follow the reclaim/recovery runbook instead of forcing repeated restarts
Escalation path:
- Loom runtime capacity issue ->
jhf-loom - shared host pressure caused by external stack competition -> explicit owner handoff after Loom evidence exists
Verify after recovery:
bash scripts/loom-runtime-control.sh memory-guard
Run This Check
python scripts/validate_docs_platform_v1_6.py
python scripts/validate_docs_inventory_rollout.py
bash scripts/loom-runtime-control.sh diagnostics
bash scripts/loom-runtime-control.sh readiness
Supporting Deep-Dive Docs
- Operations
- Runbook
- Deploy and Verify (
docs/DEPLOY_VERIFY.md) - Shared Host Memory Reclaim (
docs/SHARED_HOST_MEMORY_RECLAIM.md)
License: AGPLv3.
Helpifyr: https://helpifyr.com