# Project policy

Source: https://libtmux.org/en/erlang/latest/topics/project-policy/

> Project policy: libtmux_erlang documentation.

This port provides an Erlang core and a workspace consumer. An MCP package,
server or SDK integration is excluded from implementation and release scope.

The [architecture decision record](https://libtmux.org/en/erlang/latest/concepts/architecture/) explains the
selected design, alternatives, consequences and conditions for reconsideration.

## OTP application boundaries

Develop the applications together in the Rebar3 umbrella. Each application is
an independent package boundary with its own metadata, license and changelog.

| Application | Responsibility | Library dependencies |
| --- | --- | --- |
| `libtmux_erlang` | tmux transport, operations, domain objects, snapshots and queries | OTP applications |
| `libtmux_erlang_workspace` | JSON workspace loading, plans, apply and CLI | Public core API and OTP applications |

The workspace application declares its core dependency in its application
metadata. It uses public APIs through installed packages; source paths and
private core modules are not integration boundaries. The core is independent
of the workspace application. Additional core packages need their own reusable
responsibility and explicit consumer dependencies.

Package qualification must install each consumer outside the umbrella against
the produced core package. A successful umbrella build alone does not prove
that an independently installed workspace package works. Qualification builds
the workspace CLI from those source packages and runs it outside the checkout;
see [current support](https://libtmux.org/en/erlang/latest/guides/compatibility/).

## Runtime dependencies

Use the latest stable Erlang/OTP baseline and native OTP facilities. Use OTP
JSON for documents and the standard argument parser for the workspace CLI.
Prefer module functions, native records, specs, tagged results and supervised
processes where ownership requires them.

Keep Erlang runtime dependencies within OTP. An exception requires a concrete
capability need, maintenance assessment and recorded architecture decision.
Test, build and documentation tools are separate from runtime dependencies.

Support covers tmux 3.3a–3.8, including intermediate releases, on Linux x86_64
and arm64. CI uses only the latest stable Erlang/OTP release and samples the
oldest supported and newest stable tmux releases. Verify upstream releases
before updating the exact pins. Historical results retain their recorded scope.

The Linux transport uses the bundled C11 executable for bounded I/O and owned
process retirement. It is built from packaged source with recorded provenance.
Workspace code uses that transport through the public core API.

The layout follows [Rebar3 application organization](https://rebar3.org/docs/basic_usage/)
and [OTP application boundaries and dependencies](https://www.erlang.org/doc/system/applications.html).
