fix: the last four places we still promise things we do not do - #82
Open
cport1 wants to merge 3 commits into
Open
fix: the last four places we still promise things we do not do#82cport1 wants to merge 3 commits into
cport1 wants to merge 3 commits into
Conversation
#476 withdrew blocking from the cross-site actor feed after measuring it against production: 2 of 4,866 addresses were ever seen at more than one site, 93% of attacker addresses were gone inside an hour, and 82% of feed entries were already a week stale with none still active. Blocking an abandoned address does not stop the attacker, it stops whoever holds it now. purge_feed_blocks() deletes the rows earlier versions wrote, and the two connected variants of the CRITICAL notice were rewritten with a comment above them saying not to claim a block. The unconnected variant went on offering "to block threats like it automatically" for another three weeks, four lines below that comment. A comment asking the next person not to do something is not a guard, so there is now a test: it reads every translatable string in the file and fails on one that promises to block, prevent or stop anything. Verified by putting the sentence back. The listing on wordpress.org had two more. It sold "email notifications", which the API refuses (#702) because decoys are public bait and a busy site records thousands of hits a day; email is the monthly report. And it said attackers get pushed to Cloudflare or AWS WAF without saying that happens in the dashboard, which reads, in a plugin readme, like something the plugin does. Both corrected; the WAF claim keeps its substance and gains its location. "Start Free Trial" is now "Create a free account", because there is no trial on this channel: connecting is free and stays free. The settings upsell claimed "email alert automation" for the same reason and is now the webhook plus the monthly report. No behaviour changes, so no version bump. The readme correction is live on wordpress.org only after an SVN sync, which is a separate deliberate step. Refs #759, #476, #702
The alerts entitlement is served to every paid plan and the plugin has never read it. A site that upgraded got a flag it could not see and a feature it could not find. The Cloud tab now says which it is. On Pro: alerts are on, with a link to the dashboard where they are configured. On the free tier: what they are and that detection, blocking and the monthly report stay free, because the answer to "what do I lose by not paying" should be on the same line as the pitch. The plugin still sends nothing itself. That is deliberate and is the PRD's §9 guardrail: an entitlement check may gate a cloud response and never local behaviour. Everything this plugin does on its own keeps working on every plan, including with no account at all. Refs WebDecoy/app#762
Contributor
Author
|
Added a second commit: the Cloud tab now reads That flag has been served true to paid plans since P0 and read by nothing, here or anywhere. The companion is WebDecoy/app#764, which makes it mean something in the backend and the rule-engine. The plugin still sends nothing itself, deliberately: the PRD's §9 guardrail is that an entitlement check gates a cloud response and never local behaviour. Everything this plugin does on its own keeps working on every plan, including with no account. The free-tier line names what stays free rather than only what is missing. "What do I lose by not paying" belongs on the same line as the pitch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Companion to WebDecoy/app#761. Copy only, no behaviour change, no version bump.
The claim that keeps coming back
#476 withdrew blocking from the cross-site actor feed after measuring it against production: 2 of 4,866 addresses ever seen at more than one site, 93% of attacker addresses gone inside an hour, 82% of feed entries already a week stale, none still active. Blocking an abandoned address does not stop the attacker, it stops whoever holds it now.
That fix landed here in 2.3.2.
purge_feed_blocks()deletes the rows earlier versions wrote, and both connected variants of the CRITICAL notice were rewritten with a comment above them:Four lines below that comment, the unconnected variant went on offering "and to block threats like it automatically" for another three weeks.
A comment asking the next person not to do something is not a guard. There is now a test: it reads every translatable string in the file and fails on one promising to block, prevent or stop anything. Comments in the file discuss blocking at length and are deliberately exempt. Verified by putting the sentence back:
The wordpress.org listing
Live on the directory today, so these are the ones a stranger reads.
Release
95 tests pass,
php -lclean on both touched PHP files.Nothing here changes behaviour, so no version bump. The readme correction only reaches wordpress.org after an SVN sync, which is a separate deliberate step and not part of this PR.
Refs WebDecoy/app#759, WebDecoy/app#476, WebDecoy/app#702