> ## 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 metrics, resources, and resilience helpers

> Resource, risk, resilience, finding, incident, and aggregate planning metrics built from inverse relation data.

## When to use these helpers

These helpers summarize configured inverse relations. An empty or unconfigured relation can yield zero, null, or an empty summary; do not treat that as proof that no work exists.

## Calling style

Call a helper as `planningOpenRiskCount($inverseRelations)`. 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

### `planningActiveIncidentCount`

Counts active incident records.

**Signature:** `planningActiveIncidentCount(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningBiaCompletionPercent`

Returns business-impact-analysis completeness percentage.

**Signature:** `planningBiaCompletionPercent(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningBlockedDependencyCount`

Counts dependencies whose status is blocked or at risk.

**Signature:** `planningBlockedDependencyCount(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningControlCoveragePercent`

Returns control-coverage percentage.

**Signature:** `planningControlCoveragePercent(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningExercisePassRatePercent`

Returns exercise pass-rate percentage.

**Signature:** `planningExercisePassRatePercent(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningOpenFindingCount`

Counts planning findings whose status is not closed.

**Signature:** `planningOpenFindingCount(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningOpenRiskCount`

Counts planning risks whose status is not closed.

**Signature:** `planningOpenRiskCount(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningProcedureReadinessPercent`

Returns procedure-readiness percentage.

**Signature:** `planningProcedureReadinessPercent(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningResourceCapacityUtilizationPercent`

Returns effort divided by capacity as a percentage, or null when capacity is unavailable.

**Signature:** `planningResourceCapacityUtilizationPercent(inverseRelations, allocationSemantics?)`

**Example:**

```txt theme={null}
planningResourceCapacityUtilizationPercent($inverseRelations, "actual")
```

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningResourceCostSummary`

Returns a grouped text summary of resource cost amounts by currency.

**Signature:** `planningResourceCostSummary(inverseRelations, allocationSemantics?)`

**Example:**

```txt theme={null}
planningResourceCostSummary($inverseRelations, "planned")
```

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningResourceEffortHoursSummary`

Totals effort hours for matching planning resource allocations.

**Signature:** `planningResourceEffortHoursSummary(inverseRelations, allocationSemantics?)`

**Example:**

```txt theme={null}
planningResourceEffortHoursSummary($inverseRelations, "planned")
```

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningResourceNumericSummary`

Totals a chosen numeric resource field for matching allocations.

**Signature:** `planningResourceNumericSummary(inverseRelations, fieldKey, allocationSemantics?)`

**Example:**

```txt theme={null}
planningResourceNumericSummary($inverseRelations, "cost_amount", "actual")
```

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningResourceQuantitySummary`

Returns a grouped text summary of resource quantities by unit or type.

**Signature:** `planningResourceQuantitySummary(inverseRelations, allocationSemantics?)`

**Example:**

```txt theme={null}
planningResourceQuantitySummary($inverseRelations, "planned")
```

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningResourceVarianceAmount`

Returns actual minus planned numeric resource amount.

**Signature:** `planningResourceVarianceAmount(inverseRelations, fieldKey, plannedSemantics = "planned", actualSemantics = "actual")`

**Example:**

```txt theme={null}
planningResourceVarianceAmount($inverseRelations, "cost_amount")
```

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningRiskInherentExposureTotal`

Totals inherent risk exposure scores.

**Signature:** `planningRiskInherentExposureTotal(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningRiskMitigationCoveragePercent`

Returns the percentage of risks with a mitigation signal, or null when no risk records exist.

**Signature:** `planningRiskMitigationCoveragePercent(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningRiskResidualExposureTotal`

Totals residual risk exposure scores.

**Signature:** `planningRiskResidualExposureTotal(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

### `planningScenarioCoveragePercent`

Returns scenario-readiness coverage percentage.

**Signature:** `planningScenarioCoveragePercent(inverseRelations)`

**Example:**

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

**Availability:** Configured planning inverse relations only. Empty/unconfigured relations can return zero, null, or an empty summary.

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

## 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 metrics, resources, and resilience helpers in KayanOS](https://kayanos.app/docs-images/en/reference/expressions-helpers-planning-metrics.png)
