Troubleshooting
> Release admission classification: internal_only_excluded
Use this page as the short-entry runbook. Deeper operator procedures remain in the existing runbooks and product docs.
Reader Outcome
This page should let an operator quickly classify whether the problem is primarily:
- Spindle runtime/materialization drift
- MCP gateway or auth drift
- callback/approval/dispatch drift
- support-lane drift
- release/metadata/docs drift
If the failure belongs to a foreign owner after the first bounded Spindle check, gather evidence here and hand off instead of inventing a local workaround.
Primary References
- Operations
- Runbook
- Stack Contract (
docs/STACK_CONTRACT.md) - Integrations
- MCP Operations (
docs/MCP_OPERATIONS.md)
Runtime / Compose / Drift Problems
Run this check:
python infra/scripts/verify_stack_contract.py --check-running
python infra/scripts/verify_runtime_materialization.py --output artifacts/evidence/runtime-materialization.json
python infra/scripts/verify_accounting_workspace_setup.py --ssh-target <internal-runtime-redacted><internal-runtime-redacted> --expected-company HERP --expected-country Germany
python maintenance/verify_oss_inventory_version_truth.py --check-live --ssh-target <internal-runtime-redacted><internal-runtime-redacted> --output artifacts/evidence/oss-version-truth.live.json
If the Accounting workspace crashes on Payment Entry Number Cards:
- run the accounting workspace verifier above
- if
payment_entry_table_present=false, rerun the canonical bootstrap/migrate path:bash infra/scripts/bootstrap-site.sh
- if the verifier still shows
Payment EntryDocType truth but the table is unreadable or missing, run the repo-owned ghost-table repair path:python infra/scripts/repair_payment_entry_ghost_table.py --ssh-target <internal-runtime-redacted><internal-runtime-redacted>
- if the schema is green but the HERP Germany demo company is still missing, apply:
bash infra/scripts/apply-tenant-setup.sh infra/tenant-setup/herp-de-sandbox.json
First handoff clue:
- if compose/runtime truth is clean but the shared-host authority or foreign callback lane is still broken, classify as external owner follow-up instead of changing Spindle business truth locally
MCP / Operator Gateway Problems
Run this check:
python infra/scripts/verify_authenticated_mcp_demo_action.py --ssh-target <internal-runtime-redacted><internal-runtime-redacted> --host-repo-path /home/administrator/jhf-spindle --output artifacts/evidence/mcp-authenticated-demo-action-live.json
python infra/scripts/mcp-call.py --help
Callback / Approval / Dispatch Problems
Run this check:
python infra/scripts/check_callback_transport.py --output artifacts/callback-transport.json
bash infra/scripts/contract-smoke.sh
python -m pytest -q apps/jhf_spindle_core/tests/test_approval_packets.py apps/jhf_spindle_core/tests/test_document_dispatch.py
Support / Zammad Problems
Run this check:
bash infra/scripts/zammad-smoke.sh
python infra/scripts/run_zammad_erp_corner_cases.py
python infra/scripts/support_case_smoke.py
Release / Contract Drift Problems
Run this check:
python infra/scripts/check_markdown_compliance.py
python infra/scripts/check_compatibility_contracts.py --check
python infra/scripts/export_fabric_metadata.py --check
python infra/scripts/openclaw_plus_acceptance.py
Public-docs/source-truth check:
python infra/scripts/check_markdown_compliance.py
python infra/scripts/check_compatibility_contracts.py --check
python infra/scripts/export_fabric_metadata.py --check
License notice: AGPLv3 (GNU Affero General Public License v3.0) Website: https://helpifyr.com