Skip to main content
2026-W34

W34: Eighty-eight days blind

The week we discovered nobody had been counting blog visitors since May — the consent tool had guessed the wrong category for the analytics script and had been quietly blocking it. Alongside that: a security policy killed another button, and of 32 automations supposedly running, one actually worked.

LV EN
Highlights
  • vt-blog — 24 commits, the week's heaviest area; found and fixed the real reason the blog was nearly invisible in analytics
  • GA4 blog tracking: a 14-day measurement showed 40 sessions out of ~2,690 — roughly 1.5%; the root cause wasn't two conflicting tags but a consent tool that had filed the script under 'marketing' instead of 'statistics'
  • Blog chat separated from lead capture (D-062) — it informs and points to the form rather than trying to harvest contacts itself
  • vt-internal-services — VT Copilot tile added to the tools catalog; the PDF button turned out to be dead because the security policy blocks inline onclick
  • vt-blog content — structural work across 17 articles (venue and practical-info blocks, cuisine sections as tables) plus a new charter-flight piece from Riga
  • biznesam.ai — four days of AI briefings in LV and EN; added a timeout to the RSS fetch plus a failure alert email so a silent collapse is no longer possible
  • Ecosystem digest — task numbers are now atomic; two handoffs had vanished without a sound
Insights
  • An instrument you haven't verified in the browser isn't an instrument — 88 days of data looked plausible precisely because something was still being counted
  • When a tool 'guesses' on your behalf, that's configuration, not a default; write the guess down explicitly even when today's guess is right
  • Always attach the window to the number — '263 clicks over 7 days', never just '263'; without the window the figure enters your priorities seven times too large
  • A part cannot exceed the whole — one line of sanity check would have caught this two weeks earlier
  • A security policy doesn't shout. When it kills a form, images and a button inside two weeks, the problem is no longer the button — it's a development practice that still treats inline code as acceptable
  • An automation that is 'switched on' is not an automation that works; 32-to-1 doesn't call for more automations, it calls for one check per automation
Mistakes
  • Blog visitors went uncounted for ~88 days — the consent tool guessed the analytics script's category on its own, and guessed wrong; no log ever complained
  • The first fix repaired counting and broke the consent banner in production (M-067) — and the same mistake was repeated while fixing it (M-066)
  • One of the fixes was committed with no code changes at all — it would never have reached the live site
  • The security policy (CSP) killed the PDF button — inline onclick; the same failure class that blocked the client form and hotel images the week before
  • The watchdog couldn't tell 'it's broken' from 'I can't see it' and raised alarms for both — it needed three gates before signalling
  • Of 32 automations the wake-up agent observed, one was working
  • A GSC figure in task T-028 was overstated 7× for two weeks — 263 clicks over 7 days got transcribed as '~190 per day' (M-CMO-003)

Ecosystem overview

This was a measurement week — not because we measured anything better, but because it surfaced how long we had been measuring nothing without noticing. Blog visitors hadn’t been counted in analytics since May. The numbers were there, charts rose and fell, and that is exactly what made the blindness invisible: a system showing zero looks broken, a system showing one and a half percent just looks like a weak month.

The other half of the week was ordinary good work — content, structure, a chat that finally does what it promised, and a tools catalog that grew by one tile.


vt-blog

The week’s heaviest lift, 24 commits. Most of it went into a single question: why is the blog almost invisible in Google Analytics? The initial hypothesis was two conflicting tags. That was wrong. The root cause was the consent tool — Cookiebot had guessed which category the analytics script belonged to and had filed it under ‘marketing’ rather than ‘statistics’. Most visitors decline marketing cookies. Result: over a 14-day window the blog logged 40 sessions out of roughly 2,690 — about 1.5%.

The repair was not clean. The first attempt fixed counting and broke the consent banner in production. The second repeated the same mistake while fixing it. One of the fixes was committed with no code changes at all and would never have reached the live site. The final solution required two things: an explicit category, and type="text/plain" on the GA4 script, without which Cookiebot wasn’t blocking it at all. Root cause proven in the browser, not assumed.

Alongside that — chat was separated from lead capture (D-062): it informs and points to the form instead of trying to extract a contact itself. Phone-number recognition was fixed where it didn’t match the redaction logic and was therefore quietly losing leads (M-059). And in content: venue, practical-info and cuisine blocks structured across 17 articles, a charter-flight piece from Riga published, and a new China destinations article.


vt-internal-services

Three commits, one of them familiar. The PDF button in the proposal was dead — the security policy blocks inline onclick. That is exactly the failure class that blocked the client correspondence form and the hotel images the week before. Two weeks running, the same policy quietly disables functionality, and each time a human finds it rather than monitoring.

The rest: VT Copilot got its tile in the tools catalog, and client correspondence was removed from the proposal — it lives in Pipedrive email, and two homes for one thread was one too many.


claude-workspace

35 commits, mostly ecosystem plumbing rather than features. Task numbering became atomic (O_EXCL) because two handoffs had disappeared in complete silence. A step zero was added to the task template: has this already been done? The watchdog gained three checks before raising an alarm — it couldn’t distinguish “it’s broken” from “I can’t see it” and was signalling for both.

And one number worth keeping: the wake-up agent observed 32 automations. One was working.


biznesam.ai

A quiet week — four days of AI briefings in both languages. The only engineering was squarely on theme: a timeout on the RSS fetch plus a failure alert email, so a process that fails says so instead of simply returning nothing.


Infrastructure

vanilla-travel and claude-desktop-support show only autosave commits this week — CMO daily briefings, fast-gate metrics, env backups and retrospectives. There are no structured commits, so nothing can be claimed about the content; the work happened, but the context stayed outside the commit history.


Insights

An instrument you haven’t verified in the browser isn’t an instrument. Eighty-eight days of data looked plausible precisely because something was still being counted. Zero would have screamed; one and a half percent stayed silent.

When a tool guesses on your behalf, that’s configuration, not a default. Cookiebot guessed the category, we never wrote it down, and the guess was wrong. Pin the guess explicitly even when it’s right today — tomorrow it may guess differently.

A number must always travel with its window. “263 clicks over 7 days”, never just “263”. Without the window that same figure entered a priority argument seven times too large, and decisions rested on it for two weeks.

A security policy doesn’t shout. In two weeks it killed a form, images and a button. Three instances of one class isn’t coincidence — it’s a practice that still treats inline code as acceptable.


Mistakes and lessons

The most honest lesson this week isn’t about analytics. It’s about how easily the fix becomes the source: the first fix broke consent in production, the second repeated the same mistake, and one of them contained no code at all. Three steps to correct one thing — and each was called a fix before it was verified.

The second — a part cannot exceed the whole. 1,340 clicks to the blog against 1,120 clicks to the entire site sat on the table for two weeks and nobody checked it. That’s one line. It would have caught a sevenfold overstatement before it reached a task’s justification.

The third — 32 automations against one that works. This is not an argument for building fewer automations. It’s an argument for giving each one a single check that reports whether it actually did anything today.