Skip to content

Closes the BasicHTTP front example's gaps - #177

Merged
johnnyt merged 1 commit into
mainfrom
se-0tuc-close-front-example-gaps
Oct 2, 2026
Merged

johnnyt merged 1 commit into
mainfrom
se-0tuc-close-front-example-gaps

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 2, 2026

Copy link
Copy Markdown
Member

Closes three gaps in the BasicHTTP front example (the library hold desk).

What changes

  • The refused-desk test proves the hold ended unreached. It now
    asserts that error.communication, carrying the send id, was re-entered
    into that execution (the [:statifier_persistence, :execution, :step, :reentered] telemetry event), beside the existing completed status and
    the 404 at the location. The chart has two finals and only
    error.communication leads to desk_unreached; a finished execution
    keeps no configuration to read the final's id from, which is why the
    test reads the event rather than the state.
  • The no-target case is named for what it is. Statifier 2.10.0 (the
    version mix.lock resolves) plans a BasicHTTP send with no target as a
    {:raise, :platform, "error.communication", ...} instruction carrying
    the send id, and makes no request
    (Statifier.Send.BasicHTTP.deliver/3). HoldDesk's executor used to
    reach that instruction through a catch-all named
    :basichttp_send_not_planned. It now matches the raise and fails the
    send as {:basichttp_send_without_target, send_id}. The halt is kept,
    and named truthfully, because it IS the planned outcome here: a durable
    execution has no internal queue to raise on, and statifier_persistence
    0.24.0 re-enters a failed send as error.communication with the same
    content origin and the same sendid the raise carries
    (StatifierPersistence.Executions, the error re-entry). Any other
    instruction still halts, now as :basichttp_instruction_unknown. A new
    test drives execute/2 with a no-target send and asserts the failure
    and that no POST was made.
  • The guide and the controller moduledoc list the 500 answer.
    StatifierRouter.BasicHTTP.Front.response/1 answers 500 for any answer
    it does not otherwise map, a delivery that did not settle, which a
    sender may retry. The guide's status table and
    StatifierExamplesWeb.BasicHTTPController's moduledoc now say so; the
    guide and HoldDesk's moduledoc also say how a no-target send reaches
    the execution.

Checks

  • Full mix quality green on the committed tree.
  • Sabotage, one row per check, each restored byte-equal from a copy:
    the raise clause made to continue turned the no-target test red on
    its assertion; a refused POST swallowed in perform/3 turned the
    refused-desk test red on the re-entry assertion.

No changelog fragment: this app keeps no changelog.

The refused-desk test now asserts that error.communication, with its
send id, was re-entered into the execution, the only event that leads
to desk_unreached. The executor names the send with no target for
what statifier plans it as, an error.communication raise and no
request, and fails it as basichttp_send_without_target, which the
durable execution takes as the same error.communication. The guide
and the controller moduledoc list the front's 500 answer.

Refs: se-0tuc
@johnnyt
johnnyt merged commit ebf4aae into main Oct 2, 2026
3 checks passed
@johnnyt
johnnyt deleted the se-0tuc-close-front-example-gaps branch October 2, 2026 09:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant