Summary
Archiver shipped SDK v4.0.0 (CannObserv/archiver#48) which is a breaking change. Watcher must be updated before it can write new InfoSources or correctly parse `source_revision_captured` bus events.
Breaking changes in v4.0.0
Removed:
- `create_info_source(source_spec, parent_info_source_id=None)` → replaced by `create_info_source(url, source_specs)`
- `add_info_source(item_id, source_id, role=None)` → role parameter removed; `add_info_source(item_id, source_id)`
- `InfoItemSourceOut.role` field removed
- Fragment InfoSources no longer exist — `parent_info_source_id` gone
Changed:
- `InfoSourceOut.source_spec` (single) → `source_specs` (list); no `target` section — URL is on the InfoSource row directly
- `create_info_item(..., initial_source_spec=None)` → `initial_url=None, initial_source_specs=None`
- Bus event `source_revision_captured` bumped to schema_version 2: `bindings[*].role` removed. Consumer-side Pydantic model must have `ConfigDict(extra="ignore")` and branch on `schema_version` before destructuring.
Required changes
- Update `archiver-client` pin to `>=4.0.0` in `pyproject.toml` / `uv.lock`
- Update all `create_info_source` call sites to pass `url` and `source_specs` separately
- Remove `role` argument from all `add_info_source` call sites
- Update any code reading `info_source.source_spec` (singular) to `info_source.source_specs[0]` or iterate
- Update the `source_revision_captured` consumer-side Pydantic model: add `ConfigDict(extra="ignore")`, remove `role` from `InfoItemBinding`, guard on `schema_version == 2`
- Update `create_info_item` call sites from `initial_source_spec=` to `initial_url=` + `initial_source_specs=`
Reference
Summary
Archiver shipped SDK v4.0.0 (CannObserv/archiver#48) which is a breaking change. Watcher must be updated before it can write new InfoSources or correctly parse `source_revision_captured` bus events.
Breaking changes in v4.0.0
Removed:
Changed:
Required changes
Reference