Skip to content

Drift Log

github-actions[bot] edited this page Oct 25, 2026 · 5 revisions

Canonical source: docs/02-business-product/drift-log.md — this page is rendered from it on every publish; edit the source.

Drift Log

Every intended change of direction in the product, the business, the scope or the market: what was true, what is true now, why, who decided, and what it touched. Append-only — a reversal is a new entry that references the old one.

The decision behind an entry lives in its ADR; the current state lives in the page the entry names. This log is the history between them.

Field Meaning
Area product · business · market · scope · architecture · UX
Before / After The direction before and after, in one line each
Why The evidence or reason
Decided by A named owner, or the gap marker when unknown
Impact Users, revenue, cost, schedule, risk
Touched The requirements and documents updated in the same change

DRIFT-001 — From "one subscription" to "Every AI, one workspace" (2026-09-26)

  • Area: product, business, market.
  • Before: "Every Frontier AI Model, One Subscription." ClawAI described as a local-first AI orchestration platform; the story was model access and routing on a subscription.
  • After: "Every AI, one workspace." A full AI workspace that sees, hears, researches and builds — pay-as-you-go first, teams and business customers, local-first and privacy as the differentiator.
  • Why: the product shipped well past chat between 2026-08-25 and 2026-09-26 (see the flagship catalog), and the business is moving towards pay-as-you-go credit (ADR-078), which "one subscription" contradicts.
  • Decided by: the owner, 2026-09-26.
  • Impact: public copy, the README, the wiki and every agent router change. No price, plan limit or entitlement changes. Risk: the teams pillar over-promises if copy names features that are not built — bounded by REQ-POS-005.
  • Touched: ADR-126, product vision, business overview, competitive analysis, requirements register REQ-POS-001…006, root README.md, wiki/, CLAUDE.md and every agent router. Frontend marketing copy is changed in a separate, parallel batch.

DRIFT-002 — "One subscription" copy removed from public pages, Team plan stops promising pooling (2026-09-29)

  • Area: product, market.
  • Before: DRIFT-001 changed the slogan, but 30-odd marketing, comparison, FAQ and SEO strings in all 13 locales still said "one subscription", and the Team plan's seeded description promised "shared workspaces and a large pooled allowance" (pooling is not built, REQ-POS-005).
  • Now: the teams FAQ answer and the "teams" persona line no longer promise a shared workspace: they describe administrator-managed accounts and say shared billing, pooled allowances and single sign-on are not available today. Those strings say "one workspace" (competitor and plan-specific uses of "subscription" are untouched); the Team description reads "A large monthly allowance for heavy daily use." Existing installs are updated by a migration guarded on the old text, so an operator's own wording survives.
  • Why: "one subscription" contradicts pay-as-you-go credit and the "Every AI, one workspace" slogan; the Team text overclaimed an unbuilt feature.
  • Decided by: the owner, 2026-09-29 ("do them and finish").
  • Impact: public copy only. No price, quota or entitlement changes.
  • Touched: apps/claw-frontend locale files, comparison, coding-agent and SEO constants (13 locales); apps/claw-auth-service plan-catalog seed and migration; REQ-POS-005; flagship catalog.
  • Guarded by: one-subscription-wording.test.ts (per-locale phrase list and the teams FAQ), repositioning-slogan-keys.test.ts and plan-catalog-pricing.seeder.spec.ts (no plan promises pooling).

DRIFT-003 — Saving from chat is decided by a model, not by keywords (2026-09-30)

  • Area: product.
  • Before: ADR-127 chose a deterministic keyword path with no model: one target per turn, a guessed memory type, always a new pack, a templated reply.
  • Now: a planner model decides memory / context pack / both, the answering model confirms, existing packs can be chosen (and are asked for), and a saved card with deep links is persisted (ADR-134). The keyword path is the fallback.
  • Why: owner direction in chat, 2026-09-30 ("not just keyword detection but AI intelligence").
  • Who: owner; implemented by the coding agent.
  • Touched: REQ-CHAT-006, ADR-134, ADR-127 addendum, rule 57 §11.

DRIFT-004 - Draft social post claims do not match the plans (2026-10-03)

  • Area: business/marketing.
  • Before: the draft LinkedIn post said "10 requests per day" on top models, 1M tokens a day, a 90-day trial.
  • Now (code): Free credit-connector allowance is one monthly total, set to 10 by the owner on 2026-10-03 (was 2); Free is 20k tokens a day; the trial is 30 days; paid plans pay from wallet credit. Copy in all 13 locales already says "per month".
  • Why: owner asked to verify the post against the code.
  • Who: owner; audited by the coding agent.
  • Touched: ADR-142, docs/business/plan-allowances.md, plan-catalog.json, seed.cjs.
  • Status: done (code and docs); the post text is the owner's to correct. Priority: medium

DRIFT-005 — Thread author disagreement is arbitrated, not treated as failure (2026-10-25)

  • Area: product, quality.
  • Before: every author had to produce the exact same draft hash before the Judge ran. A single dissent could consume another full generation round and still fail the job at its round limit.
  • Now: authors vote for the strongest candidate and the Judge selects and reviews a candidate in that round; the Critic independently reviews the selected draft. The owner sees the plurality agreement percentage. Dissent alone does not block readiness.
  • Why: the Judge is the designated arbiter; author preference is not a publication gate. The owner explicitly requested this change on 2026-10-25.
  • Who: owner; implemented by the coding agent.
  • Impact: fewer wasted generation rounds and clearer review status. Existing spend caps and Judge, Critic, citation and safety gates remain in force.
  • Touched: REQ-THREADS-002, ADR-190, Threads product spec.

Clone this wiki locally