AnnotationsΒΆ

Annotation sets are immutable, dense, and aligned to one dataset snapshot. Every source ordinal has a success, skipped, or failed row.

import signal_dataset as sds

dataset = sds.open("captures.sds")
rows = [
    sds.AnnotationRecord(
        source_record_id=item.id,
        source_index=index,
        status=sds.AnnotationStatus.SUCCESS,
        values={"label": "signal"},
        provenance={"annotator": "review-pipeline-v1"},
    )
    for index, item in enumerate(dataset.record_metadata)
]

sds.publish_annotations(
    dataset,
    "review-v1",
    rows,
    metadata={"purpose": "quality review"},
)

reopened = sds.open("captures.sds")
assert reopened.annotations["review-v1"][0].values["label"] == "signal"
assert reopened.annotations.revision is not None

Structured labels belong in values. Masks, embeddings, and other arrays belong in fields. Publishing annotations never rewrites signal shards. A set name is permanent; publish a new name for a revision.