> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kayanos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Planning governance, review, and baseline helpers

> Planning validation, review, approval, baseline, rebaseline, and status-stage helpers.

## When to use these helpers

Use these helpers in the planning configuration that owns their source relations. A returned validation message is meaningful only in a validation consumer; a calculated field will simply store that value.

## Calling style

Call a helper as `planningPlanReviewState($inverseRelations, $.review_cadence, $.start_date)`. Not every helper is available everywhere: validation, form, and document-template helpers have distinct context contracts. Editor suggestions are not proof that a helper is supported at runtime.

## Complete function reference

### `planningDependencyExecutionLinkValidation`

Prevents a dependency from targeting the same execution item as its source.

**Signature:** `planningDependencyExecutionLinkValidation(sourceExecutionItem, targetExecutionItem)`

**Example:**

```txt theme={null}
planningDependencyExecutionLinkValidation($.source_execution_item_id, $.target_execution_item_id)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningDependencyExecutionLinkValidation(...)`.

### `planningMeasurementPeriodValidation`

Returns true when the measurement period is chronological, otherwise a validation message.

**Signature:** `planningMeasurementPeriodValidation(periodStart, periodEnd)`

**Example:**

```txt theme={null}
planningMeasurementPeriodValidation($.measurement_period_start, $.measurement_period_end)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningMeasurementPeriodValidation(...)`.

### `planningPlanApprovalRequired`

Returns whether the configured plan currently requires approval.

**Signature:** `planningPlanApprovalRequired(planCategory, planType, baseFramework, targetEntityClass, overlayFrameworks, inverseRelations)`

**Example:**

```txt theme={null}
planningPlanApprovalRequired($.plan_category, $.plan_type, $.base_framework, $.target_entity_class, $.overlay_frameworks, $inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanApprovalRequired(...)`.

### `planningPlanApprovalStage`

Returns the latest planning approval stage, or null.

**Signature:** `planningPlanApprovalStage(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanApprovalStage($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanApprovalStage(...)`.

### `planningPlanApprovalState`

Returns not\_required, pending, approved, rejected, or conditional for the plan.

**Signature:** `planningPlanApprovalState(planCategory, planType, baseFramework, targetEntityClass, overlayFrameworks, inverseRelations)`

**Example:**

```txt theme={null}
planningPlanApprovalState($.plan_category, $.plan_type, $.base_framework, $.target_entity_class, $.overlay_frameworks, $inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanApprovalState(...)`.

### `planningPlanBaselineSummary`

Returns a readable summary of the current baseline, or null.

**Signature:** `planningPlanBaselineSummary(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanBaselineSummary($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanBaselineSummary(...)`.

### `planningPlanBaselineVersionId`

Returns the current baseline version identifier, or null.

**Signature:** `planningPlanBaselineVersionId(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanBaselineVersionId($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanBaselineVersionId(...)`.

### `planningPlanLastReviewAt`

Returns the latest completed review date as an ISO string, or null.

**Signature:** `planningPlanLastReviewAt(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanLastReviewAt($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanLastReviewAt(...)`.

### `planningPlanNextReviewAt`

Returns the next scheduled or cadence-derived review date as an ISO string, or null.

**Signature:** `planningPlanNextReviewAt(inverseRelations, reviewCadence?, startDate?)`

**Example:**

```txt theme={null}
planningPlanNextReviewAt($inverseRelations, $.review_cadence, $.start_date)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanNextReviewAt(...)`.

### `planningPlanRebaselineFlag`

Returns whether a baseline, decision, or review signals rebaselining.

**Signature:** `planningPlanRebaselineFlag(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanRebaselineFlag($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanRebaselineFlag(...)`.

### `planningPlanRebaselineReason`

Returns the current baseline, latest decision, or latest review rebaseline reason, or null.

**Signature:** `planningPlanRebaselineReason(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanRebaselineReason($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanRebaselineReason(...)`.

### `planningPlanReviewState`

Returns a planning review state such as in\_review, scheduled, reviewed, or follow\_up\_required.

**Signature:** `planningPlanReviewState(inverseRelations, reviewCadence?, startDate?)`

**Example:**

```txt theme={null}
planningPlanReviewState($inverseRelations, $.review_cadence, $.start_date)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanReviewState(...)`.

### `planningPlanVersionLabel`

Returns the latest plan-version label, or null.

**Signature:** `planningPlanVersionLabel(inverseRelations)`

**Example:**

```txt theme={null}
planningPlanVersionLabel($inverseRelations)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningPlanVersionLabel(...)`.

### `planningResourcePeriodValidation`

Returns true when the resource period end is on or after its start, otherwise a validation message.

**Signature:** `planningResourcePeriodValidation(periodStart, periodEnd)`

**Example:**

```txt theme={null}
planningResourcePeriodValidation($.period_start, $.period_end)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningResourcePeriodValidation(...)`.

### `planningRiskMitigationValidation`

Requires a non-empty normalized mitigation link when a mitigation list is supplied.

**Signature:** `planningRiskMitigationValidation(mitigationExecutionItemIds)`

**Example:**

```txt theme={null}
planningRiskMitigationValidation($.mitigation_execution_item_ids)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | planningRiskMitigationValidation(...)`.

### `statusStage`

Returns the normalized stage for a status without a supplied template definition.

**Signature:** `statusStage(status)`

**Example:**

```txt theme={null}
statusStage($.status)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | statusStage(...)`.

### `statusStageFromTemplate`

Returns the normalized stage for a status using a supplied status-template definition.

**Signature:** `statusStageFromTemplate(templateContent, status)`

**Example:**

```txt theme={null}
statusStageFromTemplate($statusTemplates.request_status, $.status)
```

**Availability:** Planning/status configuration contexts. Use validation-returning helpers only where a validation result is consumed.

**Note:** It can also be written as a transform when the first value is the input: `value | statusStageFromTemplate(...)`.

## Before you publish

* Start with a known value and confirm the expected result.
* Handle null, empty text, and empty lists deliberately.
* Do not place secrets, access tokens, or sensitive personal data in an expression.
* Read [expression contexts and availability](/reference/expressions/contexts) before copying an expression between features.

![Planning governance, review, and baseline helpers in KayanOS](https://kayanos.app/docs-images/en/reference/expressions-helpers-planning-governance.png)
