Shipping Notes, 3 October 2026: The Week We Counted
Seventy posts across five sites in a week, and the more useful output was the audit that ran alongside them. 2,310 pages counted for the first time, 244 duplicates retired, and a publishing feature we assumed we had.
Every fortnight we publish what actually shipped. This is an end-of-week edition, because the week was unusual.
Seventy blog posts across five sites, two a day, written and scheduled across seven days. And alongside them, an audit that turned out to matter more.
The audit
We counted our own websites properly for the first time. Seven sites, 2,310 published pages.
384 were duplicates of one another — 102 groups sharing an identical title, bodies 77% to 98% token-identical, left over from a historical bulk-generation run. One title existed fourteen times.
650 pages had no editorial inbound links at all. Reachable only from a paginated archive.
Twenty commercial pages had none either — including the main service page of one brand and a division launched the week before.
None of that was hidden. Every page was in version control and had been reviewed at the time. It had simply never been counted, because counting the estate is nobody’s job — it belongs to no project.
What we did about it
244 duplicates retired onto 102 canonical pages. Internal links were repointed at the surviving page before deletion, so nothing routes through a redirect, and 158 pre-existing redirects were repointed because they pointed at pages being retired — which would have turned them into redirects into errors.
Twenty-five groups were held back rather than consolidated: same title, genuinely different content. That is a rewrite, not a redirect, and automating past the distinction would have destroyed content while the report claimed a tidy-up.
Then every orphaned commercial page got links, from published posts where the link is genuinely relevant.
The feature we assumed we had
Thirty of the seventy posts were written to publish on later dates. All of them went live immediately.
None of the five sites could schedule anything. Every blog route filtered on a draft flag and nothing else — no date comparison existed anywhere. The date field was populated correctly on every post and was used only for sorting.
A populated field proves somebody filled it in. It proves nothing about what reads it.
Fixed with a release script, and one design decision worth recording: it only publishes posts carrying an explicit marker set by the writing process. Two drafts on the estate had been held back deliberately, one dated three weeks earlier, and a plain date test would have published somebody’s withheld work on its first run.
★ Insight ─────────────────────────────────────
Three of this week’s findings share a property: they are absences, and an absence produces no signal. A page with no inbound links does not error. A duplicate does not conflict. A missing scheduler does not fail. You cannot notice something not happening — you can only go and check whether it happened, and nothing in the ordinary operation of a business ever prompts that.
─────────────────────────────────────────────────
What went wrong
Two of our own measurements were wrong before they were right.
The link audit classified social redirect stubs as commercial pages, filling the orphan list with things never meant to have inbound links and burying the suburb pages that were the real finding.
The keyword-ownership check resolved a term to whichever site declared it first in a config file, disregarding which field it was in. That reported 183 violations against a site for using its own keyword.
Both were caught the same way: the result was surprising, so it was checked before it was acted on. Had either been reported as-is, the remediation would have been a quarter of work aimed at nothing.
And the orphan fix reverted itself. Six of the links we added lived in posts that were then held back for scheduling, so the commercial pages they pointed at went straight back to zero. A link fix that lives in scheduled content is not a fix yet. Moved into published posts and re-verified.
Also shipped
Reciprocal links between suburb pages, after finding eight of them appeared in nobody else’s “also serving” list.
Affiliate disclosure links on five review posts that had none — a link-equity gap and the thing our own advertising piece says to do.
A three-layer rebuild of form handling across five sites, per-brand confirmation emails from one sending path, and video embeds converted to facades so 656 pages now carry zero raw iframes.
The numbers
For the record, and because these notes exist to be checkable:
| Posts written | 70, across five sites |
| Total words | roughly 85,000 |
| Pages counted in the audit | 2,310 across seven sites |
| Duplicate-title groups found | 102, covering 384 pages |
| Pages retired | 244, onto 102 canonicals |
| Groups held back for review | 25 |
| Inbound links preserved by consolidating rather than deleting | 214 |
| Posts with zero editorial inbound links, before | 648 |
| After | 465 |
| Commercial pages with zero inbound, before | 20 |
| After | 2, both correctly so |
The two remaining are a site-wide call-to-action appearing on 92% of pages, which carries no editorial signal by construction, and a store-compliance page that exists for a listing rather than for discovery.
The thread
Recent editions have been about gates that did not run, gates that fired on the wrong things, systems that stopped agreeing, and controls that could not fail.
This week is the same family seen from further back: we had been measuring production and never measuring the estate. Posts published, words written, pages shipped — all tracked. Duplicates, orphans and link distribution — none of them.
A metric that counts output will always look healthy, because output is the thing being done. It takes a different class of measurement to notice that the output has accumulated into something nobody would have designed.
The practical version, for any business: once a year, count the thing rather than the work. It will be uncomfortable the first time, and nothing will ever prompt it.
Ganda Tech Services runs web, cloud, mobile and content operations for a group of Australian brands. These notes are published every fortnight, whatever they say.