ProtectedconstructorStaticInstanceProtectedActivateActivates row and retires every other Active version, inside the pipeline lock (sequential saves share its
transaction). Retiring or re-activating clears the backfill mark; an already-Active version keeps its activation.
ProtectedApplyCopies a golden-set evaluation and its activation settings onto the version row (unsaved).
Checks, read-only, that a gated pipeline may compute under its pin (a Decision pipeline's escalation target, which registers no versions). An ungated pipeline always passes.
The records the backfill re-derives: those whose latest Pipeline Feature Value (by ComputedAt) was written
under another version, or under none. One read of three columns, proportional to the pipeline's value rows.
ProtectedCreateRegisters a pin as the next Candidate version (under the pipeline lock) and adds it to versions.
ProtectedDescribeWhy a run of the pipeline may not write under this version; null when it may. The one decision of the run gate.
ProtectedGatedWhy a gated pipeline may not run this version (refused, or no passing stored result); null when it may.
The Global Object Store is a place to store global objects that need to be shared across the application. Depending on the execution environment, this could be the window object in a browser, or the global object in a node environment, or something else in other contexts. The key here is that in some cases static variables are not truly shared because it is possible that a given class might have copies of its code in multiple paths in a deployed application. This approach ensures that no matter how many code copies might exist, there is only one instance of the object in question by using the Global Object Store.
ProtectedHasWhether the version row holds a golden-set result.
ProtectedHasWhether the pipeline has Pipeline Feature Values written before any version was registered (PipelineVersion NULL).
ProtectedLatestEach record's latest value (by ComputedAt), keyed by RecordIDs.Key; a tie keeps the first row read.
ProtectedLoadThe pipeline's version rows and its current pin's row, registering the pin as a Candidate when it has none.
ProtectedLoadThe pipeline's version rows, read fresh (the run gate must see the latest status).
ProtectedLockTakes an update and range lock on the pipeline's version rows until the transaction ends (it covers a first registration too). Raw SQL: no provider API takes a row lock. SQL Server only; elsewhere the work runs unlocked.
Marks the version's steward backfill as done, under the pipeline lock; throws when there is no such version.
ProtectedNeedsWhether a gated version needs its golden-set test run: no stored result, or one under other Activation settings.
ProtectedNewA new, unsaved Candidate row for the pin under version.
ProtectedNextThe number after the pipeline's highest version.
ProtectedPlanA gated version's evaluation plan, or held when the pipeline opts out. Only a test run started after the version
was registered (or its stored result saved) counts.
What the steward does for this pipeline now. Registers a new pin as a Candidate; never activates. In order:
evaluate a gated version without a result under the current Activation settings; refused for a Refused
version; backfill a changed version (or the first one over unversioned values) not yet backfilled; else none.
An opted-out step (Unattended.AutoEvaluate / AutoBackfill false) is held.
ProtectedPreviewWhat a dry run reports: the pin's version and status as they are, and why the real run would be refused (DescribeRefusal).
Stores a golden-set evaluation on its version, under the pipeline lock: Active when it meets the threshold, else Refused.
Registers a pin as its pipeline's next Candidate version (or returns its existing one), under the pipeline lock.
The version a run writes under; a new pin becomes a Candidate. A gated pipeline (Activation) runs a version only
once it has a stored golden-set result at or above its threshold. An ungated pipeline's version becomes Active on
an on-demand or manual run, or when nothing is Active; a scheduled or on-change run of a changed pipeline is
refused. A real run decides under the pipeline lock and throws a refusal after the lock's transaction committed (the
Candidate stays); a dry run only reads and reports the refusal in WouldRefuse.
ProtectedResolveUnder the lock: a gated version with a passing stored result runs (activated first), else its refusal is returned.
ProtectedResolveUnder the lock: an ungated version becomes Active on an on-demand run or when nothing is Active, else its refusal is returned.
ProtectedSaveSaves a version row; throws with the save's CompleteMessage when it fails.
ProtectedUngatedWhy an ungated pipeline may not activate this version (another is Active and the run is scheduled or on-change); null when it may.
ProtectedWithRuns work in one entity transaction, on its own provider instance (unit, which every read and save of the
work must use), whose first statement locks the pipeline's version rows (LockVersions): writers of one
pipeline serialise there. A thrown error rolls the unit back.
Protected StaticgetReturns the singleton instance of the class. If the instance does not exist, it is created and stored in the Global Object Store. If className is provided it will be used as part of the key in the Global Object Store, otherwise the actual class name will be used. NOTE: the class name used by default is the lowest level of the object hierarchy, so if you have a class that extends another class, the lowest level class name will be used.
OptionalclassName: string
The Feature Pipeline version registry. Reads run on the caller's provider; every write runs under the pipeline's lock (WithPipelineLock).