The canonical CI outcome model can retain CDEvents source metadata, but the API has no CDEvents pipeline-result translator.
Add an authenticated source adapter with pinned CDEvents and CloudEvents contracts. Map recorded outcomes to the canonical CI vocabulary without inventing repository, commit, run, or attempt identity.
Acceptance criteria:
Relevant files:
packages/core/sediment_core/models.py
packages/capture/sediment_capture
apps/api/sediment_api/routers/ci_vendor.py
docs/adr/0010-canonical-ci-outcome-facts.md
The canonical CI outcome model can retain CDEvents source metadata, but the API has no CDEvents pipeline-result translator.
Add an authenticated source adapter with pinned CDEvents and CloudEvents contracts. Map recorded outcomes to the canonical CI vocabulary without inventing repository, commit, run, or attempt identity.
Acceptance criteria:
passedandfailedbecome binary verdicts; other canonical outcomes remain visible without becoming success or failure.Relevant files:
packages/core/sediment_core/models.pypackages/capture/sediment_captureapps/api/sediment_api/routers/ci_vendor.pydocs/adr/0010-canonical-ci-outcome-facts.md