[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-vss-sop-test":3,"mdc-k87pua-key":37,"related-org-nvidia-vss-sop-test":3219,"related-repo-nvidia-vss-sop-test":3373},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"vss-sop-test","test and debug VSS SOP deployments","Run post-deployment tests for the VSS SOP blueprint. Checks service health, ELK data pipeline, VIOS recording\u002Flivestream, and VSS agent (MCP, LLM, VLM, snapshot, video, report). Auto-debugs failures. Use when asked to test SOP, verify SOP deployment, check SOP services, validate SOP, run SOP health checks, or troubleshoot SOP after deploy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Monitoring","monitoring","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Testing","testing",{"name":24,"slug":25,"type":15},"Debugging","debugging",39,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsop-monitoring-blueprints","2026-07-14T05:32:49.746967","CC-BY-4.0 AND Apache-2.0",12,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Industrial SOP Monitoring Blueprints for Training & Inference","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsop-monitoring-blueprints\u002Ftree\u002FHEAD\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-test","---\nname: vss-sop-test\ndescription: >-\n  Run post-deployment tests for the VSS SOP blueprint. Checks service health,\n  ELK data pipeline, VIOS recording\u002Flivestream, and VSS agent (MCP, LLM, VLM,\n  snapshot, video, report). Auto-debugs failures. Use when asked to test SOP,\n  verify SOP deployment, check SOP services, validate SOP, run SOP health checks,\n  or troubleshoot SOP after deploy.\nowner: NVIDIA\nservice: vss-sop\nversion: 1.0.0\nlicense: CC-BY-4.0 AND Apache-2.0\nreviewed: 2026-06-23\nmetadata:\n  openclaw: { \"emoji\": \"🧪\", \"os\": [\"linux\"] }\n  author: \"Quan Vu \u003Cqvu@nvidia.com>\"\n  tags: [\"vss\", \"sop\", \"test\"]\n---\n\n# VSS SOP — Post-Deployment Test Suite\n\nRun this skill after the VSS SOP blueprint has been deployed (see `vss-sop-deploy`). It validates every layer of the stack, and when a test fails it auto-debugs by collecting container logs and printing actionable fix hints.\n\n## Overview\n\n- Verify a fresh SOP deployment is healthy\n- Check that ELK is receiving VLM data\n- Validate VIOS recording and livestream\n- Test the VSS agent: MCP server, LLM endpoint, VLM endpoint, snapshot, video, and report generation\n- Troubleshoot a broken deployment\n\n## Instructions\n\n### Quick Start\n\n```bash\ncd \u003Cbp-repo>\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py \\\n  --bp-repo . \\\n  --env-file deployments\u002Fsop\u002F.env\n```\n\nRun a single phase:\n\n```bash\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 1   # Service health only\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 2   # ELK only\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 3   # VIOS only\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 4   # VSS Agent only\n```\n\n### Test Phases\n\n### Phase 1 — Service Health\n\nChecks that all required Docker containers are running (`Up`).\n\n| Required containers | Optional |\n|---|---|\n| `mdx-kafka`, `mdx-redis`, `mdx-elastic`, `mdx-logstash`, `mdx-kibana`, `vss-agent`, `vss-va-mcp`, `mdx-ds-sop-1`, `sensor-ms-sop`, `recorder-ms-1-sop`, `rtspserver-ms-1-sop`, `storage-ms-sop`, `sdr-http-recorder-sop`, `sdr-http-rtspserver-sop` | `mdx-prometheus`, `mdx-grafana`, `mdx-dcgm-exporter`, `mdx-cadvisor`, `mdx-node-exporter`, `mdx-phoenix`, `vss-ui` |\n\n**Auto-debug:** Prints `docker logs \u003Ccontainer> --tail 30` for any missing or unhealthy container.\n\n**Manual fix:** Redeploy with `docker compose -f compose.yml --env-file sop\u002F.env --profile bp_sop_2d up -d`.\n\n### Phase 2 — ELK Data Pipeline\n\n1. **Elasticsearch reachable** — `GET localhost:9200\u002F_cluster\u002Fhealth`\n2. **Cluster health** — must be `green` or `yellow`\n3. **Indices exist** — at least one `mdx-vlm-captions-*` index\n4. **VLM messages** — `mdx-vlm-captions-*` index has `> 0` documents\n5. **Kibana dashboard fields** — verifies the actual ES mapping has the flat JSON fields the dashboard expects (`response`, `sensor_id`, `cv_execute_time`, `vlm_execute_time`, `chunk_idx`, `frame_number`, `@timestamp`), and that no protobuf-style nested fields (`llm`, `sensor`) are present instead\n6. **Kibana ndjson fields** — queries Kibana's saved objects API to confirm the imported data view's runtime fields reference the correct flat field names (not `llm.queries.response.keyword` or `sensor.id.keyword`), and that `timeFieldName` is `@timestamp`\n\n**Auto-debug:** Tails `mdx-logstash`, `mdx-elastic`, and `mdx-kibana` logs.\n\n**Manual fix if no VLM data:**\n\n```bash\n# Verify Kafka topic has messages\ndocker exec mdx-kafka kafka-console-consumer.sh \\\n  --bootstrap-server localhost:9092 --topic mdx-vlm-captions \\\n  --from-beginning --max-messages 3 --timeout-ms 10000\n\n# Check Logstash pipeline\ndocker logs mdx-logstash --tail 50\n```\n\n**Manual fix if Kibana dashboard field mismatch:**\n\n```bash\n# Check the actual field structure in Elasticsearch\ncurl localhost:9200\u002Fmdx-vlm-captions-*\u002F_mapping?pretty\n\n# If fields are flat (response, sensor_id) but ndjson uses nested (llm.queries.response):\n# Re-import the corrected ndjson\ncurl -X POST localhost:5601\u002Fapi\u002Fsaved_objects\u002F_import?overwrite=true \\\n  -H 'kbn-xsrf: true' \\\n  --form file=@deployments\u002Fsop\u002Fsop-app\u002Fkibana-dashboard\u002Fsop-kibana-objects.ndjson\n```\n\n### Phase 3 — VIOS Recording & Livestream\n\n1. **VST reachable** — `GET localhost:30888\u002Fvst\u002Fapi\u002Fv1\u002Fsensor\u002Flist`\n2. **Sensors registered** — at least one sensor (typically `sensor_0`)\n3. **Streams available** — `\u002Fsensor\u002Fstreams` returns data\n4. **Recording** — checks `\u002Frecord\u002Fstatus` per sensor\n5. **Livestream** — checks `\u002Flive\u002Fstreams` per sensor\n\n**Auto-debug:** Tails `sensor-ms-sop`, `rtspserver-ms-1-sop`, `recorder-ms-1-sop`, and `sdr-http-recorder-sop` logs.\n\n**Manual fix if no sensor:**\n\n```bash\ncd \u003Cbp-repo>\u002Fdeployments\u002Fsop\u002Fsop-app\u002Fhelper-scripts\nnohup .\u002Frun_rtsp_test.sh > client.log &\n```\n\n### Phase 4 — VSS Agent End-to-End\n\n| # | Test | Method |\n|---|---|---|\n| 4.1 | MCP health | `GET localhost:9901\u002Fhealth` |\n| 4.2 | LLM endpoint | `GET \u003CLLM_BASE_URL>\u002Fv1\u002Fmodels` |\n| 4.3 | VLM endpoint | `GET \u003CVLM_BASE_URL>\u002Fv1\u002Fmodels` |\n| 4.4 | Agent health | `GET localhost:8000\u002Fhealth` |\n| 4.5 | Snapshot from VIOS | Agent chat: *\"Take a snapshot of sensor sensor_0\"* |\n| 4.6 | Video → VLM | Agent chat: *\"What is the current SOP status for sensor sensor_0?\"* |\n| 4.7 | Report generation | Agent chat: *\"Generate an SOP compliance report for sensor sensor_0 from … to …\"* |\n\n**Auto-debug:** Tails `vss-agent`, `vss-va-mcp`, and `mdx-ds-sop-1` logs for any failing sub-test.\n\n**Manual fix for common agent failures:**\n\n```bash\n# Agent won't start — check LLM\u002FVLM config\ndocker inspect vss-agent --format '{{range .Config.Env}}{{println .}}{{end}}' | grep -E '(LLM|VLM)'\n\n# MCP not healthy — restart\ndocker restart vss-va-mcp\n\n# NVIDIA API key missing for remote NIM\nexport NVIDIA_API_KEY=\"$(cat \u003Cbp-repo>\u002F.secret\u002Fnvidia_build_api_key.txt)\"\ndocker compose -f compose.yml --env-file sop\u002F.env --profile bp_sop_2d up -d vss-agent\n```\n\n**Phase 4.7 \"no streams found\" on fresh deployment:**\nIf the test runs immediately after deploy, the report time window (`now-1min to now`) may\nprecede the first recording. Wait at least 1 minute after the RTSP stream registers before running\nPhase 4.\n\n## Examples\n\n### Pass Criteria — MANDATORY\n\n**ALL tests must pass (100%). There is NO acceptable failure rate.**\n\nRules the agent MUST follow:\n\n1. **Zero tolerance for failures.** Every single test check across all phases MUST pass. A result of 36\u002F38 or 17\u002F19 is a FAIL — not a pass with caveats.\n2. **Do NOT classify failures as \"environmental\", \"infrastructure\", \"test harness\", or \"intermittent\".** Every failure is a bug until you have fixed it and the test passes on re-run.\n3. **Do NOT lower the pass threshold.** Never say \"good enough\", \"residual\", \"non-blocking\", or \"acceptable failure\". If a test fails, fix it.\n4. **Do NOT skip or move on.** If a test fails after 3 fix attempts, STOP and ask the user for help. Do NOT proceed to the next phase or declare completion.\n5. **Do NOT mark a phase as PASS if any check within it failed.** Use FAIL until every check is green.\n6. **Timeout failures are bugs too.** If a test times out (e.g., 30s client read-timeout), increase the timeout or fix the underlying latency — do NOT dismiss it as a test configuration issue.\n7. **Re-run after every fix.** After applying a fix, re-run the failing phase to confirm the fix works. A fix is not verified until the test passes.\n\n**Completion criteria:** The pipeline is complete ONLY when the final report shows `38\u002F38` (or equivalent total) with zero failures across all phases. Any other result means more work is needed.\n\n## Workflow for the Agent\n\nCopy this checklist and track progress:\n\n```\nTest Progress:\n- [ ] Phase 1: Service health — ALL checks PASS\n- [ ] Phase 2: ELK data pipeline — ALL checks PASS\n- [ ] Phase 3: VIOS recording & livestream — ALL checks PASS (7\u002F7)\n- [ ] Phase 4: VSS agent (MCP, LLM, VLM, snapshot, video, report) — ALL checks PASS (7\u002F7)\n- [ ] Auto-debug any failures (do NOT skip — every failure must be fixed)\n- [ ] Auto-update vss-sop-build skills\u002Fscripts if root cause found\n- [ ] Confirm 100% pass rate before reporting to user\n- [ ] Report summary to user\n```\n\n**Step 1 — Determine `\u003Cbp-repo>`**\n\n```bash\n# Usually the vss-sop checkout\nBP_REPO=$(pwd)   # or wherever the user cloned vss-sop\n```\n\n**Step 2 — Run the full test suite**\n\n```bash\ncd \"$BP_REPO\"\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py \\\n  --bp-repo \"$BP_REPO\" \\\n  --env-file \"$BP_REPO\u002Fdeployments\u002Fsop\u002F.env\"\n```\n\n## Error Handling\n\n### Auto-Debugging Failures (MANDATORY — do NOT skip)\n\n**CRITICAL: Every failing test MUST be fixed. Do NOT classify any failure as \"environmental\" or \"acceptable\" and move on.**\n\nThe script already collects container logs for failures. Additionally:\n\n1. Read the `[FAIL]` output and the auto-debug hints printed by the script.\n2. Apply the suggested fix (restart container, re-export key, re-run RTSP test, etc.).\n3. Re-run the failing phase only:\n\n```bash\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase \u003CN>\n```\n\n4. Repeat until ALL tests in that phase pass (100%).\n5. If a test still fails after 3 fix attempts, **STOP and ask the user for help**. Do NOT declare completion or proceed to the next step.\n6. **Never rationalize a failure.** Statements like \"this is an environmental issue, not a code defect\" are NOT acceptable reasons to skip a fix. Either fix the environment or fix the test.\n\n### Auto-Updating the Upstream Skill After Root-Cause Fix\n\nWhen a test failure is debugged and the root cause is identified, update the corresponding upstream skill so the bug cannot recur. First determine **where** the root cause lives, then update the correct skill:\n\n| Root cause lives in… | Upstream skill to update |\n|---|---|\n| Build\u002Fdeploy config (`.env`, YAML, compose, copy scripts, build steps) | **`vss-sop-build`** (`agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002F`) |\n| DS-SOP source code (Python, DeepStream pipeline, Triton, VLM inference, API, Dockerfile, protos, SOP checker, RTSP streaming, etc.) | **`ds-sop-skills`** (`..\u002Fds-sop-skills\u002Fdeepstream-sop\u002F`) |\n\nKeep every change **simple and general** — fix the pattern, not just the instance.\n\n#### 4a. Root cause in build\u002Fdeploy → update `vss-sop-build`\n\n| Root-cause category | What to update in `vss-sop-build` |\n|---|---|\n| Missing\u002Fwrong config value (`.env`, YAML) | Fix the default in the matching reference file under `agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Freferences\u002F` |\n| Missing build step or wrong ordering | Add\u002Freorder step in the relevant `*-building.md` reference doc |\n| Compose issue (profile, volume, depends_on) | Patch the reference compose file(s) under `agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Freferences\u002Fdeployments\u002F` or `agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Freferences\u002Fconfigs\u002F` |\n| Script bug (copy, patch, verify) | Fix the script under `agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Fscripts\u002F` |\n| Undocumented failure mode | Add entry to `vss-sop-build` SKILL.md `## Error Handling` section |\n\n#### 4b. Root cause in DS-SOP source code → update `ds-sop-skills`\n\n| Root-cause category | What to update in `ds-sop-skills` |\n|---|---|\n| API endpoint \u002F schema bug | Fix the reference in `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_01_fastapi_endpoints.md` or `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_02_pydantic_schemas.md` |\n| DeepStream pipeline issue | Fix the reference in `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_03_deepstream_pipeline.md` or `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_04_config_templates.md` |\n| Triton \u002F DDM model issue | Fix the reference in `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_05_triton_ddm_model.md` or `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_05b_custom_postprocess.md` |\n| SOP process \u002F checker logic | Fix the reference in `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_06_sop_process_manager.md` or `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_06b_sop_checker.md` |\n| VLM inference bug | Fix `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fvllm_inference_reference.py` or the corresponding skill doc |\n| RTSP streaming output | Fix `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_18_rtsp_streaming_output.md` or the reference code |\n| Messaging \u002F Kafka schema | Fix `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_16_message_schema.md` or `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fmessager_reference.py` |\n| Dockerfile \u002F build | Fix `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002FDockerfile_reference` or `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_09_docker_build_deploy.md` |\n| Reference source file bug | Fix the corresponding `*_reference.py` \u002F `*_reference.cpp` file under `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002F` |\n| Undocumented failure mode | Add entry to `..\u002Fds-sop-skills\u002Fdeepstream-sop\u002FSKILL.md` error handling or the relevant skill doc |\n\n#### Procedure (applies to both 4a and 4b):\n\n1. **Classify the root cause** — determine whether it belongs to build\u002Fdeploy config (`vss-sop-build`) or DS-SOP source code (`ds-sop-skills`).\n2. **Identify the file** — map the root cause to the corresponding source file in the chosen skill's directory.\n3. **Make the minimal fix** — change only what is needed; prefer updating a default value, adding a guard\u002Fcheck, or appending an entry under Error Handling over larger rewrites.\n4. **Verify consistency**:\n   - If a `vss-sop-build` reference was changed, re-run `agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Fscripts\u002Fverify_build.sh` to confirm the build still passes.\n   - If a `ds-sop-skills` reference was changed, regenerate the source and rebuild `ds-sop:1.0.0` to confirm the fix.\n5. **Log the change** — include in the final report which skill and file was updated and why.\n\n> **Rule of thumb:** if the root cause is in the generated DS-SOP source code (Python logic, pipeline config, API, Dockerfile, etc.), the fix belongs in `ds-sop-skills` — so the next generation produces correct code. If it is in the VSS blueprint build process (compose wiring, `.env` defaults, copy scripts, build ordering), the fix belongs in `vss-sop-build`. If it is environment-specific (wrong IP, expired key), just document it in the report — don't change either skill.\n\n**Step 5 — Report results**\n\nPresent the final summary table to the user. The report MUST show 100% pass rate across all phases.\n\n- If all tests pass: report the green summary.\n- If any test still fails: report the failure with full debug context and **explicitly state that the pipeline is NOT complete**. Do NOT use language suggesting partial success (e.g., \"36\u002F38 checks pass\" is a failure report, not a success report).\n\nIf any `vss-sop-build` or `ds-sop-skills` files were updated in Step 4, list them with a one-line summary of each change.\n\n## Service Endpoints Reference\n\n| Service | URL |\n|---|---|\n| Elasticsearch | `http:\u002F\u002Flocalhost:9200` |\n| Kibana | `http:\u002F\u002F\u003CEXTERNAL_IP>:5601` |\n| VST (VIOS) | `http:\u002F\u002Flocalhost:30888\u002Fvst` |\n| VSS Agent | `http:\u002F\u002Flocalhost:8000` |\n| VSS VA MCP | `http:\u002F\u002Flocalhost:9901` |\n| LLM NIM | Configured via `LLM_BASE_URL` in `.env` |\n| VLM NIM | Configured via `VLM_BASE_URL` in `.env` |\n| VSS UI | `http:\u002F\u002F\u003CEXTERNAL_IP>:3000` |\n| Phoenix | `http:\u002F\u002F\u003CEXTERNAL_IP>:6006` |\n\n## Dependencies\n\nThe test script requires only `requests` (installed in most Python environments). No additional `pip install` needed if you have a standard Python 3.8+ environment.\n\n---\n\n## License\n\nUse of this skill is governed by the [Creative Commons Attribution 4.0 International License (CC BY 4.0)](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002Flegalcode.en) and the [Apache License, Version 2.0](https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0).\n",{"data":38,"body":52},{"name":4,"description":6,"owner":9,"service":39,"version":40,"license":29,"reviewed":41,"metadata":42},"vss-sop","1.0.0","2026-06-23",{"openclaw":43,"author":47,"tags":48},{"emoji":44,"os":45},"🧪",[46],"linux","Quan Vu \u003Cqvu@nvidia.com>",[49,50,51],"vss","sop","test",{"type":53,"children":54},"root",[55,64,79,86,116,122,129,227,232,342,348,354,367,550,569,587,593,792,821,829,972,980,1113,1119,1206,1238,1246,1310,1316,1499,1526,1534,1770,1788,1794,1800,1808,1813,1886,1904,1910,1915,1925,1939,1981,1989,2081,2087,2093,2101,2106,2132,2167,2197,2203,2215,2302,2314,2326,2473,2484,2755,2761,2869,2904,2912,2917,2937,2955,2961,3152,3158,3179,3183,3189,3213],{"type":56,"tag":57,"props":58,"children":60},"element","h1",{"id":59},"vss-sop-post-deployment-test-suite",[61],{"type":62,"value":63},"text","VSS SOP — Post-Deployment Test Suite",{"type":56,"tag":65,"props":66,"children":67},"p",{},[68,70,77],{"type":62,"value":69},"Run this skill after the VSS SOP blueprint has been deployed (see ",{"type":56,"tag":71,"props":72,"children":74},"code",{"className":73},[],[75],{"type":62,"value":76},"vss-sop-deploy",{"type":62,"value":78},"). It validates every layer of the stack, and when a test fails it auto-debugs by collecting container logs and printing actionable fix hints.",{"type":56,"tag":80,"props":81,"children":83},"h2",{"id":82},"overview",[84],{"type":62,"value":85},"Overview",{"type":56,"tag":87,"props":88,"children":89},"ul",{},[90,96,101,106,111],{"type":56,"tag":91,"props":92,"children":93},"li",{},[94],{"type":62,"value":95},"Verify a fresh SOP deployment is healthy",{"type":56,"tag":91,"props":97,"children":98},{},[99],{"type":62,"value":100},"Check that ELK is receiving VLM data",{"type":56,"tag":91,"props":102,"children":103},{},[104],{"type":62,"value":105},"Validate VIOS recording and livestream",{"type":56,"tag":91,"props":107,"children":108},{},[109],{"type":62,"value":110},"Test the VSS agent: MCP server, LLM endpoint, VLM endpoint, snapshot, video, and report generation",{"type":56,"tag":91,"props":112,"children":113},{},[114],{"type":62,"value":115},"Troubleshoot a broken deployment",{"type":56,"tag":80,"props":117,"children":119},{"id":118},"instructions",[120],{"type":62,"value":121},"Instructions",{"type":56,"tag":123,"props":124,"children":126},"h3",{"id":125},"quick-start",[127],{"type":62,"value":128},"Quick Start",{"type":56,"tag":130,"props":131,"children":136},"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd \u003Cbp-repo>\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py \\\n  --bp-repo . \\\n  --env-file deployments\u002Fsop\u002F.env\n","bash","",[137],{"type":56,"tag":71,"props":138,"children":139},{"__ignoreMap":135},[140,175,195,213],{"type":56,"tag":141,"props":142,"children":145},"span",{"class":143,"line":144},"line",1,[146,152,158,164,170],{"type":56,"tag":141,"props":147,"children":149},{"style":148},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[150],{"type":62,"value":151},"cd",{"type":56,"tag":141,"props":153,"children":155},{"style":154},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[156],{"type":62,"value":157}," \u003C",{"type":56,"tag":141,"props":159,"children":161},{"style":160},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[162],{"type":62,"value":163},"bp-rep",{"type":56,"tag":141,"props":165,"children":167},{"style":166},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[168],{"type":62,"value":169},"o",{"type":56,"tag":141,"props":171,"children":172},{"style":154},[173],{"type":62,"value":174},">\n",{"type":56,"tag":141,"props":176,"children":178},{"class":143,"line":177},2,[179,185,190],{"type":56,"tag":141,"props":180,"children":182},{"style":181},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[183],{"type":62,"value":184},"python",{"type":56,"tag":141,"props":186,"children":187},{"style":160},[188],{"type":62,"value":189}," agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py",{"type":56,"tag":141,"props":191,"children":192},{"style":166},[193],{"type":62,"value":194}," \\\n",{"type":56,"tag":141,"props":196,"children":198},{"class":143,"line":197},3,[199,204,209],{"type":56,"tag":141,"props":200,"children":201},{"style":160},[202],{"type":62,"value":203},"  --bp-repo",{"type":56,"tag":141,"props":205,"children":206},{"style":160},[207],{"type":62,"value":208}," .",{"type":56,"tag":141,"props":210,"children":211},{"style":166},[212],{"type":62,"value":194},{"type":56,"tag":141,"props":214,"children":216},{"class":143,"line":215},4,[217,222],{"type":56,"tag":141,"props":218,"children":219},{"style":160},[220],{"type":62,"value":221},"  --env-file",{"type":56,"tag":141,"props":223,"children":224},{"style":160},[225],{"type":62,"value":226}," deployments\u002Fsop\u002F.env\n",{"type":56,"tag":65,"props":228,"children":229},{},[230],{"type":62,"value":231},"Run a single phase:",{"type":56,"tag":130,"props":233,"children":235},{"className":132,"code":234,"language":134,"meta":135,"style":135},"python agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 1   # Service health only\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 2   # ELK only\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 3   # VIOS only\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase 4   # VSS Agent only\n",[236],{"type":56,"tag":71,"props":237,"children":238},{"__ignoreMap":135},[239,267,292,317],{"type":56,"tag":141,"props":240,"children":241},{"class":143,"line":144},[242,246,250,255,261],{"type":56,"tag":141,"props":243,"children":244},{"style":181},[245],{"type":62,"value":184},{"type":56,"tag":141,"props":247,"children":248},{"style":160},[249],{"type":62,"value":189},{"type":56,"tag":141,"props":251,"children":252},{"style":160},[253],{"type":62,"value":254}," --phase",{"type":56,"tag":141,"props":256,"children":258},{"style":257},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[259],{"type":62,"value":260}," 1",{"type":56,"tag":141,"props":262,"children":264},{"style":263},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[265],{"type":62,"value":266},"   # Service health only\n",{"type":56,"tag":141,"props":268,"children":269},{"class":143,"line":177},[270,274,278,282,287],{"type":56,"tag":141,"props":271,"children":272},{"style":181},[273],{"type":62,"value":184},{"type":56,"tag":141,"props":275,"children":276},{"style":160},[277],{"type":62,"value":189},{"type":56,"tag":141,"props":279,"children":280},{"style":160},[281],{"type":62,"value":254},{"type":56,"tag":141,"props":283,"children":284},{"style":257},[285],{"type":62,"value":286}," 2",{"type":56,"tag":141,"props":288,"children":289},{"style":263},[290],{"type":62,"value":291},"   # ELK only\n",{"type":56,"tag":141,"props":293,"children":294},{"class":143,"line":197},[295,299,303,307,312],{"type":56,"tag":141,"props":296,"children":297},{"style":181},[298],{"type":62,"value":184},{"type":56,"tag":141,"props":300,"children":301},{"style":160},[302],{"type":62,"value":189},{"type":56,"tag":141,"props":304,"children":305},{"style":160},[306],{"type":62,"value":254},{"type":56,"tag":141,"props":308,"children":309},{"style":257},[310],{"type":62,"value":311}," 3",{"type":56,"tag":141,"props":313,"children":314},{"style":263},[315],{"type":62,"value":316},"   # VIOS only\n",{"type":56,"tag":141,"props":318,"children":319},{"class":143,"line":215},[320,324,328,332,337],{"type":56,"tag":141,"props":321,"children":322},{"style":181},[323],{"type":62,"value":184},{"type":56,"tag":141,"props":325,"children":326},{"style":160},[327],{"type":62,"value":189},{"type":56,"tag":141,"props":329,"children":330},{"style":160},[331],{"type":62,"value":254},{"type":56,"tag":141,"props":333,"children":334},{"style":257},[335],{"type":62,"value":336}," 4",{"type":56,"tag":141,"props":338,"children":339},{"style":263},[340],{"type":62,"value":341},"   # VSS Agent only\n",{"type":56,"tag":123,"props":343,"children":345},{"id":344},"test-phases",[346],{"type":62,"value":347},"Test Phases",{"type":56,"tag":123,"props":349,"children":351},{"id":350},"phase-1-service-health",[352],{"type":62,"value":353},"Phase 1 — Service Health",{"type":56,"tag":65,"props":355,"children":356},{},[357,359,365],{"type":62,"value":358},"Checks that all required Docker containers are running (",{"type":56,"tag":71,"props":360,"children":362},{"className":361},[],[363],{"type":62,"value":364},"Up",{"type":62,"value":366},").",{"type":56,"tag":368,"props":369,"children":370},"table",{},[371,390],{"type":56,"tag":372,"props":373,"children":374},"thead",{},[375],{"type":56,"tag":376,"props":377,"children":378},"tr",{},[379,385],{"type":56,"tag":380,"props":381,"children":382},"th",{},[383],{"type":62,"value":384},"Required containers",{"type":56,"tag":380,"props":386,"children":387},{},[388],{"type":62,"value":389},"Optional",{"type":56,"tag":391,"props":392,"children":393},"tbody",{},[394],{"type":56,"tag":376,"props":395,"children":396},{},[397,499],{"type":56,"tag":398,"props":399,"children":400},"td",{},[401,407,409,415,416,422,423,429,430,436,437,443,444,450,451,457,458,464,465,471,472,478,479,485,486,492,493],{"type":56,"tag":71,"props":402,"children":404},{"className":403},[],[405],{"type":62,"value":406},"mdx-kafka",{"type":62,"value":408},", ",{"type":56,"tag":71,"props":410,"children":412},{"className":411},[],[413],{"type":62,"value":414},"mdx-redis",{"type":62,"value":408},{"type":56,"tag":71,"props":417,"children":419},{"className":418},[],[420],{"type":62,"value":421},"mdx-elastic",{"type":62,"value":408},{"type":56,"tag":71,"props":424,"children":426},{"className":425},[],[427],{"type":62,"value":428},"mdx-logstash",{"type":62,"value":408},{"type":56,"tag":71,"props":431,"children":433},{"className":432},[],[434],{"type":62,"value":435},"mdx-kibana",{"type":62,"value":408},{"type":56,"tag":71,"props":438,"children":440},{"className":439},[],[441],{"type":62,"value":442},"vss-agent",{"type":62,"value":408},{"type":56,"tag":71,"props":445,"children":447},{"className":446},[],[448],{"type":62,"value":449},"vss-va-mcp",{"type":62,"value":408},{"type":56,"tag":71,"props":452,"children":454},{"className":453},[],[455],{"type":62,"value":456},"mdx-ds-sop-1",{"type":62,"value":408},{"type":56,"tag":71,"props":459,"children":461},{"className":460},[],[462],{"type":62,"value":463},"sensor-ms-sop",{"type":62,"value":408},{"type":56,"tag":71,"props":466,"children":468},{"className":467},[],[469],{"type":62,"value":470},"recorder-ms-1-sop",{"type":62,"value":408},{"type":56,"tag":71,"props":473,"children":475},{"className":474},[],[476],{"type":62,"value":477},"rtspserver-ms-1-sop",{"type":62,"value":408},{"type":56,"tag":71,"props":480,"children":482},{"className":481},[],[483],{"type":62,"value":484},"storage-ms-sop",{"type":62,"value":408},{"type":56,"tag":71,"props":487,"children":489},{"className":488},[],[490],{"type":62,"value":491},"sdr-http-recorder-sop",{"type":62,"value":408},{"type":56,"tag":71,"props":494,"children":496},{"className":495},[],[497],{"type":62,"value":498},"sdr-http-rtspserver-sop",{"type":56,"tag":398,"props":500,"children":501},{},[502,508,509,515,516,522,523,529,530,536,537,543,544],{"type":56,"tag":71,"props":503,"children":505},{"className":504},[],[506],{"type":62,"value":507},"mdx-prometheus",{"type":62,"value":408},{"type":56,"tag":71,"props":510,"children":512},{"className":511},[],[513],{"type":62,"value":514},"mdx-grafana",{"type":62,"value":408},{"type":56,"tag":71,"props":517,"children":519},{"className":518},[],[520],{"type":62,"value":521},"mdx-dcgm-exporter",{"type":62,"value":408},{"type":56,"tag":71,"props":524,"children":526},{"className":525},[],[527],{"type":62,"value":528},"mdx-cadvisor",{"type":62,"value":408},{"type":56,"tag":71,"props":531,"children":533},{"className":532},[],[534],{"type":62,"value":535},"mdx-node-exporter",{"type":62,"value":408},{"type":56,"tag":71,"props":538,"children":540},{"className":539},[],[541],{"type":62,"value":542},"mdx-phoenix",{"type":62,"value":408},{"type":56,"tag":71,"props":545,"children":547},{"className":546},[],[548],{"type":62,"value":549},"vss-ui",{"type":56,"tag":65,"props":551,"children":552},{},[553,559,561,567],{"type":56,"tag":554,"props":555,"children":556},"strong",{},[557],{"type":62,"value":558},"Auto-debug:",{"type":62,"value":560}," Prints ",{"type":56,"tag":71,"props":562,"children":564},{"className":563},[],[565],{"type":62,"value":566},"docker logs \u003Ccontainer> --tail 30",{"type":62,"value":568}," for any missing or unhealthy container.",{"type":56,"tag":65,"props":570,"children":571},{},[572,577,579,585],{"type":56,"tag":554,"props":573,"children":574},{},[575],{"type":62,"value":576},"Manual fix:",{"type":62,"value":578}," Redeploy with ",{"type":56,"tag":71,"props":580,"children":582},{"className":581},[],[583],{"type":62,"value":584},"docker compose -f compose.yml --env-file sop\u002F.env --profile bp_sop_2d up -d",{"type":62,"value":586},".",{"type":56,"tag":123,"props":588,"children":590},{"id":589},"phase-2-elk-data-pipeline",[591],{"type":62,"value":592},"Phase 2 — ELK Data Pipeline",{"type":56,"tag":594,"props":595,"children":596},"ol",{},[597,613,637,655,679,754],{"type":56,"tag":91,"props":598,"children":599},{},[600,605,607],{"type":56,"tag":554,"props":601,"children":602},{},[603],{"type":62,"value":604},"Elasticsearch reachable",{"type":62,"value":606}," — ",{"type":56,"tag":71,"props":608,"children":610},{"className":609},[],[611],{"type":62,"value":612},"GET localhost:9200\u002F_cluster\u002Fhealth",{"type":56,"tag":91,"props":614,"children":615},{},[616,621,623,629,631],{"type":56,"tag":554,"props":617,"children":618},{},[619],{"type":62,"value":620},"Cluster health",{"type":62,"value":622}," — must be ",{"type":56,"tag":71,"props":624,"children":626},{"className":625},[],[627],{"type":62,"value":628},"green",{"type":62,"value":630}," or ",{"type":56,"tag":71,"props":632,"children":634},{"className":633},[],[635],{"type":62,"value":636},"yellow",{"type":56,"tag":91,"props":638,"children":639},{},[640,645,647,653],{"type":56,"tag":554,"props":641,"children":642},{},[643],{"type":62,"value":644},"Indices exist",{"type":62,"value":646}," — at least one ",{"type":56,"tag":71,"props":648,"children":650},{"className":649},[],[651],{"type":62,"value":652},"mdx-vlm-captions-*",{"type":62,"value":654}," index",{"type":56,"tag":91,"props":656,"children":657},{},[658,663,664,669,671,677],{"type":56,"tag":554,"props":659,"children":660},{},[661],{"type":62,"value":662},"VLM messages",{"type":62,"value":606},{"type":56,"tag":71,"props":665,"children":667},{"className":666},[],[668],{"type":62,"value":652},{"type":62,"value":670}," index has ",{"type":56,"tag":71,"props":672,"children":674},{"className":673},[],[675],{"type":62,"value":676},"> 0",{"type":62,"value":678}," documents",{"type":56,"tag":91,"props":680,"children":681},{},[682,687,689,695,696,702,703,709,710,716,717,723,724,730,731,737,739,745,746,752],{"type":56,"tag":554,"props":683,"children":684},{},[685],{"type":62,"value":686},"Kibana dashboard fields",{"type":62,"value":688}," — verifies the actual ES mapping has the flat JSON fields the dashboard expects (",{"type":56,"tag":71,"props":690,"children":692},{"className":691},[],[693],{"type":62,"value":694},"response",{"type":62,"value":408},{"type":56,"tag":71,"props":697,"children":699},{"className":698},[],[700],{"type":62,"value":701},"sensor_id",{"type":62,"value":408},{"type":56,"tag":71,"props":704,"children":706},{"className":705},[],[707],{"type":62,"value":708},"cv_execute_time",{"type":62,"value":408},{"type":56,"tag":71,"props":711,"children":713},{"className":712},[],[714],{"type":62,"value":715},"vlm_execute_time",{"type":62,"value":408},{"type":56,"tag":71,"props":718,"children":720},{"className":719},[],[721],{"type":62,"value":722},"chunk_idx",{"type":62,"value":408},{"type":56,"tag":71,"props":725,"children":727},{"className":726},[],[728],{"type":62,"value":729},"frame_number",{"type":62,"value":408},{"type":56,"tag":71,"props":732,"children":734},{"className":733},[],[735],{"type":62,"value":736},"@timestamp",{"type":62,"value":738},"), and that no protobuf-style nested fields (",{"type":56,"tag":71,"props":740,"children":742},{"className":741},[],[743],{"type":62,"value":744},"llm",{"type":62,"value":408},{"type":56,"tag":71,"props":747,"children":749},{"className":748},[],[750],{"type":62,"value":751},"sensor",{"type":62,"value":753},") are present instead",{"type":56,"tag":91,"props":755,"children":756},{},[757,762,764,770,771,777,779,785,787],{"type":56,"tag":554,"props":758,"children":759},{},[760],{"type":62,"value":761},"Kibana ndjson fields",{"type":62,"value":763}," — queries Kibana's saved objects API to confirm the imported data view's runtime fields reference the correct flat field names (not ",{"type":56,"tag":71,"props":765,"children":767},{"className":766},[],[768],{"type":62,"value":769},"llm.queries.response.keyword",{"type":62,"value":630},{"type":56,"tag":71,"props":772,"children":774},{"className":773},[],[775],{"type":62,"value":776},"sensor.id.keyword",{"type":62,"value":778},"), and that ",{"type":56,"tag":71,"props":780,"children":782},{"className":781},[],[783],{"type":62,"value":784},"timeFieldName",{"type":62,"value":786}," is ",{"type":56,"tag":71,"props":788,"children":790},{"className":789},[],[791],{"type":62,"value":736},{"type":56,"tag":65,"props":793,"children":794},{},[795,799,801,806,807,812,814,819],{"type":56,"tag":554,"props":796,"children":797},{},[798],{"type":62,"value":558},{"type":62,"value":800}," Tails ",{"type":56,"tag":71,"props":802,"children":804},{"className":803},[],[805],{"type":62,"value":428},{"type":62,"value":408},{"type":56,"tag":71,"props":808,"children":810},{"className":809},[],[811],{"type":62,"value":421},{"type":62,"value":813},", and ",{"type":56,"tag":71,"props":815,"children":817},{"className":816},[],[818],{"type":62,"value":435},{"type":62,"value":820}," logs.",{"type":56,"tag":65,"props":822,"children":823},{},[824],{"type":56,"tag":554,"props":825,"children":826},{},[827],{"type":62,"value":828},"Manual fix if no VLM data:",{"type":56,"tag":130,"props":830,"children":832},{"className":132,"code":831,"language":134,"meta":135,"style":135},"# Verify Kafka topic has messages\ndocker exec mdx-kafka kafka-console-consumer.sh \\\n  --bootstrap-server localhost:9092 --topic mdx-vlm-captions \\\n  --from-beginning --max-messages 3 --timeout-ms 10000\n\n# Check Logstash pipeline\ndocker logs mdx-logstash --tail 50\n",[833],{"type":56,"tag":71,"props":834,"children":835},{"__ignoreMap":135},[836,844,871,898,925,935,944],{"type":56,"tag":141,"props":837,"children":838},{"class":143,"line":144},[839],{"type":56,"tag":141,"props":840,"children":841},{"style":263},[842],{"type":62,"value":843},"# Verify Kafka topic has messages\n",{"type":56,"tag":141,"props":845,"children":846},{"class":143,"line":177},[847,852,857,862,867],{"type":56,"tag":141,"props":848,"children":849},{"style":181},[850],{"type":62,"value":851},"docker",{"type":56,"tag":141,"props":853,"children":854},{"style":160},[855],{"type":62,"value":856}," exec",{"type":56,"tag":141,"props":858,"children":859},{"style":160},[860],{"type":62,"value":861}," mdx-kafka",{"type":56,"tag":141,"props":863,"children":864},{"style":160},[865],{"type":62,"value":866}," kafka-console-consumer.sh",{"type":56,"tag":141,"props":868,"children":869},{"style":166},[870],{"type":62,"value":194},{"type":56,"tag":141,"props":872,"children":873},{"class":143,"line":197},[874,879,884,889,894],{"type":56,"tag":141,"props":875,"children":876},{"style":160},[877],{"type":62,"value":878},"  --bootstrap-server",{"type":56,"tag":141,"props":880,"children":881},{"style":160},[882],{"type":62,"value":883}," localhost:9092",{"type":56,"tag":141,"props":885,"children":886},{"style":160},[887],{"type":62,"value":888}," --topic",{"type":56,"tag":141,"props":890,"children":891},{"style":160},[892],{"type":62,"value":893}," mdx-vlm-captions",{"type":56,"tag":141,"props":895,"children":896},{"style":166},[897],{"type":62,"value":194},{"type":56,"tag":141,"props":899,"children":900},{"class":143,"line":215},[901,906,911,915,920],{"type":56,"tag":141,"props":902,"children":903},{"style":160},[904],{"type":62,"value":905},"  --from-beginning",{"type":56,"tag":141,"props":907,"children":908},{"style":160},[909],{"type":62,"value":910}," --max-messages",{"type":56,"tag":141,"props":912,"children":913},{"style":257},[914],{"type":62,"value":311},{"type":56,"tag":141,"props":916,"children":917},{"style":160},[918],{"type":62,"value":919}," --timeout-ms",{"type":56,"tag":141,"props":921,"children":922},{"style":257},[923],{"type":62,"value":924}," 10000\n",{"type":56,"tag":141,"props":926,"children":928},{"class":143,"line":927},5,[929],{"type":56,"tag":141,"props":930,"children":932},{"emptyLinePlaceholder":931},true,[933],{"type":62,"value":934},"\n",{"type":56,"tag":141,"props":936,"children":938},{"class":143,"line":937},6,[939],{"type":56,"tag":141,"props":940,"children":941},{"style":263},[942],{"type":62,"value":943},"# Check Logstash pipeline\n",{"type":56,"tag":141,"props":945,"children":947},{"class":143,"line":946},7,[948,952,957,962,967],{"type":56,"tag":141,"props":949,"children":950},{"style":181},[951],{"type":62,"value":851},{"type":56,"tag":141,"props":953,"children":954},{"style":160},[955],{"type":62,"value":956}," logs",{"type":56,"tag":141,"props":958,"children":959},{"style":160},[960],{"type":62,"value":961}," mdx-logstash",{"type":56,"tag":141,"props":963,"children":964},{"style":160},[965],{"type":62,"value":966}," --tail",{"type":56,"tag":141,"props":968,"children":969},{"style":257},[970],{"type":62,"value":971}," 50\n",{"type":56,"tag":65,"props":973,"children":974},{},[975],{"type":56,"tag":554,"props":976,"children":977},{},[978],{"type":62,"value":979},"Manual fix if Kibana dashboard field mismatch:",{"type":56,"tag":130,"props":981,"children":983},{"className":132,"code":982,"language":134,"meta":135,"style":135},"# Check the actual field structure in Elasticsearch\ncurl localhost:9200\u002Fmdx-vlm-captions-*\u002F_mapping?pretty\n\n# If fields are flat (response, sensor_id) but ndjson uses nested (llm.queries.response):\n# Re-import the corrected ndjson\ncurl -X POST localhost:5601\u002Fapi\u002Fsaved_objects\u002F_import?overwrite=true \\\n  -H 'kbn-xsrf: true' \\\n  --form file=@deployments\u002Fsop\u002Fsop-app\u002Fkibana-dashboard\u002Fsop-kibana-objects.ndjson\n",[984],{"type":56,"tag":71,"props":985,"children":986},{"__ignoreMap":135},[987,995,1018,1025,1033,1041,1072,1099],{"type":56,"tag":141,"props":988,"children":989},{"class":143,"line":144},[990],{"type":56,"tag":141,"props":991,"children":992},{"style":263},[993],{"type":62,"value":994},"# Check the actual field structure in Elasticsearch\n",{"type":56,"tag":141,"props":996,"children":997},{"class":143,"line":177},[998,1003,1008,1013],{"type":56,"tag":141,"props":999,"children":1000},{"style":181},[1001],{"type":62,"value":1002},"curl",{"type":56,"tag":141,"props":1004,"children":1005},{"style":160},[1006],{"type":62,"value":1007}," localhost:9200\u002Fmdx-vlm-captions-",{"type":56,"tag":141,"props":1009,"children":1010},{"style":166},[1011],{"type":62,"value":1012},"*",{"type":56,"tag":141,"props":1014,"children":1015},{"style":160},[1016],{"type":62,"value":1017},"\u002F_mapping?pretty\n",{"type":56,"tag":141,"props":1019,"children":1020},{"class":143,"line":197},[1021],{"type":56,"tag":141,"props":1022,"children":1023},{"emptyLinePlaceholder":931},[1024],{"type":62,"value":934},{"type":56,"tag":141,"props":1026,"children":1027},{"class":143,"line":215},[1028],{"type":56,"tag":141,"props":1029,"children":1030},{"style":263},[1031],{"type":62,"value":1032},"# If fields are flat (response, sensor_id) but ndjson uses nested (llm.queries.response):\n",{"type":56,"tag":141,"props":1034,"children":1035},{"class":143,"line":927},[1036],{"type":56,"tag":141,"props":1037,"children":1038},{"style":263},[1039],{"type":62,"value":1040},"# Re-import the corrected ndjson\n",{"type":56,"tag":141,"props":1042,"children":1043},{"class":143,"line":937},[1044,1048,1053,1058,1063,1068],{"type":56,"tag":141,"props":1045,"children":1046},{"style":181},[1047],{"type":62,"value":1002},{"type":56,"tag":141,"props":1049,"children":1050},{"style":160},[1051],{"type":62,"value":1052}," -X",{"type":56,"tag":141,"props":1054,"children":1055},{"style":160},[1056],{"type":62,"value":1057}," POST",{"type":56,"tag":141,"props":1059,"children":1060},{"style":160},[1061],{"type":62,"value":1062}," localhost:5601\u002Fapi\u002Fsaved_objects\u002F_import?overwrite=",{"type":56,"tag":141,"props":1064,"children":1065},{"style":154},[1066],{"type":62,"value":1067},"true",{"type":56,"tag":141,"props":1069,"children":1070},{"style":166},[1071],{"type":62,"value":194},{"type":56,"tag":141,"props":1073,"children":1074},{"class":143,"line":946},[1075,1080,1085,1090,1095],{"type":56,"tag":141,"props":1076,"children":1077},{"style":160},[1078],{"type":62,"value":1079},"  -H",{"type":56,"tag":141,"props":1081,"children":1082},{"style":154},[1083],{"type":62,"value":1084}," '",{"type":56,"tag":141,"props":1086,"children":1087},{"style":160},[1088],{"type":62,"value":1089},"kbn-xsrf: true",{"type":56,"tag":141,"props":1091,"children":1092},{"style":154},[1093],{"type":62,"value":1094},"'",{"type":56,"tag":141,"props":1096,"children":1097},{"style":166},[1098],{"type":62,"value":194},{"type":56,"tag":141,"props":1100,"children":1102},{"class":143,"line":1101},8,[1103,1108],{"type":56,"tag":141,"props":1104,"children":1105},{"style":160},[1106],{"type":62,"value":1107},"  --form",{"type":56,"tag":141,"props":1109,"children":1110},{"style":160},[1111],{"type":62,"value":1112}," file=@deployments\u002Fsop\u002Fsop-app\u002Fkibana-dashboard\u002Fsop-kibana-objects.ndjson\n",{"type":56,"tag":123,"props":1114,"children":1116},{"id":1115},"phase-3-vios-recording-livestream",[1117],{"type":62,"value":1118},"Phase 3 — VIOS Recording & Livestream",{"type":56,"tag":594,"props":1120,"children":1121},{},[1122,1137,1155,1172,1190],{"type":56,"tag":91,"props":1123,"children":1124},{},[1125,1130,1131],{"type":56,"tag":554,"props":1126,"children":1127},{},[1128],{"type":62,"value":1129},"VST reachable",{"type":62,"value":606},{"type":56,"tag":71,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":62,"value":1136},"GET localhost:30888\u002Fvst\u002Fapi\u002Fv1\u002Fsensor\u002Flist",{"type":56,"tag":91,"props":1138,"children":1139},{},[1140,1145,1147,1153],{"type":56,"tag":554,"props":1141,"children":1142},{},[1143],{"type":62,"value":1144},"Sensors registered",{"type":62,"value":1146}," — at least one sensor (typically ",{"type":56,"tag":71,"props":1148,"children":1150},{"className":1149},[],[1151],{"type":62,"value":1152},"sensor_0",{"type":62,"value":1154},")",{"type":56,"tag":91,"props":1156,"children":1157},{},[1158,1163,1164,1170],{"type":56,"tag":554,"props":1159,"children":1160},{},[1161],{"type":62,"value":1162},"Streams available",{"type":62,"value":606},{"type":56,"tag":71,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":62,"value":1169},"\u002Fsensor\u002Fstreams",{"type":62,"value":1171}," returns data",{"type":56,"tag":91,"props":1173,"children":1174},{},[1175,1180,1182,1188],{"type":56,"tag":554,"props":1176,"children":1177},{},[1178],{"type":62,"value":1179},"Recording",{"type":62,"value":1181}," — checks ",{"type":56,"tag":71,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":62,"value":1187},"\u002Frecord\u002Fstatus",{"type":62,"value":1189}," per sensor",{"type":56,"tag":91,"props":1191,"children":1192},{},[1193,1198,1199,1205],{"type":56,"tag":554,"props":1194,"children":1195},{},[1196],{"type":62,"value":1197},"Livestream",{"type":62,"value":1181},{"type":56,"tag":71,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":62,"value":1204},"\u002Flive\u002Fstreams",{"type":62,"value":1189},{"type":56,"tag":65,"props":1207,"children":1208},{},[1209,1213,1214,1219,1220,1225,1226,1231,1232,1237],{"type":56,"tag":554,"props":1210,"children":1211},{},[1212],{"type":62,"value":558},{"type":62,"value":800},{"type":56,"tag":71,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":62,"value":463},{"type":62,"value":408},{"type":56,"tag":71,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":62,"value":477},{"type":62,"value":408},{"type":56,"tag":71,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":62,"value":470},{"type":62,"value":813},{"type":56,"tag":71,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":62,"value":491},{"type":62,"value":820},{"type":56,"tag":65,"props":1239,"children":1240},{},[1241],{"type":56,"tag":554,"props":1242,"children":1243},{},[1244],{"type":62,"value":1245},"Manual fix if no sensor:",{"type":56,"tag":130,"props":1247,"children":1249},{"className":132,"code":1248,"language":134,"meta":135,"style":135},"cd \u003Cbp-repo>\u002Fdeployments\u002Fsop\u002Fsop-app\u002Fhelper-scripts\nnohup .\u002Frun_rtsp_test.sh > client.log &\n",[1250],{"type":56,"tag":71,"props":1251,"children":1252},{"__ignoreMap":135},[1253,1282],{"type":56,"tag":141,"props":1254,"children":1255},{"class":143,"line":144},[1256,1260,1264,1268,1272,1277],{"type":56,"tag":141,"props":1257,"children":1258},{"style":148},[1259],{"type":62,"value":151},{"type":56,"tag":141,"props":1261,"children":1262},{"style":154},[1263],{"type":62,"value":157},{"type":56,"tag":141,"props":1265,"children":1266},{"style":160},[1267],{"type":62,"value":163},{"type":56,"tag":141,"props":1269,"children":1270},{"style":166},[1271],{"type":62,"value":169},{"type":56,"tag":141,"props":1273,"children":1274},{"style":154},[1275],{"type":62,"value":1276},">",{"type":56,"tag":141,"props":1278,"children":1279},{"style":160},[1280],{"type":62,"value":1281},"\u002Fdeployments\u002Fsop\u002Fsop-app\u002Fhelper-scripts\n",{"type":56,"tag":141,"props":1283,"children":1284},{"class":143,"line":177},[1285,1290,1295,1300,1305],{"type":56,"tag":141,"props":1286,"children":1287},{"style":181},[1288],{"type":62,"value":1289},"nohup",{"type":56,"tag":141,"props":1291,"children":1292},{"style":160},[1293],{"type":62,"value":1294}," .\u002Frun_rtsp_test.sh",{"type":56,"tag":141,"props":1296,"children":1297},{"style":154},[1298],{"type":62,"value":1299}," >",{"type":56,"tag":141,"props":1301,"children":1302},{"style":160},[1303],{"type":62,"value":1304}," client.log",{"type":56,"tag":141,"props":1306,"children":1307},{"style":154},[1308],{"type":62,"value":1309}," &\n",{"type":56,"tag":123,"props":1311,"children":1313},{"id":1312},"phase-4-vss-agent-end-to-end",[1314],{"type":62,"value":1315},"Phase 4 — VSS Agent End-to-End",{"type":56,"tag":368,"props":1317,"children":1318},{},[1319,1340],{"type":56,"tag":372,"props":1320,"children":1321},{},[1322],{"type":56,"tag":376,"props":1323,"children":1324},{},[1325,1330,1335],{"type":56,"tag":380,"props":1326,"children":1327},{},[1328],{"type":62,"value":1329},"#",{"type":56,"tag":380,"props":1331,"children":1332},{},[1333],{"type":62,"value":1334},"Test",{"type":56,"tag":380,"props":1336,"children":1337},{},[1338],{"type":62,"value":1339},"Method",{"type":56,"tag":391,"props":1341,"children":1342},{},[1343,1365,1387,1409,1431,1455,1477],{"type":56,"tag":376,"props":1344,"children":1345},{},[1346,1351,1356],{"type":56,"tag":398,"props":1347,"children":1348},{},[1349],{"type":62,"value":1350},"4.1",{"type":56,"tag":398,"props":1352,"children":1353},{},[1354],{"type":62,"value":1355},"MCP health",{"type":56,"tag":398,"props":1357,"children":1358},{},[1359],{"type":56,"tag":71,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":62,"value":1364},"GET localhost:9901\u002Fhealth",{"type":56,"tag":376,"props":1366,"children":1367},{},[1368,1373,1378],{"type":56,"tag":398,"props":1369,"children":1370},{},[1371],{"type":62,"value":1372},"4.2",{"type":56,"tag":398,"props":1374,"children":1375},{},[1376],{"type":62,"value":1377},"LLM endpoint",{"type":56,"tag":398,"props":1379,"children":1380},{},[1381],{"type":56,"tag":71,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":62,"value":1386},"GET \u003CLLM_BASE_URL>\u002Fv1\u002Fmodels",{"type":56,"tag":376,"props":1388,"children":1389},{},[1390,1395,1400],{"type":56,"tag":398,"props":1391,"children":1392},{},[1393],{"type":62,"value":1394},"4.3",{"type":56,"tag":398,"props":1396,"children":1397},{},[1398],{"type":62,"value":1399},"VLM endpoint",{"type":56,"tag":398,"props":1401,"children":1402},{},[1403],{"type":56,"tag":71,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":62,"value":1408},"GET \u003CVLM_BASE_URL>\u002Fv1\u002Fmodels",{"type":56,"tag":376,"props":1410,"children":1411},{},[1412,1417,1422],{"type":56,"tag":398,"props":1413,"children":1414},{},[1415],{"type":62,"value":1416},"4.4",{"type":56,"tag":398,"props":1418,"children":1419},{},[1420],{"type":62,"value":1421},"Agent health",{"type":56,"tag":398,"props":1423,"children":1424},{},[1425],{"type":56,"tag":71,"props":1426,"children":1428},{"className":1427},[],[1429],{"type":62,"value":1430},"GET localhost:8000\u002Fhealth",{"type":56,"tag":376,"props":1432,"children":1433},{},[1434,1439,1444],{"type":56,"tag":398,"props":1435,"children":1436},{},[1437],{"type":62,"value":1438},"4.5",{"type":56,"tag":398,"props":1440,"children":1441},{},[1442],{"type":62,"value":1443},"Snapshot from VIOS",{"type":56,"tag":398,"props":1445,"children":1446},{},[1447,1449],{"type":62,"value":1448},"Agent chat: ",{"type":56,"tag":1450,"props":1451,"children":1452},"em",{},[1453],{"type":62,"value":1454},"\"Take a snapshot of sensor sensor_0\"",{"type":56,"tag":376,"props":1456,"children":1457},{},[1458,1463,1468],{"type":56,"tag":398,"props":1459,"children":1460},{},[1461],{"type":62,"value":1462},"4.6",{"type":56,"tag":398,"props":1464,"children":1465},{},[1466],{"type":62,"value":1467},"Video → VLM",{"type":56,"tag":398,"props":1469,"children":1470},{},[1471,1472],{"type":62,"value":1448},{"type":56,"tag":1450,"props":1473,"children":1474},{},[1475],{"type":62,"value":1476},"\"What is the current SOP status for sensor sensor_0?\"",{"type":56,"tag":376,"props":1478,"children":1479},{},[1480,1485,1490],{"type":56,"tag":398,"props":1481,"children":1482},{},[1483],{"type":62,"value":1484},"4.7",{"type":56,"tag":398,"props":1486,"children":1487},{},[1488],{"type":62,"value":1489},"Report generation",{"type":56,"tag":398,"props":1491,"children":1492},{},[1493,1494],{"type":62,"value":1448},{"type":56,"tag":1450,"props":1495,"children":1496},{},[1497],{"type":62,"value":1498},"\"Generate an SOP compliance report for sensor sensor_0 from … to …\"",{"type":56,"tag":65,"props":1500,"children":1501},{},[1502,1506,1507,1512,1513,1518,1519,1524],{"type":56,"tag":554,"props":1503,"children":1504},{},[1505],{"type":62,"value":558},{"type":62,"value":800},{"type":56,"tag":71,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":62,"value":442},{"type":62,"value":408},{"type":56,"tag":71,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":62,"value":449},{"type":62,"value":813},{"type":56,"tag":71,"props":1520,"children":1522},{"className":1521},[],[1523],{"type":62,"value":456},{"type":62,"value":1525}," logs for any failing sub-test.",{"type":56,"tag":65,"props":1527,"children":1528},{},[1529],{"type":56,"tag":554,"props":1530,"children":1531},{},[1532],{"type":62,"value":1533},"Manual fix for common agent failures:",{"type":56,"tag":130,"props":1535,"children":1537},{"className":132,"code":1536,"language":134,"meta":135,"style":135},"# Agent won't start — check LLM\u002FVLM config\ndocker inspect vss-agent --format '{{range .Config.Env}}{{println .}}{{end}}' | grep -E '(LLM|VLM)'\n\n# MCP not healthy — restart\ndocker restart vss-va-mcp\n\n# NVIDIA API key missing for remote NIM\nexport NVIDIA_API_KEY=\"$(cat \u003Cbp-repo>\u002F.secret\u002Fnvidia_build_api_key.txt)\"\ndocker compose -f compose.yml --env-file sop\u002F.env --profile bp_sop_2d up -d vss-agent\n",[1538],{"type":56,"tag":71,"props":1539,"children":1540},{"__ignoreMap":135},[1541,1549,1613,1620,1628,1645,1652,1660,1712],{"type":56,"tag":141,"props":1542,"children":1543},{"class":143,"line":144},[1544],{"type":56,"tag":141,"props":1545,"children":1546},{"style":263},[1547],{"type":62,"value":1548},"# Agent won't start — check LLM\u002FVLM config\n",{"type":56,"tag":141,"props":1550,"children":1551},{"class":143,"line":177},[1552,1556,1561,1566,1571,1575,1580,1584,1589,1594,1599,1603,1608],{"type":56,"tag":141,"props":1553,"children":1554},{"style":181},[1555],{"type":62,"value":851},{"type":56,"tag":141,"props":1557,"children":1558},{"style":160},[1559],{"type":62,"value":1560}," inspect",{"type":56,"tag":141,"props":1562,"children":1563},{"style":160},[1564],{"type":62,"value":1565}," vss-agent",{"type":56,"tag":141,"props":1567,"children":1568},{"style":160},[1569],{"type":62,"value":1570}," --format",{"type":56,"tag":141,"props":1572,"children":1573},{"style":154},[1574],{"type":62,"value":1084},{"type":56,"tag":141,"props":1576,"children":1577},{"style":160},[1578],{"type":62,"value":1579},"{{range .Config.Env}}{{println .}}{{end}}",{"type":56,"tag":141,"props":1581,"children":1582},{"style":154},[1583],{"type":62,"value":1094},{"type":56,"tag":141,"props":1585,"children":1586},{"style":154},[1587],{"type":62,"value":1588}," |",{"type":56,"tag":141,"props":1590,"children":1591},{"style":181},[1592],{"type":62,"value":1593}," grep",{"type":56,"tag":141,"props":1595,"children":1596},{"style":160},[1597],{"type":62,"value":1598}," -E",{"type":56,"tag":141,"props":1600,"children":1601},{"style":154},[1602],{"type":62,"value":1084},{"type":56,"tag":141,"props":1604,"children":1605},{"style":160},[1606],{"type":62,"value":1607},"(LLM|VLM)",{"type":56,"tag":141,"props":1609,"children":1610},{"style":154},[1611],{"type":62,"value":1612},"'\n",{"type":56,"tag":141,"props":1614,"children":1615},{"class":143,"line":197},[1616],{"type":56,"tag":141,"props":1617,"children":1618},{"emptyLinePlaceholder":931},[1619],{"type":62,"value":934},{"type":56,"tag":141,"props":1621,"children":1622},{"class":143,"line":215},[1623],{"type":56,"tag":141,"props":1624,"children":1625},{"style":263},[1626],{"type":62,"value":1627},"# MCP not healthy — restart\n",{"type":56,"tag":141,"props":1629,"children":1630},{"class":143,"line":927},[1631,1635,1640],{"type":56,"tag":141,"props":1632,"children":1633},{"style":181},[1634],{"type":62,"value":851},{"type":56,"tag":141,"props":1636,"children":1637},{"style":160},[1638],{"type":62,"value":1639}," restart",{"type":56,"tag":141,"props":1641,"children":1642},{"style":160},[1643],{"type":62,"value":1644}," vss-va-mcp\n",{"type":56,"tag":141,"props":1646,"children":1647},{"class":143,"line":937},[1648],{"type":56,"tag":141,"props":1649,"children":1650},{"emptyLinePlaceholder":931},[1651],{"type":62,"value":934},{"type":56,"tag":141,"props":1653,"children":1654},{"class":143,"line":946},[1655],{"type":56,"tag":141,"props":1656,"children":1657},{"style":263},[1658],{"type":62,"value":1659},"# NVIDIA API key missing for remote NIM\n",{"type":56,"tag":141,"props":1661,"children":1662},{"class":143,"line":1101},[1663,1669,1674,1679,1684,1689,1693,1698,1702,1707],{"type":56,"tag":141,"props":1664,"children":1666},{"style":1665},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1667],{"type":62,"value":1668},"export",{"type":56,"tag":141,"props":1670,"children":1671},{"style":166},[1672],{"type":62,"value":1673}," NVIDIA_API_KEY",{"type":56,"tag":141,"props":1675,"children":1676},{"style":154},[1677],{"type":62,"value":1678},"=",{"type":56,"tag":141,"props":1680,"children":1681},{"style":154},[1682],{"type":62,"value":1683},"\"$(",{"type":56,"tag":141,"props":1685,"children":1686},{"style":181},[1687],{"type":62,"value":1688},"cat",{"type":56,"tag":141,"props":1690,"children":1691},{"style":154},[1692],{"type":62,"value":157},{"type":56,"tag":141,"props":1694,"children":1695},{"style":160},[1696],{"type":62,"value":1697},"bp-repo",{"type":56,"tag":141,"props":1699,"children":1700},{"style":154},[1701],{"type":62,"value":1276},{"type":56,"tag":141,"props":1703,"children":1704},{"style":160},[1705],{"type":62,"value":1706},"\u002F.secret\u002Fnvidia_build_api_key.txt",{"type":56,"tag":141,"props":1708,"children":1709},{"style":154},[1710],{"type":62,"value":1711},")\"\n",{"type":56,"tag":141,"props":1713,"children":1715},{"class":143,"line":1714},9,[1716,1720,1725,1730,1735,1740,1745,1750,1755,1760,1765],{"type":56,"tag":141,"props":1717,"children":1718},{"style":181},[1719],{"type":62,"value":851},{"type":56,"tag":141,"props":1721,"children":1722},{"style":160},[1723],{"type":62,"value":1724}," compose",{"type":56,"tag":141,"props":1726,"children":1727},{"style":160},[1728],{"type":62,"value":1729}," -f",{"type":56,"tag":141,"props":1731,"children":1732},{"style":160},[1733],{"type":62,"value":1734}," compose.yml",{"type":56,"tag":141,"props":1736,"children":1737},{"style":160},[1738],{"type":62,"value":1739}," --env-file",{"type":56,"tag":141,"props":1741,"children":1742},{"style":160},[1743],{"type":62,"value":1744}," sop\u002F.env",{"type":56,"tag":141,"props":1746,"children":1747},{"style":160},[1748],{"type":62,"value":1749}," --profile",{"type":56,"tag":141,"props":1751,"children":1752},{"style":160},[1753],{"type":62,"value":1754}," bp_sop_2d",{"type":56,"tag":141,"props":1756,"children":1757},{"style":160},[1758],{"type":62,"value":1759}," up",{"type":56,"tag":141,"props":1761,"children":1762},{"style":160},[1763],{"type":62,"value":1764}," -d",{"type":56,"tag":141,"props":1766,"children":1767},{"style":160},[1768],{"type":62,"value":1769}," vss-agent\n",{"type":56,"tag":65,"props":1771,"children":1772},{},[1773,1778,1780,1786],{"type":56,"tag":554,"props":1774,"children":1775},{},[1776],{"type":62,"value":1777},"Phase 4.7 \"no streams found\" on fresh deployment:",{"type":62,"value":1779},"\nIf the test runs immediately after deploy, the report time window (",{"type":56,"tag":71,"props":1781,"children":1783},{"className":1782},[],[1784],{"type":62,"value":1785},"now-1min to now",{"type":62,"value":1787},") may\nprecede the first recording. Wait at least 1 minute after the RTSP stream registers before running\nPhase 4.",{"type":56,"tag":80,"props":1789,"children":1791},{"id":1790},"examples",[1792],{"type":62,"value":1793},"Examples",{"type":56,"tag":123,"props":1795,"children":1797},{"id":1796},"pass-criteria-mandatory",[1798],{"type":62,"value":1799},"Pass Criteria — MANDATORY",{"type":56,"tag":65,"props":1801,"children":1802},{},[1803],{"type":56,"tag":554,"props":1804,"children":1805},{},[1806],{"type":62,"value":1807},"ALL tests must pass (100%). There is NO acceptable failure rate.",{"type":56,"tag":65,"props":1809,"children":1810},{},[1811],{"type":62,"value":1812},"Rules the agent MUST follow:",{"type":56,"tag":594,"props":1814,"children":1815},{},[1816,1826,1836,1846,1856,1866,1876],{"type":56,"tag":91,"props":1817,"children":1818},{},[1819,1824],{"type":56,"tag":554,"props":1820,"children":1821},{},[1822],{"type":62,"value":1823},"Zero tolerance for failures.",{"type":62,"value":1825}," Every single test check across all phases MUST pass. A result of 36\u002F38 or 17\u002F19 is a FAIL — not a pass with caveats.",{"type":56,"tag":91,"props":1827,"children":1828},{},[1829,1834],{"type":56,"tag":554,"props":1830,"children":1831},{},[1832],{"type":62,"value":1833},"Do NOT classify failures as \"environmental\", \"infrastructure\", \"test harness\", or \"intermittent\".",{"type":62,"value":1835}," Every failure is a bug until you have fixed it and the test passes on re-run.",{"type":56,"tag":91,"props":1837,"children":1838},{},[1839,1844],{"type":56,"tag":554,"props":1840,"children":1841},{},[1842],{"type":62,"value":1843},"Do NOT lower the pass threshold.",{"type":62,"value":1845}," Never say \"good enough\", \"residual\", \"non-blocking\", or \"acceptable failure\". If a test fails, fix it.",{"type":56,"tag":91,"props":1847,"children":1848},{},[1849,1854],{"type":56,"tag":554,"props":1850,"children":1851},{},[1852],{"type":62,"value":1853},"Do NOT skip or move on.",{"type":62,"value":1855}," If a test fails after 3 fix attempts, STOP and ask the user for help. Do NOT proceed to the next phase or declare completion.",{"type":56,"tag":91,"props":1857,"children":1858},{},[1859,1864],{"type":56,"tag":554,"props":1860,"children":1861},{},[1862],{"type":62,"value":1863},"Do NOT mark a phase as PASS if any check within it failed.",{"type":62,"value":1865}," Use FAIL until every check is green.",{"type":56,"tag":91,"props":1867,"children":1868},{},[1869,1874],{"type":56,"tag":554,"props":1870,"children":1871},{},[1872],{"type":62,"value":1873},"Timeout failures are bugs too.",{"type":62,"value":1875}," If a test times out (e.g., 30s client read-timeout), increase the timeout or fix the underlying latency — do NOT dismiss it as a test configuration issue.",{"type":56,"tag":91,"props":1877,"children":1878},{},[1879,1884],{"type":56,"tag":554,"props":1880,"children":1881},{},[1882],{"type":62,"value":1883},"Re-run after every fix.",{"type":62,"value":1885}," After applying a fix, re-run the failing phase to confirm the fix works. A fix is not verified until the test passes.",{"type":56,"tag":65,"props":1887,"children":1888},{},[1889,1894,1896,1902],{"type":56,"tag":554,"props":1890,"children":1891},{},[1892],{"type":62,"value":1893},"Completion criteria:",{"type":62,"value":1895}," The pipeline is complete ONLY when the final report shows ",{"type":56,"tag":71,"props":1897,"children":1899},{"className":1898},[],[1900],{"type":62,"value":1901},"38\u002F38",{"type":62,"value":1903}," (or equivalent total) with zero failures across all phases. Any other result means more work is needed.",{"type":56,"tag":80,"props":1905,"children":1907},{"id":1906},"workflow-for-the-agent",[1908],{"type":62,"value":1909},"Workflow for the Agent",{"type":56,"tag":65,"props":1911,"children":1912},{},[1913],{"type":62,"value":1914},"Copy this checklist and track progress:",{"type":56,"tag":130,"props":1916,"children":1920},{"className":1917,"code":1919,"language":62},[1918],"language-text","Test Progress:\n- [ ] Phase 1: Service health — ALL checks PASS\n- [ ] Phase 2: ELK data pipeline — ALL checks PASS\n- [ ] Phase 3: VIOS recording & livestream — ALL checks PASS (7\u002F7)\n- [ ] Phase 4: VSS agent (MCP, LLM, VLM, snapshot, video, report) — ALL checks PASS (7\u002F7)\n- [ ] Auto-debug any failures (do NOT skip — every failure must be fixed)\n- [ ] Auto-update vss-sop-build skills\u002Fscripts if root cause found\n- [ ] Confirm 100% pass rate before reporting to user\n- [ ] Report summary to user\n",[1921],{"type":56,"tag":71,"props":1922,"children":1923},{"__ignoreMap":135},[1924],{"type":62,"value":1919},{"type":56,"tag":65,"props":1926,"children":1927},{},[1928],{"type":56,"tag":554,"props":1929,"children":1930},{},[1931,1933],{"type":62,"value":1932},"Step 1 — Determine ",{"type":56,"tag":71,"props":1934,"children":1936},{"className":1935},[],[1937],{"type":62,"value":1938},"\u003Cbp-repo>",{"type":56,"tag":130,"props":1940,"children":1942},{"className":132,"code":1941,"language":134,"meta":135,"style":135},"# Usually the vss-sop checkout\nBP_REPO=$(pwd)   # or wherever the user cloned vss-sop\n",[1943],{"type":56,"tag":71,"props":1944,"children":1945},{"__ignoreMap":135},[1946,1954],{"type":56,"tag":141,"props":1947,"children":1948},{"class":143,"line":144},[1949],{"type":56,"tag":141,"props":1950,"children":1951},{"style":263},[1952],{"type":62,"value":1953},"# Usually the vss-sop checkout\n",{"type":56,"tag":141,"props":1955,"children":1956},{"class":143,"line":177},[1957,1962,1967,1972,1976],{"type":56,"tag":141,"props":1958,"children":1959},{"style":166},[1960],{"type":62,"value":1961},"BP_REPO",{"type":56,"tag":141,"props":1963,"children":1964},{"style":154},[1965],{"type":62,"value":1966},"=$(",{"type":56,"tag":141,"props":1968,"children":1969},{"style":148},[1970],{"type":62,"value":1971},"pwd",{"type":56,"tag":141,"props":1973,"children":1974},{"style":154},[1975],{"type":62,"value":1154},{"type":56,"tag":141,"props":1977,"children":1978},{"style":263},[1979],{"type":62,"value":1980},"   # or wherever the user cloned vss-sop\n",{"type":56,"tag":65,"props":1982,"children":1983},{},[1984],{"type":56,"tag":554,"props":1985,"children":1986},{},[1987],{"type":62,"value":1988},"Step 2 — Run the full test suite",{"type":56,"tag":130,"props":1990,"children":1992},{"className":132,"code":1991,"language":134,"meta":135,"style":135},"cd \"$BP_REPO\"\npython agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py \\\n  --bp-repo \"$BP_REPO\" \\\n  --env-file \"$BP_REPO\u002Fdeployments\u002Fsop\u002F.env\"\n",[1993],{"type":56,"tag":71,"props":1994,"children":1995},{"__ignoreMap":135},[1996,2018,2033,2057],{"type":56,"tag":141,"props":1997,"children":1998},{"class":143,"line":144},[1999,2003,2008,2013],{"type":56,"tag":141,"props":2000,"children":2001},{"style":148},[2002],{"type":62,"value":151},{"type":56,"tag":141,"props":2004,"children":2005},{"style":154},[2006],{"type":62,"value":2007}," \"",{"type":56,"tag":141,"props":2009,"children":2010},{"style":166},[2011],{"type":62,"value":2012},"$BP_REPO",{"type":56,"tag":141,"props":2014,"children":2015},{"style":154},[2016],{"type":62,"value":2017},"\"\n",{"type":56,"tag":141,"props":2019,"children":2020},{"class":143,"line":177},[2021,2025,2029],{"type":56,"tag":141,"props":2022,"children":2023},{"style":181},[2024],{"type":62,"value":184},{"type":56,"tag":141,"props":2026,"children":2027},{"style":160},[2028],{"type":62,"value":189},{"type":56,"tag":141,"props":2030,"children":2031},{"style":166},[2032],{"type":62,"value":194},{"type":56,"tag":141,"props":2034,"children":2035},{"class":143,"line":197},[2036,2040,2044,2048,2053],{"type":56,"tag":141,"props":2037,"children":2038},{"style":160},[2039],{"type":62,"value":203},{"type":56,"tag":141,"props":2041,"children":2042},{"style":154},[2043],{"type":62,"value":2007},{"type":56,"tag":141,"props":2045,"children":2046},{"style":166},[2047],{"type":62,"value":2012},{"type":56,"tag":141,"props":2049,"children":2050},{"style":154},[2051],{"type":62,"value":2052},"\"",{"type":56,"tag":141,"props":2054,"children":2055},{"style":166},[2056],{"type":62,"value":194},{"type":56,"tag":141,"props":2058,"children":2059},{"class":143,"line":215},[2060,2064,2068,2072,2077],{"type":56,"tag":141,"props":2061,"children":2062},{"style":160},[2063],{"type":62,"value":221},{"type":56,"tag":141,"props":2065,"children":2066},{"style":154},[2067],{"type":62,"value":2007},{"type":56,"tag":141,"props":2069,"children":2070},{"style":166},[2071],{"type":62,"value":2012},{"type":56,"tag":141,"props":2073,"children":2074},{"style":160},[2075],{"type":62,"value":2076},"\u002Fdeployments\u002Fsop\u002F.env",{"type":56,"tag":141,"props":2078,"children":2079},{"style":154},[2080],{"type":62,"value":2017},{"type":56,"tag":80,"props":2082,"children":2084},{"id":2083},"error-handling",[2085],{"type":62,"value":2086},"Error Handling",{"type":56,"tag":123,"props":2088,"children":2090},{"id":2089},"auto-debugging-failures-mandatory-do-not-skip",[2091],{"type":62,"value":2092},"Auto-Debugging Failures (MANDATORY — do NOT skip)",{"type":56,"tag":65,"props":2094,"children":2095},{},[2096],{"type":56,"tag":554,"props":2097,"children":2098},{},[2099],{"type":62,"value":2100},"CRITICAL: Every failing test MUST be fixed. Do NOT classify any failure as \"environmental\" or \"acceptable\" and move on.",{"type":56,"tag":65,"props":2102,"children":2103},{},[2104],{"type":62,"value":2105},"The script already collects container logs for failures. Additionally:",{"type":56,"tag":594,"props":2107,"children":2108},{},[2109,2122,2127],{"type":56,"tag":91,"props":2110,"children":2111},{},[2112,2114,2120],{"type":62,"value":2113},"Read the ",{"type":56,"tag":71,"props":2115,"children":2117},{"className":2116},[],[2118],{"type":62,"value":2119},"[FAIL]",{"type":62,"value":2121}," output and the auto-debug hints printed by the script.",{"type":56,"tag":91,"props":2123,"children":2124},{},[2125],{"type":62,"value":2126},"Apply the suggested fix (restart container, re-export key, re-run RTSP test, etc.).",{"type":56,"tag":91,"props":2128,"children":2129},{},[2130],{"type":62,"value":2131},"Re-run the failing phase only:",{"type":56,"tag":130,"props":2133,"children":2135},{"className":132,"code":2134,"language":134,"meta":135,"style":135},"python agentic\u002Fvss-sop-skills\u002Fvss-sop-test\u002Fscripts\u002Fvss_sop_test.py --phase \u003CN>\n",[2136],{"type":56,"tag":71,"props":2137,"children":2138},{"__ignoreMap":135},[2139],{"type":56,"tag":141,"props":2140,"children":2141},{"class":143,"line":144},[2142,2146,2150,2154,2158,2163],{"type":56,"tag":141,"props":2143,"children":2144},{"style":181},[2145],{"type":62,"value":184},{"type":56,"tag":141,"props":2147,"children":2148},{"style":160},[2149],{"type":62,"value":189},{"type":56,"tag":141,"props":2151,"children":2152},{"style":160},[2153],{"type":62,"value":254},{"type":56,"tag":141,"props":2155,"children":2156},{"style":154},[2157],{"type":62,"value":157},{"type":56,"tag":141,"props":2159,"children":2160},{"style":166},[2161],{"type":62,"value":2162},"N",{"type":56,"tag":141,"props":2164,"children":2165},{"style":154},[2166],{"type":62,"value":174},{"type":56,"tag":594,"props":2168,"children":2169},{"start":215},[2170,2175,2187],{"type":56,"tag":91,"props":2171,"children":2172},{},[2173],{"type":62,"value":2174},"Repeat until ALL tests in that phase pass (100%).",{"type":56,"tag":91,"props":2176,"children":2177},{},[2178,2180,2185],{"type":62,"value":2179},"If a test still fails after 3 fix attempts, ",{"type":56,"tag":554,"props":2181,"children":2182},{},[2183],{"type":62,"value":2184},"STOP and ask the user for help",{"type":62,"value":2186},". Do NOT declare completion or proceed to the next step.",{"type":56,"tag":91,"props":2188,"children":2189},{},[2190,2195],{"type":56,"tag":554,"props":2191,"children":2192},{},[2193],{"type":62,"value":2194},"Never rationalize a failure.",{"type":62,"value":2196}," Statements like \"this is an environmental issue, not a code defect\" are NOT acceptable reasons to skip a fix. Either fix the environment or fix the test.",{"type":56,"tag":123,"props":2198,"children":2200},{"id":2199},"auto-updating-the-upstream-skill-after-root-cause-fix",[2201],{"type":62,"value":2202},"Auto-Updating the Upstream Skill After Root-Cause Fix",{"type":56,"tag":65,"props":2204,"children":2205},{},[2206,2208,2213],{"type":62,"value":2207},"When a test failure is debugged and the root cause is identified, update the corresponding upstream skill so the bug cannot recur. First determine ",{"type":56,"tag":554,"props":2209,"children":2210},{},[2211],{"type":62,"value":2212},"where",{"type":62,"value":2214}," the root cause lives, then update the correct skill:",{"type":56,"tag":368,"props":2216,"children":2217},{},[2218,2234],{"type":56,"tag":372,"props":2219,"children":2220},{},[2221],{"type":56,"tag":376,"props":2222,"children":2223},{},[2224,2229],{"type":56,"tag":380,"props":2225,"children":2226},{},[2227],{"type":62,"value":2228},"Root cause lives in…",{"type":56,"tag":380,"props":2230,"children":2231},{},[2232],{"type":62,"value":2233},"Upstream skill to update",{"type":56,"tag":391,"props":2235,"children":2236},{},[2237,2274],{"type":56,"tag":376,"props":2238,"children":2239},{},[2240,2253],{"type":56,"tag":398,"props":2241,"children":2242},{},[2243,2245,2251],{"type":62,"value":2244},"Build\u002Fdeploy config (",{"type":56,"tag":71,"props":2246,"children":2248},{"className":2247},[],[2249],{"type":62,"value":2250},".env",{"type":62,"value":2252},", YAML, compose, copy scripts, build steps)",{"type":56,"tag":398,"props":2254,"children":2255},{},[2256,2265,2267,2273],{"type":56,"tag":554,"props":2257,"children":2258},{},[2259],{"type":56,"tag":71,"props":2260,"children":2262},{"className":2261},[],[2263],{"type":62,"value":2264},"vss-sop-build",{"type":62,"value":2266}," (",{"type":56,"tag":71,"props":2268,"children":2270},{"className":2269},[],[2271],{"type":62,"value":2272},"agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002F",{"type":62,"value":1154},{"type":56,"tag":376,"props":2275,"children":2276},{},[2277,2282],{"type":56,"tag":398,"props":2278,"children":2279},{},[2280],{"type":62,"value":2281},"DS-SOP source code (Python, DeepStream pipeline, Triton, VLM inference, API, Dockerfile, protos, SOP checker, RTSP streaming, etc.)",{"type":56,"tag":398,"props":2283,"children":2284},{},[2285,2294,2295,2301],{"type":56,"tag":554,"props":2286,"children":2287},{},[2288],{"type":56,"tag":71,"props":2289,"children":2291},{"className":2290},[],[2292],{"type":62,"value":2293},"ds-sop-skills",{"type":62,"value":2266},{"type":56,"tag":71,"props":2296,"children":2298},{"className":2297},[],[2299],{"type":62,"value":2300},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002F",{"type":62,"value":1154},{"type":56,"tag":65,"props":2303,"children":2304},{},[2305,2307,2312],{"type":62,"value":2306},"Keep every change ",{"type":56,"tag":554,"props":2308,"children":2309},{},[2310],{"type":62,"value":2311},"simple and general",{"type":62,"value":2313}," — fix the pattern, not just the instance.",{"type":56,"tag":2315,"props":2316,"children":2318},"h4",{"id":2317},"_4a-root-cause-in-builddeploy-update-vss-sop-build",[2319,2321],{"type":62,"value":2320},"4a. Root cause in build\u002Fdeploy → update ",{"type":56,"tag":71,"props":2322,"children":2324},{"className":2323},[],[2325],{"type":62,"value":2264},{"type":56,"tag":368,"props":2327,"children":2328},{},[2329,2350],{"type":56,"tag":372,"props":2330,"children":2331},{},[2332],{"type":56,"tag":376,"props":2333,"children":2334},{},[2335,2340],{"type":56,"tag":380,"props":2336,"children":2337},{},[2338],{"type":62,"value":2339},"Root-cause category",{"type":56,"tag":380,"props":2341,"children":2342},{},[2343,2345],{"type":62,"value":2344},"What to update in ",{"type":56,"tag":71,"props":2346,"children":2348},{"className":2347},[],[2349],{"type":62,"value":2264},{"type":56,"tag":391,"props":2351,"children":2352},{},[2353,2379,2400,2426,2445],{"type":56,"tag":376,"props":2354,"children":2355},{},[2356,2368],{"type":56,"tag":398,"props":2357,"children":2358},{},[2359,2361,2366],{"type":62,"value":2360},"Missing\u002Fwrong config value (",{"type":56,"tag":71,"props":2362,"children":2364},{"className":2363},[],[2365],{"type":62,"value":2250},{"type":62,"value":2367},", YAML)",{"type":56,"tag":398,"props":2369,"children":2370},{},[2371,2373],{"type":62,"value":2372},"Fix the default in the matching reference file under ",{"type":56,"tag":71,"props":2374,"children":2376},{"className":2375},[],[2377],{"type":62,"value":2378},"agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Freferences\u002F",{"type":56,"tag":376,"props":2380,"children":2381},{},[2382,2387],{"type":56,"tag":398,"props":2383,"children":2384},{},[2385],{"type":62,"value":2386},"Missing build step or wrong ordering",{"type":56,"tag":398,"props":2388,"children":2389},{},[2390,2392,2398],{"type":62,"value":2391},"Add\u002Freorder step in the relevant ",{"type":56,"tag":71,"props":2393,"children":2395},{"className":2394},[],[2396],{"type":62,"value":2397},"*-building.md",{"type":62,"value":2399}," reference doc",{"type":56,"tag":376,"props":2401,"children":2402},{},[2403,2408],{"type":56,"tag":398,"props":2404,"children":2405},{},[2406],{"type":62,"value":2407},"Compose issue (profile, volume, depends_on)",{"type":56,"tag":398,"props":2409,"children":2410},{},[2411,2413,2419,2420],{"type":62,"value":2412},"Patch the reference compose file(s) under ",{"type":56,"tag":71,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":62,"value":2418},"agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Freferences\u002Fdeployments\u002F",{"type":62,"value":630},{"type":56,"tag":71,"props":2421,"children":2423},{"className":2422},[],[2424],{"type":62,"value":2425},"agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Freferences\u002Fconfigs\u002F",{"type":56,"tag":376,"props":2427,"children":2428},{},[2429,2434],{"type":56,"tag":398,"props":2430,"children":2431},{},[2432],{"type":62,"value":2433},"Script bug (copy, patch, verify)",{"type":56,"tag":398,"props":2435,"children":2436},{},[2437,2439],{"type":62,"value":2438},"Fix the script under ",{"type":56,"tag":71,"props":2440,"children":2442},{"className":2441},[],[2443],{"type":62,"value":2444},"agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Fscripts\u002F",{"type":56,"tag":376,"props":2446,"children":2447},{},[2448,2453],{"type":56,"tag":398,"props":2449,"children":2450},{},[2451],{"type":62,"value":2452},"Undocumented failure mode",{"type":56,"tag":398,"props":2454,"children":2455},{},[2456,2458,2463,2465,2471],{"type":62,"value":2457},"Add entry to ",{"type":56,"tag":71,"props":2459,"children":2461},{"className":2460},[],[2462],{"type":62,"value":2264},{"type":62,"value":2464}," SKILL.md ",{"type":56,"tag":71,"props":2466,"children":2468},{"className":2467},[],[2469],{"type":62,"value":2470},"## Error Handling",{"type":62,"value":2472}," section",{"type":56,"tag":2315,"props":2474,"children":2476},{"id":2475},"_4b-root-cause-in-ds-sop-source-code-update-ds-sop-skills",[2477,2479],{"type":62,"value":2478},"4b. Root cause in DS-SOP source code → update ",{"type":56,"tag":71,"props":2480,"children":2482},{"className":2481},[],[2483],{"type":62,"value":2293},{"type":56,"tag":368,"props":2485,"children":2486},{},[2487,2506],{"type":56,"tag":372,"props":2488,"children":2489},{},[2490],{"type":56,"tag":376,"props":2491,"children":2492},{},[2493,2497],{"type":56,"tag":380,"props":2494,"children":2495},{},[2496],{"type":62,"value":2339},{"type":56,"tag":380,"props":2498,"children":2499},{},[2500,2501],{"type":62,"value":2344},{"type":56,"tag":71,"props":2502,"children":2504},{"className":2503},[],[2505],{"type":62,"value":2293},{"type":56,"tag":391,"props":2507,"children":2508},{},[2509,2535,2560,2585,2610,2631,2651,2676,2701,2736],{"type":56,"tag":376,"props":2510,"children":2511},{},[2512,2517],{"type":56,"tag":398,"props":2513,"children":2514},{},[2515],{"type":62,"value":2516},"API endpoint \u002F schema bug",{"type":56,"tag":398,"props":2518,"children":2519},{},[2520,2522,2528,2529],{"type":62,"value":2521},"Fix the reference in ",{"type":56,"tag":71,"props":2523,"children":2525},{"className":2524},[],[2526],{"type":62,"value":2527},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_01_fastapi_endpoints.md",{"type":62,"value":630},{"type":56,"tag":71,"props":2530,"children":2532},{"className":2531},[],[2533],{"type":62,"value":2534},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_02_pydantic_schemas.md",{"type":56,"tag":376,"props":2536,"children":2537},{},[2538,2543],{"type":56,"tag":398,"props":2539,"children":2540},{},[2541],{"type":62,"value":2542},"DeepStream pipeline issue",{"type":56,"tag":398,"props":2544,"children":2545},{},[2546,2547,2553,2554],{"type":62,"value":2521},{"type":56,"tag":71,"props":2548,"children":2550},{"className":2549},[],[2551],{"type":62,"value":2552},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_03_deepstream_pipeline.md",{"type":62,"value":630},{"type":56,"tag":71,"props":2555,"children":2557},{"className":2556},[],[2558],{"type":62,"value":2559},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_04_config_templates.md",{"type":56,"tag":376,"props":2561,"children":2562},{},[2563,2568],{"type":56,"tag":398,"props":2564,"children":2565},{},[2566],{"type":62,"value":2567},"Triton \u002F DDM model issue",{"type":56,"tag":398,"props":2569,"children":2570},{},[2571,2572,2578,2579],{"type":62,"value":2521},{"type":56,"tag":71,"props":2573,"children":2575},{"className":2574},[],[2576],{"type":62,"value":2577},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_05_triton_ddm_model.md",{"type":62,"value":630},{"type":56,"tag":71,"props":2580,"children":2582},{"className":2581},[],[2583],{"type":62,"value":2584},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_05b_custom_postprocess.md",{"type":56,"tag":376,"props":2586,"children":2587},{},[2588,2593],{"type":56,"tag":398,"props":2589,"children":2590},{},[2591],{"type":62,"value":2592},"SOP process \u002F checker logic",{"type":56,"tag":398,"props":2594,"children":2595},{},[2596,2597,2603,2604],{"type":62,"value":2521},{"type":56,"tag":71,"props":2598,"children":2600},{"className":2599},[],[2601],{"type":62,"value":2602},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_06_sop_process_manager.md",{"type":62,"value":630},{"type":56,"tag":71,"props":2605,"children":2607},{"className":2606},[],[2608],{"type":62,"value":2609},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_06b_sop_checker.md",{"type":56,"tag":376,"props":2611,"children":2612},{},[2613,2618],{"type":56,"tag":398,"props":2614,"children":2615},{},[2616],{"type":62,"value":2617},"VLM inference bug",{"type":56,"tag":398,"props":2619,"children":2620},{},[2621,2623,2629],{"type":62,"value":2622},"Fix ",{"type":56,"tag":71,"props":2624,"children":2626},{"className":2625},[],[2627],{"type":62,"value":2628},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fvllm_inference_reference.py",{"type":62,"value":2630}," or the corresponding skill doc",{"type":56,"tag":376,"props":2632,"children":2633},{},[2634,2639],{"type":56,"tag":398,"props":2635,"children":2636},{},[2637],{"type":62,"value":2638},"RTSP streaming output",{"type":56,"tag":398,"props":2640,"children":2641},{},[2642,2643,2649],{"type":62,"value":2622},{"type":56,"tag":71,"props":2644,"children":2646},{"className":2645},[],[2647],{"type":62,"value":2648},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_18_rtsp_streaming_output.md",{"type":62,"value":2650}," or the reference code",{"type":56,"tag":376,"props":2652,"children":2653},{},[2654,2659],{"type":56,"tag":398,"props":2655,"children":2656},{},[2657],{"type":62,"value":2658},"Messaging \u002F Kafka schema",{"type":56,"tag":398,"props":2660,"children":2661},{},[2662,2663,2669,2670],{"type":62,"value":2622},{"type":56,"tag":71,"props":2664,"children":2666},{"className":2665},[],[2667],{"type":62,"value":2668},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_16_message_schema.md",{"type":62,"value":630},{"type":56,"tag":71,"props":2671,"children":2673},{"className":2672},[],[2674],{"type":62,"value":2675},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fmessager_reference.py",{"type":56,"tag":376,"props":2677,"children":2678},{},[2679,2684],{"type":56,"tag":398,"props":2680,"children":2681},{},[2682],{"type":62,"value":2683},"Dockerfile \u002F build",{"type":56,"tag":398,"props":2685,"children":2686},{},[2687,2688,2694,2695],{"type":62,"value":2622},{"type":56,"tag":71,"props":2689,"children":2691},{"className":2690},[],[2692],{"type":62,"value":2693},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002FDockerfile_reference",{"type":62,"value":630},{"type":56,"tag":71,"props":2696,"children":2698},{"className":2697},[],[2699],{"type":62,"value":2700},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002Fskill_09_docker_build_deploy.md",{"type":56,"tag":376,"props":2702,"children":2703},{},[2704,2709],{"type":56,"tag":398,"props":2705,"children":2706},{},[2707],{"type":62,"value":2708},"Reference source file bug",{"type":56,"tag":398,"props":2710,"children":2711},{},[2712,2714,2720,2722,2728,2730],{"type":62,"value":2713},"Fix the corresponding ",{"type":56,"tag":71,"props":2715,"children":2717},{"className":2716},[],[2718],{"type":62,"value":2719},"*_reference.py",{"type":62,"value":2721}," \u002F ",{"type":56,"tag":71,"props":2723,"children":2725},{"className":2724},[],[2726],{"type":62,"value":2727},"*_reference.cpp",{"type":62,"value":2729}," file under ",{"type":56,"tag":71,"props":2731,"children":2733},{"className":2732},[],[2734],{"type":62,"value":2735},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002Freferences\u002F",{"type":56,"tag":376,"props":2737,"children":2738},{},[2739,2743],{"type":56,"tag":398,"props":2740,"children":2741},{},[2742],{"type":62,"value":2452},{"type":56,"tag":398,"props":2744,"children":2745},{},[2746,2747,2753],{"type":62,"value":2457},{"type":56,"tag":71,"props":2748,"children":2750},{"className":2749},[],[2751],{"type":62,"value":2752},"..\u002Fds-sop-skills\u002Fdeepstream-sop\u002FSKILL.md",{"type":62,"value":2754}," error handling or the relevant skill doc",{"type":56,"tag":2315,"props":2756,"children":2758},{"id":2757},"procedure-applies-to-both-4a-and-4b",[2759],{"type":62,"value":2760},"Procedure (applies to both 4a and 4b):",{"type":56,"tag":594,"props":2762,"children":2763},{},[2764,2787,2797,2807,2859],{"type":56,"tag":91,"props":2765,"children":2766},{},[2767,2772,2774,2779,2781,2786],{"type":56,"tag":554,"props":2768,"children":2769},{},[2770],{"type":62,"value":2771},"Classify the root cause",{"type":62,"value":2773}," — determine whether it belongs to build\u002Fdeploy config (",{"type":56,"tag":71,"props":2775,"children":2777},{"className":2776},[],[2778],{"type":62,"value":2264},{"type":62,"value":2780},") or DS-SOP source code (",{"type":56,"tag":71,"props":2782,"children":2784},{"className":2783},[],[2785],{"type":62,"value":2293},{"type":62,"value":366},{"type":56,"tag":91,"props":2788,"children":2789},{},[2790,2795],{"type":56,"tag":554,"props":2791,"children":2792},{},[2793],{"type":62,"value":2794},"Identify the file",{"type":62,"value":2796}," — map the root cause to the corresponding source file in the chosen skill's directory.",{"type":56,"tag":91,"props":2798,"children":2799},{},[2800,2805],{"type":56,"tag":554,"props":2801,"children":2802},{},[2803],{"type":62,"value":2804},"Make the minimal fix",{"type":62,"value":2806}," — change only what is needed; prefer updating a default value, adding a guard\u002Fcheck, or appending an entry under Error Handling over larger rewrites.",{"type":56,"tag":91,"props":2808,"children":2809},{},[2810,2815,2817],{"type":56,"tag":554,"props":2811,"children":2812},{},[2813],{"type":62,"value":2814},"Verify consistency",{"type":62,"value":2816},":\n",{"type":56,"tag":87,"props":2818,"children":2819},{},[2820,2840],{"type":56,"tag":91,"props":2821,"children":2822},{},[2823,2825,2830,2832,2838],{"type":62,"value":2824},"If a ",{"type":56,"tag":71,"props":2826,"children":2828},{"className":2827},[],[2829],{"type":62,"value":2264},{"type":62,"value":2831}," reference was changed, re-run ",{"type":56,"tag":71,"props":2833,"children":2835},{"className":2834},[],[2836],{"type":62,"value":2837},"agentic\u002Fvss-sop-skills\u002Fvss-sop-build\u002Fscripts\u002Fverify_build.sh",{"type":62,"value":2839}," to confirm the build still passes.",{"type":56,"tag":91,"props":2841,"children":2842},{},[2843,2844,2849,2851,2857],{"type":62,"value":2824},{"type":56,"tag":71,"props":2845,"children":2847},{"className":2846},[],[2848],{"type":62,"value":2293},{"type":62,"value":2850}," reference was changed, regenerate the source and rebuild ",{"type":56,"tag":71,"props":2852,"children":2854},{"className":2853},[],[2855],{"type":62,"value":2856},"ds-sop:1.0.0",{"type":62,"value":2858}," to confirm the fix.",{"type":56,"tag":91,"props":2860,"children":2861},{},[2862,2867],{"type":56,"tag":554,"props":2863,"children":2864},{},[2865],{"type":62,"value":2866},"Log the change",{"type":62,"value":2868}," — include in the final report which skill and file was updated and why.",{"type":56,"tag":2870,"props":2871,"children":2872},"blockquote",{},[2873],{"type":56,"tag":65,"props":2874,"children":2875},{},[2876,2881,2883,2888,2890,2895,2897,2902],{"type":56,"tag":554,"props":2877,"children":2878},{},[2879],{"type":62,"value":2880},"Rule of thumb:",{"type":62,"value":2882}," if the root cause is in the generated DS-SOP source code (Python logic, pipeline config, API, Dockerfile, etc.), the fix belongs in ",{"type":56,"tag":71,"props":2884,"children":2886},{"className":2885},[],[2887],{"type":62,"value":2293},{"type":62,"value":2889}," — so the next generation produces correct code. If it is in the VSS blueprint build process (compose wiring, ",{"type":56,"tag":71,"props":2891,"children":2893},{"className":2892},[],[2894],{"type":62,"value":2250},{"type":62,"value":2896}," defaults, copy scripts, build ordering), the fix belongs in ",{"type":56,"tag":71,"props":2898,"children":2900},{"className":2899},[],[2901],{"type":62,"value":2264},{"type":62,"value":2903},". If it is environment-specific (wrong IP, expired key), just document it in the report — don't change either skill.",{"type":56,"tag":65,"props":2905,"children":2906},{},[2907],{"type":56,"tag":554,"props":2908,"children":2909},{},[2910],{"type":62,"value":2911},"Step 5 — Report results",{"type":56,"tag":65,"props":2913,"children":2914},{},[2915],{"type":62,"value":2916},"Present the final summary table to the user. The report MUST show 100% pass rate across all phases.",{"type":56,"tag":87,"props":2918,"children":2919},{},[2920,2925],{"type":56,"tag":91,"props":2921,"children":2922},{},[2923],{"type":62,"value":2924},"If all tests pass: report the green summary.",{"type":56,"tag":91,"props":2926,"children":2927},{},[2928,2930,2935],{"type":62,"value":2929},"If any test still fails: report the failure with full debug context and ",{"type":56,"tag":554,"props":2931,"children":2932},{},[2933],{"type":62,"value":2934},"explicitly state that the pipeline is NOT complete",{"type":62,"value":2936},". Do NOT use language suggesting partial success (e.g., \"36\u002F38 checks pass\" is a failure report, not a success report).",{"type":56,"tag":65,"props":2938,"children":2939},{},[2940,2942,2947,2948,2953],{"type":62,"value":2941},"If any ",{"type":56,"tag":71,"props":2943,"children":2945},{"className":2944},[],[2946],{"type":62,"value":2264},{"type":62,"value":630},{"type":56,"tag":71,"props":2949,"children":2951},{"className":2950},[],[2952],{"type":62,"value":2293},{"type":62,"value":2954}," files were updated in Step 4, list them with a one-line summary of each change.",{"type":56,"tag":80,"props":2956,"children":2958},{"id":2957},"service-endpoints-reference",[2959],{"type":62,"value":2960},"Service Endpoints Reference",{"type":56,"tag":368,"props":2962,"children":2963},{},[2964,2980],{"type":56,"tag":372,"props":2965,"children":2966},{},[2967],{"type":56,"tag":376,"props":2968,"children":2969},{},[2970,2975],{"type":56,"tag":380,"props":2971,"children":2972},{},[2973],{"type":62,"value":2974},"Service",{"type":56,"tag":380,"props":2976,"children":2977},{},[2978],{"type":62,"value":2979},"URL",{"type":56,"tag":391,"props":2981,"children":2982},{},[2983,3000,3017,3034,3051,3068,3094,3118,3135],{"type":56,"tag":376,"props":2984,"children":2985},{},[2986,2991],{"type":56,"tag":398,"props":2987,"children":2988},{},[2989],{"type":62,"value":2990},"Elasticsearch",{"type":56,"tag":398,"props":2992,"children":2993},{},[2994],{"type":56,"tag":71,"props":2995,"children":2997},{"className":2996},[],[2998],{"type":62,"value":2999},"http:\u002F\u002Flocalhost:9200",{"type":56,"tag":376,"props":3001,"children":3002},{},[3003,3008],{"type":56,"tag":398,"props":3004,"children":3005},{},[3006],{"type":62,"value":3007},"Kibana",{"type":56,"tag":398,"props":3009,"children":3010},{},[3011],{"type":56,"tag":71,"props":3012,"children":3014},{"className":3013},[],[3015],{"type":62,"value":3016},"http:\u002F\u002F\u003CEXTERNAL_IP>:5601",{"type":56,"tag":376,"props":3018,"children":3019},{},[3020,3025],{"type":56,"tag":398,"props":3021,"children":3022},{},[3023],{"type":62,"value":3024},"VST (VIOS)",{"type":56,"tag":398,"props":3026,"children":3027},{},[3028],{"type":56,"tag":71,"props":3029,"children":3031},{"className":3030},[],[3032],{"type":62,"value":3033},"http:\u002F\u002Flocalhost:30888\u002Fvst",{"type":56,"tag":376,"props":3035,"children":3036},{},[3037,3042],{"type":56,"tag":398,"props":3038,"children":3039},{},[3040],{"type":62,"value":3041},"VSS Agent",{"type":56,"tag":398,"props":3043,"children":3044},{},[3045],{"type":56,"tag":71,"props":3046,"children":3048},{"className":3047},[],[3049],{"type":62,"value":3050},"http:\u002F\u002Flocalhost:8000",{"type":56,"tag":376,"props":3052,"children":3053},{},[3054,3059],{"type":56,"tag":398,"props":3055,"children":3056},{},[3057],{"type":62,"value":3058},"VSS VA MCP",{"type":56,"tag":398,"props":3060,"children":3061},{},[3062],{"type":56,"tag":71,"props":3063,"children":3065},{"className":3064},[],[3066],{"type":62,"value":3067},"http:\u002F\u002Flocalhost:9901",{"type":56,"tag":376,"props":3069,"children":3070},{},[3071,3076],{"type":56,"tag":398,"props":3072,"children":3073},{},[3074],{"type":62,"value":3075},"LLM NIM",{"type":56,"tag":398,"props":3077,"children":3078},{},[3079,3081,3087,3089],{"type":62,"value":3080},"Configured via ",{"type":56,"tag":71,"props":3082,"children":3084},{"className":3083},[],[3085],{"type":62,"value":3086},"LLM_BASE_URL",{"type":62,"value":3088}," in ",{"type":56,"tag":71,"props":3090,"children":3092},{"className":3091},[],[3093],{"type":62,"value":2250},{"type":56,"tag":376,"props":3095,"children":3096},{},[3097,3102],{"type":56,"tag":398,"props":3098,"children":3099},{},[3100],{"type":62,"value":3101},"VLM NIM",{"type":56,"tag":398,"props":3103,"children":3104},{},[3105,3106,3112,3113],{"type":62,"value":3080},{"type":56,"tag":71,"props":3107,"children":3109},{"className":3108},[],[3110],{"type":62,"value":3111},"VLM_BASE_URL",{"type":62,"value":3088},{"type":56,"tag":71,"props":3114,"children":3116},{"className":3115},[],[3117],{"type":62,"value":2250},{"type":56,"tag":376,"props":3119,"children":3120},{},[3121,3126],{"type":56,"tag":398,"props":3122,"children":3123},{},[3124],{"type":62,"value":3125},"VSS UI",{"type":56,"tag":398,"props":3127,"children":3128},{},[3129],{"type":56,"tag":71,"props":3130,"children":3132},{"className":3131},[],[3133],{"type":62,"value":3134},"http:\u002F\u002F\u003CEXTERNAL_IP>:3000",{"type":56,"tag":376,"props":3136,"children":3137},{},[3138,3143],{"type":56,"tag":398,"props":3139,"children":3140},{},[3141],{"type":62,"value":3142},"Phoenix",{"type":56,"tag":398,"props":3144,"children":3145},{},[3146],{"type":56,"tag":71,"props":3147,"children":3149},{"className":3148},[],[3150],{"type":62,"value":3151},"http:\u002F\u002F\u003CEXTERNAL_IP>:6006",{"type":56,"tag":80,"props":3153,"children":3155},{"id":3154},"dependencies",[3156],{"type":62,"value":3157},"Dependencies",{"type":56,"tag":65,"props":3159,"children":3160},{},[3161,3163,3169,3171,3177],{"type":62,"value":3162},"The test script requires only ",{"type":56,"tag":71,"props":3164,"children":3166},{"className":3165},[],[3167],{"type":62,"value":3168},"requests",{"type":62,"value":3170}," (installed in most Python environments). No additional ",{"type":56,"tag":71,"props":3172,"children":3174},{"className":3173},[],[3175],{"type":62,"value":3176},"pip install",{"type":62,"value":3178}," needed if you have a standard Python 3.8+ environment.",{"type":56,"tag":3180,"props":3181,"children":3182},"hr",{},[],{"type":56,"tag":80,"props":3184,"children":3186},{"id":3185},"license",[3187],{"type":62,"value":3188},"License",{"type":56,"tag":65,"props":3190,"children":3191},{},[3192,3194,3203,3205,3212],{"type":62,"value":3193},"Use of this skill is governed by the ",{"type":56,"tag":3195,"props":3196,"children":3200},"a",{"href":3197,"rel":3198},"https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002Flegalcode.en",[3199],"nofollow",[3201],{"type":62,"value":3202},"Creative Commons Attribution 4.0 International License (CC BY 4.0)",{"type":62,"value":3204}," and the ",{"type":56,"tag":3195,"props":3206,"children":3209},{"href":3207,"rel":3208},"https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0",[3199],[3210],{"type":62,"value":3211},"Apache License, Version 2.0",{"type":62,"value":586},{"type":56,"tag":3214,"props":3215,"children":3216},"style",{},[3217],{"type":62,"value":3218},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3220,"total":3372},[3221,3239,3256,3267,3279,3291,3304,3318,3329,3340,3354,3363],{"slug":3222,"name":3222,"fn":3223,"description":3224,"org":3225,"tags":3226,"stars":3236,"repoUrl":3237,"updatedAt":3238},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3227,3230,3233],{"name":3228,"slug":3229,"type":15},"Documentation","documentation",{"name":3231,"slug":3232,"type":15},"MCP","mcp",{"name":3234,"slug":3235,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":3240,"name":3240,"fn":3241,"description":3242,"org":3243,"tags":3244,"stars":3253,"repoUrl":3254,"updatedAt":3255},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3245,3248,3251],{"name":3246,"slug":3247,"type":15},"Containers","containers",{"name":3249,"slug":3250,"type":15},"Deployment","deployment",{"name":3252,"slug":184,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":3257,"name":3257,"fn":3258,"description":3259,"org":3260,"tags":3261,"stars":3253,"repoUrl":3254,"updatedAt":3266},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3262,3265],{"name":3263,"slug":3264,"type":15},"CI\u002FCD","ci-cd",{"name":3249,"slug":3250,"type":15},"2026-07-14T05:25:59.97109",{"slug":3268,"name":3268,"fn":3269,"description":3270,"org":3271,"tags":3272,"stars":3253,"repoUrl":3254,"updatedAt":3278},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3273,3274,3275],{"name":3263,"slug":3264,"type":15},{"name":3249,"slug":3250,"type":15},{"name":3276,"slug":3277,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":3280,"name":3280,"fn":3281,"description":3282,"org":3283,"tags":3284,"stars":3253,"repoUrl":3254,"updatedAt":3290},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3285,3286,3287],{"name":24,"slug":25,"type":15},{"name":3276,"slug":3277,"type":15},{"name":3288,"slug":3289,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":3292,"name":3292,"fn":3293,"description":3294,"org":3295,"tags":3296,"stars":3253,"repoUrl":3254,"updatedAt":3303},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3297,3300],{"name":3298,"slug":3299,"type":15},"Best Practices","best-practices",{"name":3301,"slug":3302,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":3305,"name":3305,"fn":3306,"description":3307,"org":3308,"tags":3309,"stars":3253,"repoUrl":3254,"updatedAt":3317},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3310,3313,3316],{"name":3311,"slug":3312,"type":15},"Machine Learning","machine-learning",{"name":3314,"slug":3315,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":3319,"name":3319,"fn":3320,"description":3321,"org":3322,"tags":3323,"stars":3253,"repoUrl":3254,"updatedAt":3328},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3324,3327],{"name":3325,"slug":3326,"type":15},"QA","qa",{"name":21,"slug":22,"type":15},"2026-07-14T05:25:53.673039",{"slug":3330,"name":3330,"fn":3331,"description":3332,"org":3333,"tags":3334,"stars":3253,"repoUrl":3254,"updatedAt":3339},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3335,3336],{"name":3249,"slug":3250,"type":15},{"name":3337,"slug":3338,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":3341,"name":3341,"fn":3342,"description":3343,"org":3344,"tags":3345,"stars":3253,"repoUrl":3254,"updatedAt":3353},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3346,3349,3350],{"name":3347,"slug":3348,"type":15},"Code Review","code-review",{"name":3276,"slug":3277,"type":15},{"name":3351,"slug":3352,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":3355,"name":3355,"fn":3356,"description":3357,"org":3358,"tags":3359,"stars":3253,"repoUrl":3254,"updatedAt":3362},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3360,3361],{"name":3325,"slug":3326,"type":15},{"name":21,"slug":22,"type":15},"2026-07-14T05:25:54.928983",{"slug":3364,"name":3364,"fn":3365,"description":3366,"org":3367,"tags":3368,"stars":3253,"repoUrl":3254,"updatedAt":3371},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3369,3370],{"name":17,"slug":18,"type":15},{"name":3263,"slug":3264,"type":15},"2026-07-30T05:29:03.275638",496,{"items":3374,"total":3469},[3375,3391,3404,3417,3433,3445,3456],{"slug":3376,"name":3376,"fn":3377,"description":3378,"org":3379,"tags":3380,"stars":26,"repoUrl":27,"updatedAt":3390},"sop-build","orchestrate end-to-end SOP monitoring pipelines","Orchestrate the end-to-end SOP pipeline, including preflight prerequisite checks, verifying models and downloading assets, generating the DeepStream SOP microservice with RTSP output, evaluating the microservice, and building, deploying, and testing the VSS SOP blueprint. Use when asked to run the full SOP pipeline, set up the SOP pipeline from scratch, execute preflight checks, verify models, download assets, generate the SOP microservice, evaluate the microservice, build the VSS blueprint, deploy the VSS blueprint, test the VSS blueprint, or manage the complete build-evaluate-deploy-test cycle.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3381,3382,3385,3386,3387],{"name":17,"slug":18,"type":15},{"name":3383,"slug":3384,"type":15},"Engineering","engineering",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":3388,"slug":3389,"type":15},"Video","video","2026-07-14T05:32:48.503678",{"slug":3392,"name":3392,"fn":3393,"description":3394,"org":3395,"tags":3396,"stars":26,"repoUrl":27,"updatedAt":3403},"sop-by-action-eval","run by-action VLM evaluations","Use when running by-action VLM evaluation (per-action-clip inference + accuracy metrics) against the BP evaluation-ms HTTP API. Invoked as \u002Fsop-by-action-eval \u003Cinputs.yaml> [natural language parameter overrides]",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3397,3400,3401,3402],{"name":3398,"slug":3399,"type":15},"Evals","evals",{"name":3311,"slug":3312,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:36:13.260585",{"slug":3405,"name":3405,"fn":3406,"description":3407,"org":3408,"tags":3409,"stars":26,"repoUrl":27,"updatedAt":3416},"sop-cr-finetuning","fine-tune VLM models for SOP monitoring","Fine-tune Cosmos-Reason2 (CR2) VLM for SOP monitoring. Use when you need to launch and monitor a VLM training run with a given dataset ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3410,3413,3414,3415],{"name":3411,"slug":3412,"type":15},"AI Infrastructure","ai-infrastructure",{"name":3311,"slug":3312,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:36:22.874218",{"slug":3418,"name":3418,"fn":3419,"description":3420,"org":3421,"tags":3422,"stars":26,"repoUrl":27,"updatedAt":3432},"sop-data-augmentation","augment annotated datasets","Use when the user wants to run data augmentation on an annotated dataset, configure augmentation parameters, check augmentation status, or understand what each QA augmentation type does (BCQ, MCQ, GQA, DMCQ, DSQA, ENQA)",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3423,3426,3429,3430,3431],{"name":3424,"slug":3425,"type":15},"Data Engineering","data-engineering",{"name":3427,"slug":3428,"type":15},"Datasets","datasets",{"name":3311,"slug":3312,"type":15},{"name":9,"slug":8,"type":15},{"name":3325,"slug":3326,"type":15},"2026-07-14T05:36:20.305657",{"slug":3434,"name":3434,"fn":3435,"description":3436,"org":3437,"tags":3438,"stars":26,"repoUrl":27,"updatedAt":3444},"sop-ddm-finetuning","fine-tune DDM-Net models for SOP monitoring","Fine-tune DDM-Net temporal boundary detector for SOP monitoring. Use when you need to launch and monitor a DDM-Net training run with a given dataset ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3439,3442,3443],{"name":3440,"slug":3441,"type":15},"Deep Learning","deep-learning",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:35:16.203684",{"slug":3446,"name":3446,"fn":3447,"description":3448,"org":3449,"tags":3450,"stars":26,"repoUrl":27,"updatedAt":3455},"sop-e2e-inference","run end-to-end inference evaluations","Use when running the e2e evaluation pipeline (temporal segmentation + action recognition + accuracy) against the BP evaluation-ms HTTP API. Invoked as \u002Fsop-e2e-inference \u003Cinputs.yaml> [natural language parameter overrides]",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3451,3452,3453,3454],{"name":3398,"slug":3399,"type":15},{"name":3311,"slug":3312,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:36:15.23958",{"slug":3457,"name":3457,"fn":3458,"description":3459,"org":3460,"tags":3461,"stars":26,"repoUrl":27,"updatedAt":3468},"sop-ft-orchestrate","orchestrate SOP fine-tuning pipelines","Autonomous end-to-end orchestrator for SOP fine-tuning. Runs the full Import → Augment → DDM Train → VLM Train → Evaluate → RCA loop. Interprets RCA findings across DDM, VLM and augment axes, applies config fixes autonomously, and iterates until success criteria are met or max_pipeline_iterations reached. Call with a path to an inputs.yaml or with natural language.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3462,3463,3464,3465],{"name":17,"slug":18,"type":15},{"name":3311,"slug":3312,"type":15},{"name":9,"slug":8,"type":15},{"name":3466,"slug":3467,"type":15},"Orchestration","orchestration","2026-07-14T05:36:28.162686",11]