---
title: "Study-update gate"
slug: "ci-drift-gate"
type: recipe
locale: en-US
canonical: "https://www.coremodels.io/recipe/cbioportal/ci-drift-gate"
updatedAt: "2026-08-27T01:42:16+03:00"
---

# Study-update gate

Republishing a study shouldn't silently change what its attributes mean.

cBioPortal's incremental loading moves the data, but nothing diffs a study update against the published version's semantics: v2 can rename an attribute, retype STRING to NUMBER, or drop a column, and the importer will take it. This gate is that missing semantic diff. Keep the study repository's staging files audited against governed meaning on every change: a renamed or dropped attribute surfaces as field-removed plus a coverage finding, a retype as field-type-drift, a lowercase attribute id as attribute-id-not-upper (a Warning, set the gate to errorsAndWarnings to catch it before cBioPortal's validator does). Honest scope: headers only, sample-set deltas and data-row changes are the validator's and the portal's territory, not this gate's.

## Articles

- [One character, one broken study: automating cBioPortal drift checks in CI](https://www.coremodels.io/connector/cbioportal/t4-automation)
- [Where the Software Stops: Governing a cBioPortal Study](https://www.coremodels.io/connector/cbioportal/h3-governance)
