Build1 distinct publisher3 min readPublished
Ownware's own access log records an AI coding assistant fetching /legal, /support and security.txt within minutes, then guessing /contact and stopping at the first 404, fifteen hours before the human paid.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Take the fetch order as a program rather than a visit. The agent went first to addresses that are either standards or long-settled conventions: /legal, /support, and /.well-known/security.txt, the machine-readable security contact defined by RFC 9116 [5]. Then it started guessing: /suites, /contact, /p/field-service-suite, and the product's bare slug /jobora without the /p/ prefix [6]. All four returned 404, and it did not try another spelling before reporting what it found and moving on [7].
That last detail is the whole engineering problem. A human who gets a 404 on /contact scrolls to the footer; the agent took the status code as the answer. Whatever your server returns for an address you never wired up becomes the finding, and the finding goes to the person holding the card.
The vendor is careful about the limits of its own evidence. It says it does not know what the agent's owner asked, only that the fetch pattern is consistent with an instruction along the lines of checking whether the vendor is legitimate before paying [9]. The sentence it believes was in the report, that the site has no contact page, is its inference rather than a log line [10]. The link between agent and buyer is a shared network, a distinct User-Agent, and interleaved timestamps [4]. Accept that inference or the story does not transfer.
The ratio in the log is worth keeping: 7,200 seconds of evaluation against an 11-second order, roughly 650 to 1 [1]. Buying is cheap. Being checked is not.
Four of the five surfaces the vendor now lists were already in place: /llms.txt with every product and its price read from the database at request time [11], schema.org Product and Offer blocks carrying live prices on product, suite and comparison pages [12], security.txt, which the agent fetched third [13], and a pricing page. That pricing page was itself a retrofit, added earlier this month after a different agent guessed /plans, /pricing, /pricing-plans and /plans-pricing in sequence and 404'd on all four [14]. Eight 404s across two agent visits, then [2]. The one missing surface was the least standardised of them: the addresses people actually type, which no RFC will ever tell you [15].
The repair is good engineering and worth naming as such. /suites computes each bundle price, the separate-purchase total and the difference from current single-licence prices on every request, carries no typed figure, and a test refuses any build that contains one [16]. /contact is a permanent redirect to the support page, which grew a contact section for everything that is not a support request [17]. Generated numbers cannot drift from the store; a hand-maintained /llms.txt drifts on the first price change.
What would have to hold for this to be your log too: your buyers are strangers spending real money on software they will run on their own hardware [2], the agent is running a trust check rather than a feature comparison, and the paths it guesses are ones your router has never heard of. If that holds, the work is an index page, a permanent redirect, and the two product URLs it missed, checked from outside your own network [18].
Ranked by verification strength, evidence, and original report placement.
The order itself took eleven seconds, while the evaluation that preceded it the day before took two hours, part of it performed by a program acting on the buyer's behalf.
The vendor sells small self-hosted business apps written in plain PHP and MySQL, bought once and run on the customer's own server.
The account is taken from the vendor's own access log with everything identifying the buyer removed; the buyer arrived from a DuckDuckGo search on a comparison page answering what a self-hosted alternative to a well-known retail point-of-sale product is.
Interleaved with the human page views, from the same network, was a second visitor with a different signature whose User-Agent named an AI coding assistant, and it did not browse the way a person browses.
In the space of a few minutes the agent fetched /legal (terms, refund policy, licence), /support (what is covered, how to reach a human, what happens when a download fails), /.well-known/security.txt (the machine-readable security contact defined by RFC 9116), the product page and the home page.
The agent then asked for four URLs that did not exist: /suites, /contact, /p/field-service-suite, and /jobora, the product's bare slug without the /p/ prefix.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 29, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Six MariaDB versions, one real difference: the only reason to leave 10.6 is the July 2026 clock1 distinct publisher
build
Slow Magento reindexes are a price index problem, and raw SQL makes it worse1 distinct publisher
build
Twenty-four messages on the PHP internals list separate translation from delegated argument1 distinct publisher
build
Thirty lines of Doctrine filter, and the query paths where it is simply not there1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One seller's server log, unaudited
Every detail this story turns on — the eleven seconds, the fetch order, the four exact 404s, the fifteen-hour gap — exists only in Ownware's access log, and Ownware wrote the story. No log excerpt, no timestamps, no request identifiers, no name for the assistant whose User-Agent supposedly appeared. What lifts it above the floor is internal specificity: the URLs are named, the failure mode is unflattering to the seller, and Ownware marks its own inferences where a promotional post would simply assert.
Two visits, one small store
Counting generously, this is n=2: one vetting agent and one earlier pricing-page agent, on a single PHP-and-MySQL shop. The site changes are real and shipped, which is adoption of a practice rather than evidence that agent-mediated buying is widespread. Nothing here establishes how often such visits occur, what share of sales they touch, or whether the agent's findings influenced the buyer at all.
Restrained, except at the edges
Ownware is unusually disciplined for a seller writing about its own sale: it says outright that it does not know what the agent was asked, and calls its legitimacy-check reading a consistency argument. The overreach is at the margins — 'this pattern is going to be ordinary very soon' from one sale, and a report line the vendor confidently reconstructs without ever seeing it. Our own framing of a 'probe' at four addresses inherits that stretch; four requests and a 404 are all that was actually observed.
The seller is the byline
Ownware describes traffic to Ownware, names its own product, and closes with a link to the store. The implicit pitch — a small vendor whose machine-readable surface is in order and who fixes gaps by lunchtime — is exactly the positioning that helps sell perpetual-licence software to careful buyers. That does not make the log false; it does mean the choice of which visit to write up, and which details to keep, sat entirely with the beneficiary.
Trust the URLs, not the conclusion
Two things pull in opposite directions. The technical particulars are the kind a practitioner can act on and would be odd to fabricate, and the remediation is checkable by anyone who visits the site. But there is one source, it is the interested party, the assistant is unnamed, and the causal claim that agent vetting preceded and enabled the sale rests on adjacency in a log. Read it as a credible field note; do not read it as measurement.