am-kantox / am-kantox/finitomata

Roadmap: v1.0.0 — deprecation removals and contract finalizations

Aberta
#123 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Elixir
Estrelas
130
Forks
11
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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).

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.