# `Replicant.AssemblerServer`
[🔗](https://github.com/baselabs/replicant/blob/v0.1.0/lib/replicant/assembler_server.ex#L1)

The serial process shell over the pure `Replicant.Assembler` (spec §4). Receives
**decoded** pgoutput messages from `Replicant.Connection` (which decodes behind
the value-free boundary and never applies the sink), assembles transactions, and
applies the sink **synchronously** — blocking THIS process, off the Connection's
keepalive path. On a durable sink commit (or a watermark skip) it messages the
Connection so the ack advances asynchronously; on a fail-closed condition
(destructive schema change, sink WRITE fault, an unidentifiable-relation row) it
halts the whole pipeline permanently (spec §6/§9).

It is a single serial `GenServer` (not a Task per transaction) so transactions
apply strictly in commit order — the correctness baseline of synchronous
per-transaction delivery.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

# `via`

```elixir
@spec via(String.t()) :: {:via, module(), term()}
```

The Registry via-name a pipeline's AssemblerServer registers under.

---

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