Skip to content

Release 3.0.50 - #89

Merged
gonzaloebiz merged 1 commit into
developfrom
release/3.0.50
Sep 11, 2026
Merged

gonzaloebiz merged 1 commit into
developfrom
release/3.0.50

Conversation

@gonzaloebiz

Copy link
Copy Markdown
Contributor

Version bump and changelog, plus one line from the review of #88.

What it releases

#87 — the beacon notices a send that did not arrive. post() discarded curl_exec()'s return and never read the status, so three different failures were indistinguishable from delivery — from inside the library, which is the only place they can be seen at all. Carried on the next envelope as sfail, a running total per process: take the maximum, never a sum.

It has already earned itself. It read 5 of 10 on a box where nothing was known to be failing, which turned the web-lane fence from a suspicion into a measurement — and after the receiver-side fix that followed, the same probe reads 0 of 10.

Same PR carries sr and sw, the sampler's constants, on the lane the sampler governs. A consumer predicting which windows an installation should have reported in could previously only hardcode them, so changing either here would have made every modelled installation look like it had stopped reporting.

#88 — per-audience counts, passively. observeList() mirrors observeRoot() on the lists/{id} response the statistics job already reads every twelve hours. Measured: the same eight calls with the change as without, and nineteen more bytes downloaded.

getLists() gains include_total_contacts — the billable figure, and the one the payload cannot yield by arithmetic, since member_count + unsubscribe_count omits non-subscribed contacts and those are most of an ecommerce audience. Absent is left null rather than derived.

The one line that is not just version and changelog

The single-audience guard now cuts the query string before splitting the path, the way harvest() does immediately below it. Raised in review of #88 as a false negative that no current caller can reach — getLists() builds 'lists/'.$id with nothing after — so this changes nothing observable. It is here because a guard that reads a path differently from the function beside it is a trap for whoever changes either one, and the release PR was already touching the file.

Verified across the path set:

lists/AAA                              OBSERVE
lists/AAA?include_total_contacts=true  OBSERVE
/lists/AAA                             OBSERVE
lists/AAA/?x=1                         OBSERVE   <- the case the nit was about
lists/AAA/members/hash                 refused
lists/AAA/members/hash?x=1             refused
lists                                  refused
lists/AAA/interest-categories          refused

tools/no-deprecated-calls.php: 64 files, 0 findings.

Note for the extension side

include_total_contacts does nothing until a caller asks for it. That is mc-magento2, PR 2365 — one argument at GenerateStatistics.php:195, open against develop-2.4. Until it lands, this ships the three counts that are not the billable figure and omits the one that is.

Bumps the version and records what landed after 3.0.49.

The beacon now notices a send that did not arrive (#87), carried on the
next envelope as sfail, and says which windows the sampler chose, as sr
and sw, so a consumer predicting an installation's cadence reads the
constants instead of hardcoding them.

And it takes an audience's counts off a response the caller already asked
for (#88): observeList() mirrors observeRoot(), passive, on the
lists/{id} response the statistics job reads every twelve hours.
getLists() gains include_total_contacts, which is the only figure the
payload cannot yield by arithmetic.

Carries one line from the review of #88 that was not worth its own
release: the single-audience guard now cuts the query string before
splitting the path, the way harvest() does immediately below it. No
caller builds a path that needs it, so this changes nothing observable --
but a guard that reads a path differently from the function beside it is
a trap for whoever changes either one.
@gonzaloebiz gonzaloebiz self-assigned this Sep 11, 2026
@gonzaloebiz
gonzaloebiz merged commit a2ac09d into develop Sep 11, 2026
1 check passed
@gonzaloebiz
gonzaloebiz deleted the release/3.0.50 branch September 11, 2026 16:10
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