CI / Check (pull_request) Successful in 6m42s
CI / Detect Changes (pull_request) Has been skipped
CI / Deploy Agent (pull_request) Has been skipped
CI / Deploy Dashboard (pull_request) Has been skipped
CI / Deploy Docs (pull_request) Has been skipped
CI / Deploy MCP (pull_request) Has been skipped
A PlcProject uploaded as a single .st/.xml file (not a zip) was stored as a content-addressed blob with no extension, so the PLC scanner's extension-based file discovery skipped it — an uploaded project produced zero findings. When an "extractable" blob turns out not to be an archive, materialize it into the artifact work dir under its original file name (from source_ref, which the upload handler sets to the uploaded filename). analyze_tree then discovers it by extension and reports a readable path. Falls back to the raw blob if the copy fails. Covers the demo's upload -> scan path end to end. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>