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

# cover

## Call Signature

```ts theme={null}
function cover<T, R>(
   timeName,
   target,
   count,
opts?): CoverageEntry<T, R>;
```

Define a sustained minimum of assignments for a given time.

### Type Parameters

#### T

`T` *extends* `string`

#### R

`R` *extends* `string`

### Parameters

#### timeName

```ts theme={null}
T
```

Name of a declared semantic time

#### target

```ts theme={null}
R | \[R, ...R[]\]
```

Role name (string), array of role names (OR logic), or skill name

#### count

```ts theme={null}
number
```

Number of assignments needed

#### opts?

[`CoverageOptions`](./CoverageOptions)

Options: `skillIds` (AND filter), `dayOfWeek`, `dates`, `priority`

### Returns

`CoverageEntry`\<`T`, `R`>

### Remarks

Coverage always defines a lower bound that applies throughout the referenced
semantic time.

Time and target scope restrict where the lower bound applies. Priority sets how
strictly the solver should preserve that floor when trade-offs are necessary.

Entries produce independent constraints. The solver enforces the **max** count, not
the sum, where coverage definitions overlap. An unscoped entry acts as a global
floor that scoped entries cannot reduce. Use coverage variants when different days
need different coverage for the same target.

Combine coverage with rules to express an upper bound or capacity cap, for example
with [maxConcurrentAssignments](maxConcurrentAssignments).

## Call Signature

```ts theme={null}
function cover<T, R>(
   timeName,
   target, ...
variants): CoverageEntry<T, R>;
```

Define a sustained minimum of assignments for a given time.

### Type Parameters

#### T

`T` *extends* `string`

#### R

`R` *extends* `string`

### Parameters

#### timeName

```ts theme={null}
T
```

Name of a declared semantic time

#### target

```ts theme={null}
R | \[R, ...R[]\]
```

Role name (string), array of role names (OR logic), or skill name

#### variants

...\[[`CoverageVariant`](./CoverageVariant), `...CoverageVariant[]`]

### Returns

`CoverageEntry`\<`T`, `R`>

### Remarks

Coverage always defines a lower bound that applies throughout the referenced
semantic time.

Time and target scope restrict where the lower bound applies. Priority sets how
strictly the solver should preserve that floor when trade-offs are necessary.

Entries produce independent constraints. The solver enforces the **max** count, not
the sum, where coverage definitions overlap. An unscoped entry acts as a global
floor that scoped entries cannot reduce. Use coverage variants when different days
need different coverage for the same target.

Combine coverage with rules to express an upper bound or capacity cap, for example
with [maxConcurrentAssignments](maxConcurrentAssignments).
