# `CliSubprocessCore.LineageFact`
[🔗](https://github.com/nshkrdotcom/cli_subprocess_core/blob/v0.8.0/lib/cli_subprocess_core/lineage_fact.ex#L1)

Stable raw fact shapes for provider pressure, reconnect, and subprocess lineage.

# `kind`

```elixir
@type kind() :: :pressure | :reconnect | :subprocess
```

# `t`

```elixir
@type t() :: %{
  :fact_id =&gt; String.t(),
  :kind =&gt; kind(),
  optional(:provider) =&gt; atom() | nil,
  optional(:provider_session_id) =&gt; String.t() | nil,
  optional(:lane_session_id) =&gt; String.t() | nil,
  optional(:subprocess_id) =&gt; String.t() | nil,
  optional(:reason) =&gt; atom() | String.t() | nil,
  optional(:observed_at) =&gt; String.t() | nil,
  optional(:metadata) =&gt; map()
}
```

# `fact_id`

```elixir
@spec fact_id(kind(), String.t(), non_neg_integer()) :: String.t()
```

# `kinds`

```elixir
@spec kinds() :: [kind(), ...]
```

# `pressure`

```elixir
@spec pressure(map()) :: t()
```

# `reconnect`

```elixir
@spec reconnect(map()) :: t()
```

# `subprocess`

```elixir
@spec subprocess(map()) :: t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
