Skip to content

Artifact lineage

Canonical JSONL carries the content. Manifests carry its identity, contracts, and ancestry.

Identity levels

Identity Meaning Stability rule
document_id One source document in a project revision Derived pseudonymously from project namespace and source ID
annotation_set_id One completed reviewer submission Declared in its manifest; bare files use transitional content identity
span_id One labeled half-open range Derived from document ID, [begin,end), and label
SHA-256 Exact bytes of an artifact Any byte change produces a new hash
Model revision Immutable published model snapshot Pin a Hub commit SHA or local bundle checksum

Sorting records does not change their document identity, but it does change the file hash. Moving or reordering source files does not change document identities when they are imported into the same project with the same source IDs.

Annotation-set manifest

A durable reviewer submission records:

{
  "manifest_version": "meddeid.annotation-set.v1",
  "annotation_set_id": "hospital-a-round-1",
  "status": "completed",
  "annotator_id": "reviewer-7",
  "contracts": {
    "schema_version": "meddeid.schema.v1",
    "offset_unit": "unicode_codepoints",
    "taxonomy_contract_version": 1,
    "taxonomy_version": "ProductionLabels-v1.1"
  },
  "files": {"annotations": "reviewer-a.jsonl"},
  "hashes": {"annotations_sha256": "<sha256>"}
}

Consumers verify the declared file, hash, completion state, and contracts before reading annotations.

Handoff chain

flowchart LR
    I["Import manifest"] --> A["Annotation-set manifest"]
    A --> C["Curation manifest"]
    A --> S["Subannotation bundle manifest"]
    C --> S
    A --> T["Training-data manifest"]
    C --> T
    T --> R["Training run manifest"]
    R --> M["Model bundle"]
    M --> P["Prediction manifest"]
    S --> E["Evaluation report"]
    P --> E

Each child should identify its direct inputs by checksum. This produces a chain that can be audited without copying private source records into public metadata.

Corrections

Correct a primary annotation at its source and republish the current canonical annotations.jsonl. meddeid-subannotate detects the changed hash, previews which subannotation work can be preserved, and requires renewed review where boundaries or meaning changed.

Do not:

  • edit a downstream checksum to make a changed file appear unchanged;
  • use filenames as durable annotation-set identity;
  • overwrite an existing non-empty training or prediction output silently;
  • publish local source-ID mappings or project HMAC keys;
  • cite a moving model name without recording its immutable revision.

Reproducible result package

At minimum, preserve the gold and prediction manifests, model revision or local checksum, package versions, language-profile manifest, evaluation configuration, metric output, and the command used to produce it. Store protected source data separately under its governing access controls.