Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions docs/guides/basichttp-front.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,14 @@ answers 404.

| Package | Version | What this guide uses it for |
|---|---|---|
| `statifier_router` | 0.9.2 | the `:basichttp` key, the location, `StatifierRouter.BasicHTTP.Front`, the location table, `deliver_event/4` for a failed send |
| `statifier_router` | 0.10.0 | the `:basichttp` key, the location, `StatifierRouter.BasicHTTP.Front`, the location table, `deliver_event/4` for a failed send |
| `statifier` | 2.10.0 | the Basic HTTP Event I/O Processor and its decoder |
| `statifier_persistence` | 0.24.0 | the chart registry, the execution, the input log |

0.9.2 is the floor because it is the first `statifier_router` release
whose migrations and address reaper both run on this app's SQLite
database.
0.10.0 is the floor because it is the published release `mix.exs`
requires. 0.9.2 was the first `statifier_router` release whose
migrations and address reaper both run on this app's SQLite database,
and nothing this guide uses needs more.

## The chart

Expand Down
18 changes: 13 additions & 5 deletions docs/guides/first-workflow-routed.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ The recipe is written and checked against these releases, which are what

| Package | Version | What the recipe uses it for |
|---|---|---|
| `statifier_router` | 0.9.2 | the binding, the delivery, the address and dedupe tables, the route, the reapers, the migration's `:leading_columns`, `:on_create` and `:on_step` |
| `statifier_router` | 0.10.0 | the binding, the delivery, the address and dedupe tables, the route, the reapers, the migration's `:leading_columns`, `:on_create` and `:on_step` |
| `statifier_persistence` | 0.24.0 | the chart registry, the execution, the input log, `ended_at` |
| `statifier_blocks` | 0.41.0 | the document and the compile |
| `statifier` | 2.10.0 | compiling the chart and running it |

`statifier_router` 0.9.2 requires `statifier ~> 2.10` and
`statifier_persistence ~> 0.18`, which is what moved those two with it.
`statifier_router` 0.10.0 requires `statifier ~> 2.10` and
`statifier_persistence ~> 0.18`, as 0.9.2 did, which is what moved those
two with it.
`mix.exs` asks for `statifier_persistence ~> 0.20` all the same: 0.20.0
adds `Executions.migrate_batch/3`, which
`docs/guides/migrating-waiting-executions.md` walks, and `mix.lock`
Expand Down Expand Up @@ -341,7 +342,14 @@ Each of these is in `statifier_router`'s README and not needed here:

## Moving the first-workflow host to these pins

The latest move, from statifier_router 0.6.0 to 0.9.2, is the one that
The latest move, from statifier_router 0.9.2 to 0.10.0, needed nothing in
this recipe: 0.10.0 adds no migration version; its one new option,
`:around_delivery`, wraps nothing unless a configuration sets it, and this
one sets none; its reap change is to the statement Postgres runs, so the
`reaped` step on SQLite counts the same rows. Nothing in this recipe
needs more than 0.9.2.

The move before it, from statifier_router 0.6.0 to 0.9.2, is the one that
touched a migration and the reapers. 0.8.0 added the router's third migration version,
V03, which renames the subscription table's unique index on Postgres. The
migration this recipe runs calls `StatifierRouter.Migrations.up/1` with no
Expand All @@ -350,7 +358,7 @@ failed on SQLite until 0.9.1 made it do nothing there; a database that
already ran V02 needs no new migration of its own, since V03 has nothing
to rename on SQLite. 0.8.0 also wrote the address reaper's stamp and
delete with Postgres's `= ANY(...)`, so the `reaped` step failed on SQLite
until 0.9.2 wrote them as an IN list. 0.9.2 is therefore the floor. The same move took statifier
until 0.9.2 wrote them as an IN list. 0.9.2 was therefore the floor. The same move took statifier
to 2.10.0 and statifier_persistence to 0.24.0, which changed nothing here.
0.9.0's BasicHTTP front is not part of this recipe; its configuration sets
no `:basichttp`, so its executions get no location.
Expand Down
6 changes: 5 additions & 1 deletion docs/guides/first-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The recipe is written and checked against these releases, which are what
| `statifier_blocks` | 0.41.0 | the document, `Plan.expressible/3`, the compile |
| `statifier_persistence` | 0.24.0 | the chart registry, the execution, the input log, `ended_at` |
| `statifier_oban` | 0.13.0 | the invoke job and its `:invoke_timeout`, the timer job |
| `statifier_router` | 0.9.2 | two of the publish-time checks |
| `statifier_router` | 0.10.0 | two of the publish-time checks |

`statifier_datamodel` 0.5.0 arrives through `statifier_blocks`. The first
line the command prints names the versions it actually loaded.
Expand Down Expand Up @@ -244,6 +244,10 @@ router releases add a migration version and the BasicHTTP front, which
adds a migration, and none of what they refuse is something this recipe
does.

The move to statifier_router 0.10.0 needed nothing here either: it adds
no migration version, and its one new option, `:around_delivery`, wraps
nothing unless a configuration sets it.

The statifier_blocks moves after 0.35.0, one minor at a time to 0.41.0,
needed nothing in this recipe either. statifier_blocks' `docs/upgrading.md`
says what each asks of a host; this recipe calls `Decode.decode/1`,
Expand Down
10 changes: 9 additions & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -600,7 +600,15 @@ defmodule StatifierExamples.MixProject do
# `priv/repo/migrations/20260930120001_add_statifier_router_locations.exs`
# creates. 0.7.0's `:unchecked` entry for a `:bindings_resolver`
# reaches nothing here, since no configuration sets one.
{:statifier_router, "~> 0.9.2"},
#
# 2026-10-02: the requirement moves to `~> 0.10.0`, the published
# release after 0.9.2, to keep the reference embedder on what is
# published; nothing above needs more than 0.9.2. 0.10.0 keeps the
# location token out of the router's own debug query log on the
# statements that bind it, adds the opt-in `:around_delivery` option,
# which no configuration here sets, and on Postgres reaps with one
# array statement, which this SQLite database never reaches.
{:statifier_router, "~> 0.10.0"},

# The observing/authoring component library, declared DIRECTLY rather
# than taken transitively. `statifier_ui` is an OPTIONAL dependency of
Expand Down
2 changes: 1 addition & 1 deletion mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
"statifier_datamodel": {:hex, :statifier_datamodel, "0.5.0", "72a04a1d672e9734b324b5aa164abd49f388cc921283edc22fbe8b22e371eca7", [:mix], [], "hexpm", "1d4e1f5ba659d80713f5c901343bac65ddedea2dfd984666fd60d5ddcd623f2a"},
"statifier_oban": {:hex, :statifier_oban, "0.13.0", "c95b0dd9b82e1c4355cb60085c088e662ecedcc307c6c1f11f4d4c4ace62f153", [:mix], [{:oban, "~> 2.19", [hex: :oban, repo: "hexpm", optional: false]}, {:statifier, "~> 2.5", [hex: :statifier, repo: "hexpm", optional: false]}, {:statifier_persistence, "~> 0.13", [hex: :statifier_persistence, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6e6ed294eaf9b07b3a05ca420e3d247a867ae316f2dfbba27d470239f64a6bcc"},
"statifier_persistence": {:hex, :statifier_persistence, "0.24.0", "43cbeb2e2f818e3bb80f636e208892f27049b990773db850fabd9bec44585dfd", [:mix], [{:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: true]}, {:statifier, "~> 2.9", [hex: :statifier, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:uxid, "~> 2.0", [hex: :uxid, repo: "hexpm", optional: false]}], "hexpm", "fa10f4a40d34d9d4db196b8afb1b20b4714e802f6aa4fe6bf95c61aea60cf7ce"},
"statifier_router": {:hex, :statifier_router, "0.9.2", "d3aaf1e0264fbe6a7a87fac46bee8f808d8da10085437e2fdbb8656adcac71fa", [:mix], [{:broadway, "~> 1.3", [hex: :broadway, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.14", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:predicator, "~> 9.4", [hex: :predicator, repo: "hexpm", optional: false]}, {:statifier, "~> 2.10", [hex: :statifier, repo: "hexpm", optional: false]}, {:statifier_persistence, "~> 0.18", [hex: :statifier_persistence, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:uxid, "~> 2.0", [hex: :uxid, repo: "hexpm", optional: false]}], "hexpm", "692ab40898c5cf01eae035cf824971d6278f26802ff8ce31ef3450abc83e317c"},
"statifier_router": {:hex, :statifier_router, "0.10.0", "a584aa95b4a0d3f8d693b62c4dbef45cd2b3f7bfb1aa36cef643d691591bad77", [:mix], [{:broadway, "~> 1.3", [hex: :broadway, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.14", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:predicator, "~> 9.4", [hex: :predicator, repo: "hexpm", optional: false]}, {:statifier, "~> 2.10", [hex: :statifier, repo: "hexpm", optional: false]}, {:statifier_persistence, "~> 0.18", [hex: :statifier_persistence, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:uxid, "~> 2.0", [hex: :uxid, repo: "hexpm", optional: false]}], "hexpm", "22cb23b6d33ea57eb7fd016783bf16bcf062031a736561d86e37946db72ffbee"},
"statifier_ui": {:hex, :statifier_ui, "0.10.1", "fcd918b5259e4c8ce5430c3cf2075f4d13aaa52135cb563713db526b8bec9493", [:mix], [{:kino, "~> 0.14", [hex: :kino, repo: "hexpm", optional: true]}, {:phoenix_live_view, "~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:predicator, "~> 9.4", [hex: :predicator, repo: "hexpm", optional: false]}, {:statifier, "~> 2.5", [hex: :statifier, repo: "hexpm", optional: false]}, {:statifier_datamodel, "~> 0.4", [hex: :statifier_datamodel, repo: "hexpm", optional: false]}], "hexpm", "cb4992baecefc40af76d587408b71cd94ceecd392374926ecaef07fe49211069"},
"tailwind": {:hex, :tailwind, "0.5.1", "35435b13158c90d37da11e1cfc808755fca1d7b6c5ab87b1b19c5de87e2f0a10", [:mix], [], "hexpm", "c4e26302a59fec72abc5610ecb6ad2116d9aa31f31aab2d4b8eb6e95d25a689c"},
"telemetry": {:hex, :telemetry, "1.4.2", "a0cb522801dffb1c49fe6e30561badffc7b6d0e180db1300df759faa22062855", [:rebar3], [], "hexpm", "928f6495066506077862c0d1646609eed891a4326bee3126ba54b60af61febb1"},
Expand Down
11 changes: 9 additions & 2 deletions test/statifier_examples/mix_deps_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -987,10 +987,17 @@ defmodule StatifierExamples.MixDepsTest do
# LOCK assertion back at `"0.6.` and left `mix.lock` alone; it went red
# reporting the resolved 0.9.2 entry.
# Reverted from a copy.
#
# 2026-10-02: the requirement moves to `~> 0.10.0`, the published release
# after 0.9.2; nothing here needs more than 0.9.2, and 0.10.0's one new
# option, `:around_delivery`, is opt-in and set by no configuration here.
# Sabotage: pointed the LOCK assertion back at `"0.9.` and left `mix.lock`
# alone; it went red reporting the resolved 0.10.0 entry. Reverted from a
# copy.
test "the statifier_router dep is the Hex requirement" do
deps = Mix.Project.config()[:deps]

assert {:statifier_router, "~> 0.9.2"} in deps
assert {:statifier_router, "~> 0.10.0"} in deps

lock_line =
"mix.lock"
Expand All @@ -999,7 +1006,7 @@ defmodule StatifierExamples.MixDepsTest do
|> Enum.find(&String.starts_with?(&1, ~s( "statifier_router": )))

assert lock_line, "statifier_router has no mix.lock entry"
assert lock_line =~ ~s({:hex, :statifier_router, "0.9.2)
assert lock_line =~ ~s({:hex, :statifier_router, "0.10.)
refute lock_line =~ ":git,"
end

Expand Down
2 changes: 1 addition & 1 deletion test/statifier_examples/routed_workflow_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ defmodule StatifierExamples.RoutedWorkflowTest do
assert {:ok, lines} = RoutedWorkflow.run(parcel_id: "parcel-test")

assert [
"first workflow routed on statifier_router 0.9." <> _pins,
"first workflow routed on statifier_router 0.10." <> _pins,
"migrated 4 router tables, depot_id at position 2 on each",
"published bdoc_parcel_route accepts parcel.scanned; " <>
"every publish-time check passed, 0 warning(s)",
Expand Down
Loading