Repository navigation
docs(file-rules): document upload timestamp, timezone and {timezone} - #268
Conversation
The {year}, {month}, {day}, {hour} and {minute} variables in an upload
path are rendered by the backend in UTC at upload creation, which happens
just before the agent transfers the file. Say so explicitly, and note that
they don't follow the file's modification time or the device's clock.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HWuN4Rqg9RQgRJYMAiSBKg
AI review: approve for
|
) <!-- claude-projects-attribution: {"github_login":"miru-agents"} --> _Requested by **bens-agent** · [project thread](https://claude.ai/code/project/chan_01CAhx68ku57XYPMZ3ERH4TZ?thread=cmsg_01CAhx68ku57XYPMZ3ERH4TZGkkHc4V3iih2RynerMnhWZ)_ Before: the agent sends upload timestamps in UTC only, so the backend can't render upload paths in the device's local time zone. After: the agent sends `source.mtime` with the device's local offset. The backend always renders path time variables from mtime, and `upload.timezone: device` rules keep that offset. Agent side of mirurobotics/openapi#335 and mirurobotics/backend#999. Docs: mirurobotics/docs#268. ## Summary - `new_upl_request` takes the time zone as a parameter; production passes `chrono::Local`, which honors `TZ` (including POSIX strings) and falls back to `/etc/localtime`. - `first_observed_at` / `last_observed_at` stay UTC. - Test fixtures set `FileRuleUpload.timezone`, which `agent/v0.5.10` makes required in responses (mirurobotics/openapi#347). ## Commits - Vendor the released backend agent spec `agent/v0.5.10` and regenerate `libs/backend-api` (generated code only). - Feature and tests. ## Points for review - Because `timezone` is now required, this agent can't parse file rules from a backend that doesn't send the field, which is any backend before #999. Deploy backend#999 before releasing this agent. ## Testing - `cargo test -p miru-agent --test mod data_uploads::upload::executor` passes, including an EST case (`2026-01-14T20:30:00-05:00`). - `cargo fmt` and `cargo clippy --no-deps -D warnings` are clean. --- _Generated by [Claude Code](https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH)_ <!-- codesmith:footer --> --- <a href="https://app.blacksmith.sh/mirurobotics/codesmith/agent/pr/356?autoLogin=true&ref=codesmith_pr_footer"><picture>``<source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v3.svg"><img alt="View with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png" width="162" height="28">``</picture></a> <a href="````'''https://backend.blacksmith.sh/track/enable-autofix?expires=1795214323&installation_model_id=425273&pr_number=356&ref=codesmith_pr_footer&repository=mirurobotics%2Fagent&return_to=https%3A%2F%2Fgithub.com%2Fmirurobotics%2Fagent%2Fpull%2F356&signature=4034a077180078507271d8c8c4466e3d54895113dd3252437e559a731e6495f3"><picture><source```` media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img alt="Autofix with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png" width="190" height="28">```</picture></a> <sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you need.</sup> <!-- codesmith:autofix:disabled --> <!-- /codesmith:footer --> --- _Generated by [Claude Code](https://claude.ai/code)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
ben-miru
left a comment
There was a problem hiding this comment.
we need to add cli changelog for the next cli version and then let users know what cli version is required to use the new timezone variable. Also please review the actual implementation to double check the docs are accurate
|
Thanks, addressed in 8642cb3:
Generated by Claude Code |
AI review: approve for
|
AI review: approve for
|
AI review: approve for
|
3d4e1f9 to
6ef2d77
Compare
AI review: approve for
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
Add the CLI v0.12.3 changelog entry, an Info callout on the timezone field naming the minimum CLI version, and correct the note on older agents: before v0.11.2 they send mtime in UTC. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
6ef2d77 to
c78416d
Compare
|
The Generated by Claude Code |
AI review: approve for
|
AI review: approve for
|
AI review: approve for
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wxu7TtSTH5GBUwQvBCa8uH
AI review: approve for
|
AI review: approve for
|
Requested by bens-agent · project thread
Stacked on #267 (base is its branch).
Summary
upload.timezonefield (utc|device) and the{timezone}path variable (ISO 8601 basic offset, e.g.-0500).TZ, then/etc/localtime) and how to setTZfor themiruservice with a systemd drop-in, plus a New York example.Stays draft until mirurobotics/openapi#335 and mirurobotics/backend#999 ship and the variable name and offset format are confirmed.
Generated by Claude Code
<source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v3.svg"><img alt="View with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png" width="162" height="28">https://backend.blacksmith.sh/track/enable-autofix?expires=1795213289&installation_model_id=425273&pr_number=268&ref=codesmith_pr_footer&repository=mirurobotics%2Fdocs&return_to=https%3A%2F%2Fgithub.com%2Fmirurobotics%2Fdocs%2Fpull%2F268&signature=6f1ef18e8d21b921a600e06bddd7964c2e7ee7b15d2f32da1661558e2a6a6df4"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img alt="Autofix with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png" width="190" height="28">Need help on this PR? Tag
@codesmith-botwith what you need.Generated by Claude Code