Repository navigation
feat(timeline): log moves and sensor switches as Move and Update activities - #637
Merged
Merged
Conversation
…vities An asset moved to another namespace is asset.moved, a Move by whoever moved it, with the namespaces it left and joined and its collection, seen where it is now. A sensor paused, ignored, resumed or set back to new by a person is sensor.changed, an Update with the status it had before, seen in its namespace or by admins when it has none. Move joins the AS2 verbs an activity may have. Saving a status already set, or a rename, logs nothing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ln25ykE6uBDqx21WBU94SX
This was referenced Oct 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Adeel · project thread
Description
Before: moving an asset to another namespace and pausing or resuming a sensor left no trace on the timeline. An automation could not say "when something arrives from another namespace" or "when the kitchen sensor is paused, tell me", and a person reading the timeline saw the asset reappear as processed in its new namespace with no line saying who moved it.
After: a move is asset.moved, a Move by whoever moved it ("Sam moved “Old minutes” to work"), with the namespaces it left and joined and the collection it is in now, seen in the namespace it is in now. A sensor a person pauses, ignores, resumes or sets back to new is sensor.changed, an Update ("Sam paused Kitchen sensor") with the status it had before, seen in the sensor's namespace, or by admins alone when it has none. Saving the status it already has, or a rename, logs nothing. Both kinds are listed for agents with their fields, and Move joins the Activity Streams verbs an activity may have. Automations trigger on them like any other kind (
object.statusequals paused).How:
events_content.movedandevents_content.sensor_changedwrite one activity each to the event log, called from the move route after the move is done and from the sensors route when a status change is saved (reading the sensor first, for the status it had). Thefile.changedUpdate for a file changed in its source is written down under Refine later: a re-read isasset.addedagain today, and linking it to the earlier activity is a separate step.Motivation and Context
Step 8 of the activity stream design (thread above): "Sensor on/off changes and the Update and Move verbs". Follows #570, #622, #627, #631 and #635.
Types of changes
!in the title)Checklist:
make hookschecks it on commit).docs/accordingly.changelog.d/(timeline-verbs.md).Done questions (AGENTS.md)
GET /api/v1/activitiesand/activities/kinds, the MCP and assistanttimeline, and as automation triggers.file.changedis under Refine later, not claimed.test_timeline_verbs.py(a move seen where it is now and not where it left, the kinds listing; a switch with its before, admins only without a namespace, nothing on the same status or a rename, the namespace's readers once it has one); the kinds' samples validate intest_events_content.py; docs automations.md, sensors.md, timeline.md, requirements.md, changelog.d.file.changedlinking a re-read file to its earlier activity.events.emit,events_content.actors,render.kindand the kinds registry as they are; no new machinery.Local CI (
ci/local-ci.sh) on this head: running; CI on the PR decides the merge.Generated by Claude Code