One glob language in every sandbox
Fabro now compiles workspace globs once and applies them to normalized relative paths in Rust. Local, Docker, and Daytona sandboxes only enumerate files; provider commands and APIs no longer interpret user patterns.* and ? stay within one path segment, bracket expressions match one character, and a complete ** segment crosses directories. Matching is case-sensitive, leading dots are ordinary characters, and / is the separator everywhere. Artifact capture and the agent glob tool therefore agree on patterns such as .ai/reports/*.md, .ai/reports/**/*.md, and .ai/plans/????-??-??-*.md.
Artifact traversal also uses structured provider metadata for file-size limits and prunes dependency, cache, and build directories before matching.
Artifact collection now treats each post-stage workspace state as authoritative instead of relying on modification timestamps. Fabro records the same path and content hash only once per run and captures the path again when its content changes.