am-kantox / am-kantox/finitomata

Roadmap: v1.0.0 — deprecation removals and contract finalizations

Abierto
#123 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Elixir
Estrellas
130
Forks
11
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Tracks the breaking deprecation removals and public-contract decisions that define the **v1.0.0** release.

The internals (runtime `Finitomata.Engine` extraction, ETS-backed state cache, `Finitomata.Error` normalization, built-in `Finitomata.Persistency.ETS`/`DETS` adapters, `use Finitomata` macro slimming) and the `Finitomata.ExUnit` test framework are already in place as of **v0.40.0**. What remains for 1.0 is principally an API freeze plus the deliberate removal of long-deprecated paths.

### Deprecation removals (breaking)
- [ ] Remove the `start_fsm/4` legacy argument order `(id, impl, name, payload)` and the two-atom ambiguity heuristic; require a non-atom FSM name (`lib/finitomata.ex`, `start_fsm/4`).
- [ ] Remove the legacy `use` forms `use Finitomata, {fsm, syntax}` and `use Finitomata, fsm`.
- [ ] Remove built-in modules as `syntax:` (`Finitomata.Mermaid` / `Finitomata.PlantUML`); keep only `:flowchart` / `:state_diagram` (or a custom `Finitomata.Parser`).
- [ ] Remove the deprecated generated getters `fsm/0`, `entry/0`, `states/0`, `events/0` on `use Finitomata` modules in favor of `__config__/1`.
- [ ] Remove `Finitomata.ExUnit.init_finitomata/6` (use `setup_finitomata/1`) and the low-level `assert_transition/5` (use `assert_transition/3`).

### Contract / shape finalizations (freeze for semver)
- [ ] Decide and freeze the auto-driven event-payload reshaping (`%{payload: p, __retries__: n}`) for entry / banged (`!`) / `ensure_entry` transitions — keep as-is or normalize.
- [ ] Unify the `Finitomata.Persistency.load/1` contract: the documented `load(id)` vs the engine's actual `{type, fields}` descriptor returning `{lifecycle, {state, payload}}`.
- [ ] Declare the frozen public API surface (`Finitomata`, `Infinitomata`, `Finitomata.Flow`/`Pool`/`Cache`/`Throttler`/`Accessible`/`Persistency`/`ExUnit`) and commit to semver guarantees.

### Code loose ends
- [ ] `lib/finitomata/engine.ex` (`fork/3`): match and log the fork outcome instead of discarding it (`# [TODO]`).
- [ ] `lib/mix/tasks/compile/finitomata.ex`: extend ambiguous-transition coverage to more pattern-match shapes (`# [TODO]`).
- [ ] `lib/finitomata.ex` (`pid/1`): consider the registered-name reverse lookup (`# [AM]`).
- [ ] `lib/finitomata/config_builder.ex` (`hard/2`): the carried-over `unless do raise end` consistency check never fires (a list is always truthy) — fix it to actually enforce "banged transitions must be determined," or remove it.

### Distributed + quality bar
- [ ] `lib/finitomata/distributed/supervisor.ex`: make the pid reconciliation that string-matches `:erlang.pid_to_list` tails robust (or document it) and add regression tests. (`:erpc` stays intentionally unused — `:rpc.block_call` keeps remotely started supervision trees alive.)
- [ ] Add cross-suite coverage aggregation (the `test_coverage` summary threshold is `0` today because the standard / distributed / `:finitomata` / examples suites are split).
- [ ] Track down and stabilize the pre-existing intermittent timing test.
- [ ] Optional (non-blocking): true compile-time callback resolution to remove the residual `function_exported?/3` checks in `Finitomata.Engine`.

### Out of scope for 1.0
- No FSM declaration-syntax / `Finitomata.Parser` behaviour changes.
- No UI / JSON / localization / Phoenix work.

---
Drafted with Oz (oz-agent@warp.dev).

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.