# `Jido.Runic.SignalFact`
[🔗](https://github.com/agentjido/jido_runic/blob/v1.0.0/lib/jido/runic/signal_fact.ex#L1)

Bidirectional adapter between Jido Signals and Runic Facts.

Maps Jido's causality tracking (signal.source, signal.jidocause) to
Runic's fact ancestry chain, ensuring provenance is continuous across
both systems.

# `from_signal`

```elixir
@spec from_signal(
  Jido.Signal.t(),
  keyword()
) :: Runic.Workflow.Fact.t()
```

Convert a Jido Signal (or plain map) into a Runic Fact.

Options:
* `:ancestry_mode` — `:hash` (default) to hash source/jidocause or `:raw` to preserve them.

# `to_signal`

```elixir
@spec to_signal(
  Runic.Workflow.Fact.t(),
  keyword()
) :: Jido.Signal.t()
```

Convert a Runic Fact back into a Jido Signal.

Options:
* `:type` — signal type (default: `"runic.production"`).
* `:source` — signal source path (default: `"/runic/workflow"`).
* `:include_ancestry?` — when true and ancestry present, rehydrate `source`/`jidocause` from it.

---

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