// blog

Writing

Notes on software engineering, side projects, and building for the web.

#web-platform#reliability

A URL Rewrite Is a Component Transform, Not String Surgery

Fresh Astro and WordPress fixes expose three URL failure classes. Preserve component boundaries, suffixes, identity, and invalid-input policy.

Read ->
#developer-tools#monorepos

pnpm 12.4 and the Three Boundaries Inside One Install

pnpm now coordinates npm, Python, and Cargo, but keeps their resolvers, lockfiles, and build authority separate. That distinction shapes safe adoption.

Read ->
#github#analytics

GitHub Star History Is a Bucket Contract, Not an Event Feed

GitHub's privacy-safe API returns weekly buckets, not stargazer events. Handle pagination, partial weeks, churn, and attribution explicitly.

Read ->
#shopify#ecommerce

From Barcode to Basket: The Two Joins Behind Shopify POS 11.14

Shopify POS now resolves barcode aliases and surfaces eligible online baskets. Keep lookup evidence separate from transaction authority.

Read ->
#developer-tools#reliability

Run Fast, Serialize Narrowly: A Topology for Browser Tests

Playwright 1.63 adds named locks as Astro 7.3 permits concurrent previews. Isolate environments first, then serialize only true shared state.

Read ->
#security#developer-tooling

Every Trusted Publisher Expands the Release-Authority Union

npm now accepts multiple OIDC publishers while GitHub exposes reusable-workflow identity. Audit release authority as a union of paths.

Read ->
#seo#analytics

One Manual Action Now Has Two Geographies

Google's site reputation update makes one manual action behave differently inside and outside the EEA. Split detection, remediation, and disputes by region.

Read ->
#ai-agents#developer-tools

Copilot Approval Is a Revocable Machine Attestation

GitHub’s new AI approvals affect merge state. Separate assessment, review coverage, path eligibility, ownership, and commit freshness.

Read ->
#web-performance#web-platform

Cache Storage Is Not the HTTP Representation

Fresh Cloudflare cache work shows why storage encoding, selected representation, wire content, validators, and ranges must stay separate.

Read ->
#ecommerce#seo

The Variant Matrix Is Not a Sellable Catalog

Fresh Schema.org changes can describe richer product options, but dimensions, valid combinations, offers, and consumer support remain separate contracts.

Read ->
#web-platform#developer-tools

The htmx 4 Upgrade Reassigns UI State

Explicit inheritance, network history restores, error swaps, and morphing change who owns UI state. Migrate by provenance, not search-and-replace.

Read ->
#ecommerce#shopify

A Shopify Order Spans Three Clocks and One Location Snapshot

Shopify’s routing-based US tax and balance activity report expose separate order, balance, and payout clocks. Reconcile them without rewriting history.

Read ->
#ai-agents#seo

A Verified Bot Is a Policy Join, Not an Allowlist

Fresh BotBase and preference-sync releases expose a four-way join among request proof, declared use, site policy, and path enforcement.

Read ->
#ai-agents#web-platform

AI Catalogs Have Arrived Before the Conformance Harness

Fresh Cloudflare, Weaviate, and DeepEval catalogs expose a shared discovery shape—and the interoperability tests operators should run first.

Read ->
#security#developer-tools

A Green Security Dashboard Can Hide a Smaller Denominator

New Vercel and GitHub dashboards expose posture and rule events, but mutes, unreadable checks, and path exceptions can quietly narrow coverage.

Read ->
#ai-agents#developer-tools

Chat Adapters Normalize Messages, Not Meaning

Fresh Chat SDK and Copilot releases show why shared handlers still require channel-aware identity, retries, context, capabilities, and approvals.

Read ->
#ai-agents#developer-tools

The 30-Minute Runtime Trap: Agent Compute Has Three Planes

Longer Bun functions and global sandboxes now overlap on capacity. Trust, durability, and evidence—not runtime length—should decide where agent work runs.

Read ->
#security#operations

Mitigated, Remediated, and Fixed Are Different Security States

Fresh Cloudflare and GitHub controls show why closing an alert must not erase the difference between detection, containment, repair, and validation.

Read ->
#analytics#web-performance

Soft Navigation Metrics Break the Before-and-After Chart

Native soft-navigation measurement can raise pageviews and split Core Web Vitals by route. Preserve dual baselines before calling either a trend.

Read ->
#ai-agents#security

When a 403 Becomes an Agent Control Loop

Fresh Cloudflare and Vercel changes show how agents should turn API denials into narrow approvals without exposing the credential they receive.

Read ->
#security#serverless

Remote Spectre Makes Credential Lifetime an Isolation Boundary

Cloudflare's mitigated remote Spectre proof and GitHub's targeted revocation controls show why containment depends on four separate clocks.

Read ->
#ai-agents#security

MCP Headers Make Agent Traffic Legible, Not Governed

Cloudflare's MCP traffic detection and the stateless MCP spec expose agent tool calls in ordinary HTTP headers. Detection is now cheap; enforcement is not.

Read ->
#ecommerce#payments

Cross-Border FX Runs on Three Routing Decisions, Not One Fee

Stripe's expanded settlement currencies and instant conversion make presentment, settlement, and conversion separately controllable. Model all three legs before optimising any one.

Read ->
#security#privacy

ECH Hides the Visit, Not the Domain's Existence

Vercel ECH and Cloudflare certificate alerts show why visitor privacy, domain inventory, certificate issuance, and routing need separate evidence.

Read ->
#security#deployment

Every Deployment URL Is Part of the Auth Contract

New Cloudflare Access and GitHub OAuth controls make preview URLs, callbacks, token rotation, and retirement one deployment-level contract.

Read ->
#shopify#ecommerce

Shopify Checkout Recommendations Are Hypotheses, Not Defaults

Shopify now recommends richer checkout data. Test each field against completion, fulfilment, consent, and downstream utility before applying it.

Read ->
#ai-agents#security

One Agent Plugin Package Can Hide Four Trust Decisions

Agent Plugins 1.0 makes skills and MCP tools portable, but installation, execution, authority, and updates still need separate review.

Read ->
#ai-agents#security

A Local Model Does Not Make Agent Context Local

Persistent memory, retrieval, MCP tools, and gateway logs create separate context copies. Map each boundary before calling an agent private.

Read ->
#security#forms

A Turnstile Pass Is Not a Qualified Lead

Cloudflare's new Turnstile setup flow exposes a useful rule: protect availability, request integrity, and business acceptance separately.

Read ->
#analytics#ai-agents

When Agents Skip the Page, Conversion Tracking Moves Server-Side

WebMCP and hybrid human-agent journeys can bypass clicks and pixels. Measure tool calls, confirmations, and business outcomes at the server.

Read ->
#ai-agents#analytics

Agent ROI Metrics Need Work Receipts

GitHub's fresh Copilot ROI, effort-level, and agent usage updates make AI productivity measurable only when work evidence joins the spend.

Read ->
#ai-agents#operations

Prototype Apps Need Exit Inventory

GitHub Spark's shutdown shows AI-built mini apps need ownership, runtime, inference, and export records before they become useful.

Read ->
#ai-agents#analytics

Copilot Billing Data Needs Handover Receipts

GitHub's Copilot billing app retirement shows AI cost records must survive dashboard moves, policy changes, and usage rollups.

Read ->
#security#developer-tools

Code Quality Setup Is a Policy Surface Now

GitHub's fresh code scanning and coverage setup changes make security and quality configuration an operating artifact.

Read ->
#ai-agents#operations

Comment-Triggered Agents Need Intent Filters

GitHub's fresh Copilot automation triggers and reasoning controls make comments an execution surface that needs typed intent.

Read ->
#ai-agents#operations

AI Gateway Budgets Are Runtime Circuit Breakers

Vercel's fresh AI Gateway budgets and model additions show cost control moving into request routing, not monthly cleanup.

Read ->
#ai-agents#operations

AI Model Entitlements Are Becoming an Operating Matrix

GitHub's team-level Copilot policies and model retirements show model access now needs role, surface, and fallback records.

Read ->
#ai-agents#developer-tools

Agent Worktrees Turn Parallel Coding Into Isolation Policy

Fresh Copilot IDE updates and GitHub Models retirement show agent concurrency needs workspace, model, and evidence boundaries.

Read ->
#developer-tools#operations

Stacked PRs Make Change Shape Operable

GitHub stacked PRs, self-repository actions, and managed remote control turn large change management into explicit workflow design.

Read ->
#ai-agents#developer-tools

Code Review Agents Turn Context Into Review Infrastructure

Copilot code review skills, read-only MCP, default model policy, and usage rollups make review context an operable system.

Read ->
#security#developer-tools

Package Malware Controls Shift Left to Publish Time

Fresh npm and Dependabot changes make package trust a workflow design problem, not just an alert triage problem.

Read ->
#ai-agents#operations

AI Inference Regions Turn Privacy Into Routing Logic

Fresh Vercel and GitHub controls show AI governance moving into per-request region, client, workflow, and approval decisions.

Read ->
#ai-agents#operations

Long-Running Agents Need Checkpoint Contracts

Claude Opus 5 in Copilot, mobile agent fixes, and stateless MCP shift agent risk from launch approval to mid-run control.

Read ->
#operations#developer-tools

Work Taxonomies Should Preserve Overlap

GitHub's new multi-select fields and agent automation controls make queue taxonomy an execution boundary, not admin decoration.

Read ->
#security#reliability

File Upload Pipelines Are Becoming Edge-Controlled Workflows

Vercel's latest Blob WAF and workflow-duration updates show uploads need edge policy, async processing, and evidence trails.

Read ->
#ai-agents#operations

Agent Work Intake Is a Control Surface

Fresh GitHub updates move agents into Issues, Linear, Mobile, and MCP. Design intake rules before autonomous work spreads across queues.

Read ->
#ai-agents#operations

Spend-Capable Agents Should Leave Purchase Receipts

Vercel MCP purchases and installable agent extensions make spending a tool permission. Treat purchase authority as audited product surface.

Read ->
#ai-agents#operations

Agent Model Routing Is Now Operational Design

Fresh Copilot and Vercel updates show AI teams need routing rules for model choice, cost, latency, and approval boundaries.

Read ->
#ai-agents#operations

AI Credit Pools Require Chargeback Design

GitHub's AI credit pool controls make Copilot spend easier to allocate, but only if teams separate license-funded usage from metered overage.

Read ->
#developer-tools#reliability

Code Quality Gates Start as Evaluate-Mode Experiments

GitHub Code Quality is GA with dashboards, coverage gates, APIs, and AI autofix. Roll it out as measured policy, not a blanket blocker.

Read ->
#ai-agents#developer-tools

Review Agents Work Best in Testable Review Environments

Copilot code review now reads branch instructions, setup files, and runner policies. Treat review context as executable infrastructure.

Read ->
#ai-agents#analytics

Copilot Metrics Should Measure Repository Outcomes

GitHub's fresh Copilot metrics updates make AI work visible by repo, app, and mobile fix path. Turn usage into outcome review.

Read ->
#operations#developer-tools

Operational Questions Belong in Project Views

Fresh GitHub and Vercel updates show queues, cache writes, and Slack agents becoming queryable operating surfaces.

Read ->
#ai-agents#security

Runtime Credentials Change the Shape of Agent Risk

Fresh GitHub, Vercel, and Cloudflare updates show secrets, connectors, and flag CLIs becoming operational control planes.

Read ->
#security#developer-tools

Dependency Cooldowns Turn Update Speed Into a Policy

Dependabot's default cooldown changes dependency updates from pure freshness work into release-risk routing for small teams.

Read ->
#security#ai-agents

Copilot Security Reviews Move Risk Left Into the Workstream

GitHub's new security-review command and agentic autofix make security work earlier, but only if teams capture evidence.

Read ->
#security#operations

Security Alert Names Should Trigger Response Playbooks

GitHub's clearer detector names and AI scanning updates show why alert labels should route action, not just decorate queues.

Read ->
#developer-tools#ai-agents

Repository Overviews Should Expose Operating Boundaries

Copilot can now summarise unfamiliar repos. Make those summaries safer by documenting owners, risk zones, and contribution limits.

Read ->
#security#ai-agents

Prompt Injection Scans Deserve Triage Rules

CodeQL prompt-injection detection turns AI app security into review work. Route findings by exploit path, not scanner severity alone.

Read ->
#developer-tools#operations

Pull Request Dashboards Should Encode Release Risk

GitHub's new PR dashboard and Code Quality targeting make review queues more useful when they sort by business risk, not noise.

Read ->
#ai-agents#observability

AI Coding Telemetry Belongs in Operations

GitHub's new Copilot controls make agent activity observable and enforceable. Route that telemetry into incident, cost, and release processes.

Read ->
#ai-agents#accessibility

Accessibility Trees Make Browser Agents Testable

Browser agents are getting semantic page views. Use accessibility trees to test what they can understand before they act.

Read ->
#cro#reliability

Feature Flags Get Safer With Targeting Diffs

Vercel Flags segments are now scriptable from the CLI. That makes rollout targeting reviewable, but only if teams diff it like code.

Read ->
#performance#seo

Vary Caching Depends on Clear Content Contracts

Cloudflare Cache Rules now honor Vary. That helps multilingual and format-aware pages, but only if teams control variant keys.

Read ->
#ux#accessibility

Pointer Events Expose Weak Interaction Contracts

Pointer Events Level 3 is now a W3C Recommendation. Treat touch, pen, and mouse behaviour as a funnel contract, not browser trivia.

Read ->
#ai-agents#operations

Agent Runs Are Only Useful With Audit Trails

Vercel Agent Runs and GitHub Copilot usage metrics show why AI work needs inspectable logs, not just accepted diffs.

Read ->
#deployment#automation

Deploy Dry Runs Turn Into Release Contracts

Vercel dry-run deploys and service bindings are useful, but teams need explicit release contracts before agents ship.

Read ->
#security#operations

Secret Leaks Demand Public Surface Monitoring

GitHub and Vercel updates show why small teams need to watch public leaks, stale credentials, and project-level security drift together.

Read ->
#ai-agents#operations

Agent Work Starts With Cost Budgets

Vercel and GitHub's latest agent pricing changes make token spend an operating metric, not an accounting surprise.

Read ->
#security#developer-tooling

Dependabot Works Better With Explicit Registry Contracts

GitHub's .npmrc change is a useful reminder: dependency automation should use named registry rules, not inferred package-manager state.

Read ->
#ai-agents#operations

Agent Deploys Start With Permission Budgets

Vercel's Ship 2026 announcements show a practical pattern for coding agents: scoped identities, temporary access, and measurable deploy risk.

Read ->
#ai-agents#developer-tooling

Copilot Model Choice Works Best With Routing Rules

GitHub's latest Copilot changes make model choice and adoption reporting an operations problem, not a preferences menu.

Read ->
#ai-agents#analytics

AI Coding Metrics Fall Apart Without Denominators

GitHub's new Copilot merge totals are useful only when teams compare them against review quality, risk, and delivery context.

Read ->
#automation#reliability

Workflows Break Less With Recovery Contracts

Cloudflare's rollback-handler update is a useful reminder: business automations need explicit recovery paths, not just retry buttons.

Read ->
#analytics#vercel

Analytics Get Safer With Command-Line Checks

Vercel's new CLI Web Analytics query is a useful pattern: make performance and conversion checks repeatable, not dashboard archaeology.

Read ->
#security#operations

Credentials Deserve a Real Kill Switch

Fresh GitHub, Vercel, and Cloudflare updates point to the same operator lesson: scope credentials tightly and rehearse revocation before an incident.

Read ->
#ai-agents#vercel

AI SDK 7 Makes UI Contracts Matter

Vercel shipped AI SDK 7 with typed messages, resumable streams, and MCP tools. Treat the upgrade as an agent UI contract, not a package bump.

Read ->
#cro#research

Diary Studies Beat Funnel Guesswork

NN/g’s fresh diary-study incentive guide is a reminder: before changing a checkout or quote funnel, watch what customers do over time.

Read ->
#operations#ai-agents

AI Agents Run Better With Operator Guardrails

Fresh NN/g, Cloudflare, and GitHub updates show agentic workflows moving into real operations. Treat them as systems, not clever prompts.

Read ->
#analytics#operations

AI Tool Spend Deserves Product Analytics

Recent Stripe and GitHub data show AI spend is becoming measurable. Operators should track AI tools like product usage, not software overhead.

Read ->
#seo#marketing

AI Search Rewards Situation-Specific Landing Pages

Fresh AI search research points to a practical SEO shift: build pages around the situation buyers describe, not just the keyword they type.

Read ->
#web-platform#cro

Native Select Styling Changes Form UX

Safari 27 is adding customizable select support. Form-heavy sites should test native styling before reaching for custom dropdown JavaScript.

Read ->
#email#marketing

Email Authentication Is Now Operator Work

Cloudflare made DMARC Management generally available. Small teams should treat SPF, DKIM, and DMARC as deliverability infrastructure, not DNS trivia.

Read ->
#analytics#seo

Bot Traffic Is Now an Analytics Problem

Bots and AI agents are becoming normal website traffic. Operators need cleaner analytics, crawler policy, and separate metrics for machine visitors.

Read ->
#security#reliability

Security Scans Belong in Designed Delivery Pipelines

Cloudflare scaled Security Insights 10x without new hardware. The builder lesson is to treat audits and scanners as pipelines, not cron jobs.

Read ->
#ai-agents#github

Copilot Code Review Works Better With Firm Guardrails

GitHub added org runner controls, content exclusion, and larger custom instructions to Copilot code review. Treat that as review infrastructure, not decoration.

Read ->
#ai-agents#web-platform

WebMCP Turns Websites Into Agent-Ready Workflows

Chrome is testing WebMCP so websites can expose structured tools to browser agents. Here is what builders should do before agents start using their UI.

Read ->
#ai-policy#anthropic

The Fable 5 Recall Shows the AI Export Problem

Anthropic launched Fable 5, then suspended it after a US export-control directive. The useful lesson is about governing model capability, not one jailbreak.

Read ->
#better-fetch#web-scraping

Better Fetch vs. 10 Web Scraping APIs

A deep dive comparing Better Fetch to ScrapingBee, ScraperAPI, Zyte, Bright Data, Firecrawl, Scrapfly, Apify, Browserless, Browserbase, and Jina Reader — on pricing, billing model, and what they cost when JavaScript and anti-bot kick in.

Read ->
#ai-agents#vercel

AI SDK Harnesses Make Agents Swappable

Vercel is adding HarnessAgent to AI SDK 7. The practical lesson is that agent runtimes are becoming app infrastructure, not just CLI tools.

Read ->