> ## Documentation Index
> Fetch the complete documentation index at: https://plainrouter.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# August 2026

> PlainRouter product updates shipped in August 2026.

PlainRouter ships continuously. This page collects the customer-facing changes from August and leaves out formatting, CI, and internal draft work.

<Update label="August 26, 2026">
  ## Official clients publish API 0.5.0

  **New** · TypeScript SDK `@plainrouter/sdk@0.5.0`, Python SDK `plainrouter==0.5.0`, Go SDK `github.com/plainrouter/sdk-go@v0.5.0`, and CLI `@plainrouter/cli@0.5.0` are published from the signed API contract. Install the CLI through npm or the official Homebrew tap with `brew install plainrouter/tap/plainrouter`. [Choose an official client](/docs/reference/conversion-api#client-releases).

  ## Try the API without an account

  **New** · The public sandbox now lets you validate an identity-free synthetic event without an account or credential. One read-only request also returns a short-lived sandbox key for testing bearer-authenticated client setup. Sandbox requests read no production data, persist nothing, and contact no advertising provider. [Try the sandbox](/docs/sandbox).
</Update>

<Update label="August 25, 2026">
  ## Signal collection gets a fail-closed edge release

  **Security** · The `v4.1.4` edge release accepts browser identity only after all three advertising permissions are granted under basis `consent`, rejects alternative caller-supplied identity bases, and keeps severed collection disabled when its private gate is missing or malformed. Same-origin forwarding probes now attest only the active secret and return a retryable error when tracker key storage is unavailable. [Review Signals consent behavior](/docs/signals/track-events#set-consent).
</Update>

<Update label="August 24, 2026">
  ## Compare Signal arrivals with platform-claimed clicks

  **New** · The Signals dashboard now compares privacy-bounded observed arrivals with stored account-level platform clicks over the same fully retained daily period. It shows the difference and claimed-click proportion, includes a CSV export, and never makes a live Marketing API request while rendering or exporting. [Interpret the comparison](/docs/signals/health-and-performance#arrivals-vs-platform-claimed-clicks).

  ## Launcher batches gain MCP status and preflight preview

  **New** · Agents can read bounded batch, item, partition, and linked-proposal status, then run the authoritative Launcher preflight gate without provider work. The discoverable execution entry remains deliberately closed and non-mutating during Phase B-1. [Use the Launcher MCP workflow](/docs/reference/mcp-tools#launcher-batch-status-and-preview).
</Update>

<Update label="August 23, 2026">
  ## Signal arrival verification is more durable

  **Improved** · A verified managed-hostname arrival stays latched after recent activity ages out. During same-origin secret rotation, PlainRouter now acknowledges the new forwarding secret only after a successfully ingested authenticated arrival, so malformed or failed requests cannot end the overlap. [Review serving verification](/docs/signals/configure-serving#generate-your-setup).

  ## Strict-EU passive totals honor small-cell privacy

  **Privacy** · Strict-EU passive activity contributes zero to displayed Signal totals until its aggregate cell reaches five arrivals. Passive rows remain identity-free, aggregate-only, absent from event-level APIs, and ineligible for Meta delivery. [Interpret Signal activity](/docs/signals/health-and-performance#events-received).
</Update>

<Update label="August 22, 2026">
  ## Passive Signal rows omit URLs and sources

  **Privacy** · Passive severed rows now store neither a page URL nor a platform or channel source, and their rollups keep the source dimension empty. These arrivals remain identity-free, aggregate-only, and ineligible for Meta delivery. [Review passive activity handling](/docs/signals/health-and-performance#events-received).
</Update>

<Update label="August 21, 2026">
  ## Signal serving setup now adapts to your hosting stack

  **New** · The Signals dashboard detects your hosting stack in the background and produces one copy-ready setup: a managed-hostname CNAME for platform-constrained sites or same-origin forwarding for Vercel, Netlify, Next.js, Cloudflare, Nginx, and Caddy. Same-origin installs include secret rotation and turn green only after a side-effect-free forwarding probe and the first authenticated arrival. [Configure Signal serving](/docs/signals/configure-serving).

  ## Signal activity includes privacy-bounded passive arrivals

  **Improved** · Activity totals now include customer-visible passive arrivals without exposing them in event-level lists or detail APIs. Invalid traffic stays out of the totals, and strict-EU passive cells contribute only after their aggregate reaches five arrivals. [Interpret Signal activity](/docs/signals/health-and-performance#events-received).
</Update>

<Update label="August 20, 2026">
  ## New Signal installs use the v3 browser contract

  **Fixed** · PlainRouter now generates `/s/v3.js` installation URLs across onboarding, hostname responses, and the dashboard fallback snippet. The v3 browser API accepts structured consent snapshots and fails closed when required advertising permissions are missing, unknown, denied, malformed, or withdrawn. Its `v3.0.1` patch also preserves previously consented visitor state while a returning page waits for the consent platform to restore its decision; no measurement resumes before that decision arrives. [Install the current pixel](/docs/signals/install-pixel).

  ## Action verification commits atomically

  **Improved** · Receipt state, verification results, terminal action state, and audit events now settle in one transaction. Persistence retries reuse durable classified evidence without repeating provider writes or reads, while verified creation evidence suppresses unsafe exhaustion compensation. [Review verification and Landed](/docs/actions/overview#verification-and-landed).
</Update>

<Update label="August 19, 2026">
  ## Spend proposals now require performance evidence

  **Improved** · Signal health remains available for diagnostics, but it can no longer support budget, status, creative-spend, or mixed proposals. Agents must use eligible observed reconciliation data from `get_performance`; modeled and portfolio-only events remain outside that evidence path. Upload-only asset proposals keep the narrow non-spend exception. [Review the MCP evidence rules](/docs/reference/mcp-tools#evidence-restrictions).

  ## Import Launcher drafts from CSV or XLSX

  **New** · Write and Admin workspace tokens can create Launcher drafts through `POST /mcp/launcher/import`. The adapter accepts bounded CSV/XLSX files, reports invalid rows without hiding valid work, resolves only already-synced Drive assets in the token workspace, and deletes staged uploads after parsing. [Read the import guide](/docs/launcher/import-draft-batch).

  ## MCP execution credentials fail closed

  **Security** · OAuth management credentials are now rejected by default on MCP and agent-authenticated routes. The read-only agent-context route is the sole discovery exception; MCP tools require an account-bound workspace execution token whose tier is capped by the issuer's current workspace role. [Connect an agent](/docs/actions/connect-agent).

  ## Actions and operational monitoring are more deterministic

  **Improved** · PlainRouter now fixes proposal, provider-read, verification-slot, and cancellation processing to explicit domain order. WAL archive monitoring also distinguishes idle databases from stalled archiving and no longer prevents later scheduled work from running after an alert.
</Update>

<Update label="August 18, 2026">
  ## Launcher draft batches arrive in MCP

  **New** · Agents can use `launcher.draft_batch` to turn already-synced Drive assets into a structured PlainRouter draft. It requires a Write or Admin workspace token and does not write to Meta or activate spend. [Read the MCP reference](/docs/reference/mcp-tools).

  ## Consent-first Signals and simpler activation

  **New** · Signal activation now uses an identity-free server verification event through REST or MCP, making the browser pixel optional for setup. Event ingestion now requires an explicit consent basis and fails closed before ineligible Meta delivery. [See what changed in API 0.3.1](/docs/reference/conversion-api).

  ## SDKs and CLI ship API 0.3.1

  **New** · TypeScript SDK `0.3.1`, Python SDK `0.3.1`, and CLI `0.3.1` are now published. Both SDKs expose all ten signed API operations, including ingestion verification and the consent-aware event contract. [Choose a client](/docs/reference/conversion-api#client-releases).

  ## Stripe revenue waits for settlement

  **Improved** · Stripe Checkout creates a purchase only after an exact `payment_status` of `paid`. Failed, unpaid, free, missing, and malformed states stay out of the ledger, rollups, and Meta delivery. [Review Stripe event behavior](/docs/signals/track-events#verify-stripe-checkout-settlement).

  ## Creative media execution is more durable

  **Improved** · Launcher now validates staged media before provider upload, records durable lifecycle state, and defers safely when the shared Meta request budget is exhausted. Policy, approval, receipt, and provider-verification gates remain in place.
</Update>

<Update label="August 17, 2026">
  ## Drive ownership is verified before sync

  **New** · Launcher verifies a connected Drive folder by workspace-domain ownership or a generated challenge file before inventory sync can run. Public folders always require the challenge path. [Connect a Drive folder](/docs/launcher/connect-drive).

  ## The redesigned Signals ledger reached production

  **Improved** · PlainRouter shipped partitioned event storage, exact rollup coverage, bounded retention paths, replay protection, and privacy erasure that preserves the accounting spine while removing subject data.

  ## Drive sync gained durable operation receipts

  **Improved** · Drive dispatch, retries, reconciliation, and final outcomes now share a durable receipt model, making sync work replay-safe and auditable without ambiguous legacy fallback behavior.
</Update>

<Update label="August 16, 2026">
  ## Workspace-scoped MCP tokens

  **New** · Workspace owners can issue, rotate, and revoke Read, Write, or Admin bearer tokens bound to one workspace and Meta ad account. PlainRouter shows the credential once and audits its lifecycle without storing the plaintext value. [Set up a workspace token](/docs/actions/workspace-tokens).

  ## Policy changes joined the audit chain

  **Improved** · Workspace action-policy changes are now recorded atomically in the recomputable audit chain alongside proposals, approvals, executions, and token lifecycle events. [Learn about the audit log](/docs/actions/audit-log).
</Update>
