Skip to content

project.changed

Somebody’s push moved the room’s project forward: who, which commits, and the files they changed.

Direction: Chips → the log
Sent by: Chips only; refused from a client
Requires a run: no
Schema: project.changed.json

Every event also carries the envelope.

Field Required Type Description
v yes 1 Protocol major version.
type yes "project.changed"
id yes string The event’s own id. Stable across a retry of the same event.
ts yes string When it happened, by Chips’ clock. Stamped on the way in; a value the sender writes is replaced.
workspace_id yes string A workspace identifier: ws_ followed by a ULID.
space_id no string The space, when the event belongs to one.
run_id no string The run, when the event belongs to one.
seq no number Assigned by the server on append, monotonic per workspace. Absent on the way in.
idempotency_key no string Required on every client-originated write. Sending the same key twice is a no-op.
actor yes object The participant an event is attributed to.
actor.kind yes "person" | "harness" | "agent" | "system" Whether a person, a harness, one of a harness’s agents or Chips itself acted.
actor.id yes string The participant id, or system for Chips.
actor.harness_id no string For an agent: the harness it speaks through, whose budget and runs are the agent’s (ADR 0087). Filled in by Chips.
by yes string Who pushed: the agent a harness named, or the person. Recorded by Chips.
before yes string | null Where main was, or null for the project’s first push.
after yes string Where main is now.
commits yes number How many commits the push added to main.
message yes string The first line of the newest commit’s message.
files yes object[] What changed between before and after, in path order.
files[].path yes string Its path in the project, with / between folders.
files[].added yes number | null Lines added; null for a binary file.
files[].removed yes number | null Lines removed; null for a binary file.
more_files no number How many more files changed than are named.
file_count no number How many files main has now, for the room sheet’s Project tile (ADR 0222).
undoes no string The change this one takes back, when it is a person’s Undo, or Put it back’s Undo of an Undo (ADR 0222).
{
"v": 1,
"type": "project.changed",
"id": "evt_01K4ZQPX0000000000000000PC",
"ts": "2026-10-23T09:52:04.118Z",
"workspace_id": "ws_01K4ZQPX000000000000000001",
"space_id": "spc_01K4ZQPX000000000000000002",
"actor": {
"kind": "agent",
"id": "agt_01K4ZQPX0000000000000000W1"
},
"by": "agt_01K4ZQPX0000000000000000W1",
"before": "9f2c1d8e7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e",
"after": "4b8e2a1f9c7d6e5b4a3f2e1d0c9b8a7f6e5d4c3b",
"commits": 1,
"message": "Keep the list when the page reloads",
"files": [
{ "path": "src/store.js", "added": 10, "removed": 3 },
{ "path": "tests/store.test.js", "added": 16, "removed": 0 }
]
}