Live functional QA sweep · verified, not claimed · 2026-07-05

ollwrite — What Works, What Doesn't

A live functional sweep of the built product — verified against the running app at localhost:3000, not claimed from memory. Honest status: ✅ working · ⚠️ partial · ⛔ not-yet-wired. Sibling docs: the feature reference, the build-out & GTM plan, and the launch runbook.

"Real end-to-end on Groq + nomic. The gaps are the money step and the Rung-3 differentiators."

Headline verdict

The core product — a calm editor plus a trustworthy memory sidecar — is functional end-to-end on Groq + nomic. The remaining gaps are the money step (checkout & deploy — needs Sam) and the Rung-3 differentiators (draft-from-bullets, gap-chips, voice profile, streaming).

Read this as a local-build sweep. Everything below was exercised against the local development build — auth is OFF and every request runs against a shared dev corpus. Nothing is deployed yet: no dedicated domain, no live billing, no per-user isolation in this demo (the scoping code is in place and tested, just not exercised through real login here).

Working — verified live in this sweep: all 6 pages, the full editor op menu, the memory pipeline incl. abstention & delete
⚠️
Partial — real but with caveats: Rung-2 landing, born-digital-only PDF, free-tier bursts, UI features verified at build not re-clicked
Not yet — stubbed by design or needs Sam: checkout 501, plan gating, prod generation path, Rung-3 v2, deploy

✅ Working — verified live in this sweep

Exercised directly against the running app — page loads, real Groq round-trips, and the full memory pipeline end-to-end.
StatusCapabilityWhat was verified
✅ 200All 6 pages loadLanding /, /onboarding, /home (library), /pricing, /upgrade, /editor — every route returns 200.
Editor ✨ ops (9)Via /api/write → Groq: Improve · Rewrite · Fix grammar · Change tone · Shorten · Expand · Bullets · Simplify · TL;DR — all return real Groq rewrites. Spot-tested improve / rewrite / TL;DR / grammar / bullets.
"Edit this idea"Per-paragraph rewrite with a word-diff redline + Accept / Reject / Retry, and the Ink-In accept animation (verified at build).
Memory ingestText, markdown, and real PDF (born-digital). Stable per-doc-id upsert — editing a doc REPLACES its chunks (no orphans, verified end-to-end). Delete works.
Semantic searchnomic embeddings — returns the right chunks on a synonym query (not just literal matches).
Grounded chatOver your corpus (Groq) — cited answer. Tested: "Dana Whitfield leads Meridian [1]".
Honest abstentionAn off-topic question returns "not in your notes" with zero citations — no hallucinated source.
Relevance floor + retry0.5 raw-cosine relevance floor gates weak matches; a chat rate-limit retry loop absorbs transient Groq errors.
Citation trust-loopInline citation node + draggable cards + insertable chips — 87 unit tests green.
Per-user corpus scopingCross-user isolation is server-pinned and tested (the browser can't name another user's corpus).
✅ 200Onboarding "what I found"/api/memory/suggest endpoint live (200).
Provider toggle + authGroq/Claude toggle wired through every op; Core magic-link auth exists (prod) — off in the local demo.

⚠️ Partial — real, with caveats

Wired and working, but with a real limit you should know about — or verified a different way than this API-level sweep.
StatusCapabilityThe caveat
⚠️ landingRung-2: onboarding-UI + Export-to-Markdown-with-citationsThe suggest endpoint is live, but the feature is in final build/commit as of this sweep — verify after it lands.
⚠️PDF = born-digital onlyA scanned / image PDF returns a clean 415 ("no extractable text — OCR not configured"), not OCR. Text-layer PDFs ingest fine.
⚠️Groq free-tier burstsAny editor op / chat can momentarily return empty under rapid-fire load. The transient-retry loop mitigates; the 70b/Claude quality dial (Rung-2/3) will harden it.
⚠️ build-verifiedProactive retrieval · drag-to-cite · Ink-InUI features verified via Playwright at build, not re-clicked in this API-level sweep.
⚠️ demoLocal demo modeRuns auth-OFF on a shared dev corpus — the per-user boundary isn't exercised through real login here (it is tested in CI).

⛔ Not working yet — stubbed by design or needs Sam

These are the honest gaps: the money step and the Rung-3 differentiators. Nothing here is broken by accident — it's the next rungs, most of it blocked on a Sam decision or a live-Stripe click.
StatusCapabilityWhy it's not wired
⛔ 501CheckoutThe /api/checkout route is a 501 stub — no live Stripe. Needs the price set + the go-live clicks (Sam console).
Plan gatingThe Claude / 70b Pro dial isn't enforced — it lands with billing.
Prod generation pathGeneration routes direct-to-oll-model in the demo; the write-service prod path (entitlement + metering) is pending.
Rung-3 v2 featuresNOT built: draft-from-bullets · gap-chips · voice/style profile · streaming.
DeploymentLocal only — no dedicated domain, nothing shipped to prod.

How this was tested

A live API-level sweep of the running local build, not a code read:

  • Pages — requested all 6 routes and confirmed each returns 200.
  • Editor ops — fired /api/write for improve / rewrite / TL;DR / grammar / bullets and read back real Groq rewrites.
  • Memory pipeline — ingested text/markdown/PDF, ran semantic search, asked a grounded chat question (got a cited answer), asked an off-topic question (got honest abstention with zero citations), edited a doc (chunks upserted, no orphans), and deleted a doc.
  • Checkout — hit the checkout route and confirmed the 501 stub (no live Stripe).

UI-only features (proactive retrieval · drag-to-cite · the Ink-In animation) were verified via Playwright at build, not re-clicked in this sweep — marked ⚠️ above so the distinction stays honest.

ollwrite — What Works, What Doesn't · live functional QA sweep · 2026-07-05 · local build (auth off, shared dev corpus, nothing deployed). Siblings: the feature reference · the build-out & GTM plan · the launch runbook.

Honest by construction: verified against the running app, not rounded up from memory. The gap between the green and red tables is the roadmap — and the money step at the top of the red table is the one that needs Sam.