---
title: "Mistakes I made building v6"
url: https://mdfy.app/bDVLxgav
updated: 2026-05-14T18:15:49.480Z
source: "mdfy.app"
---
# Mistakes I made building v6

> Honest list. I write these because I want to remember them, not because I think they're inspirational.

## 1. Built `[[wikilinks]]` before deciding we were a wiki

Spent ~2 days implementing `[[]]` resolution, autocomplete, backlinks panel. Then realised the AI-derived concept_index was strictly better and made the manual `[[]]` redundant. Ripped the wikilinks code out.

Cost: 2 days of build + 1 day of removal.
Lesson: don't ship product surface before locking the positioning. The positioning has to come first; the syntax has to match the positioning.

## 2. Tried y-prosemirror for the editor

The vision was real-time collab. The reality was that y-prosemirror + the comrak-WASM pipeline didn't compose cleanly. Three days of trying to make CRDTs and a custom markdown engine play nice with shared editing.

Reverted to contentEditable + autosave. Single-user is the right scope for now.

Cost: 3 days.
Lesson: don't pre-build for collab affordances. They cost a lot, they break a lot, and single-user works fine until the day there's evidence collab is the wedge.

## 3. Wrote the AGENTS.md integration before testing it lived in Cursor

I wrote the integration docs based on what I expected Cursor's behaviour to be. The docs said "Cursor reads AGENTS.md per session, edits show up next session." That was true. What the docs didn't say is "Cursor caches AGENTS.md for the *duration* of the session, so even running `:reload` doesn't refresh it." I edited AGENTS.md mid-session expecting the change to apply, didn't see it apply, and spent an hour thinking my mdfy server was broken.

Cost: 1h + a documentation fix.
Lesson: integration code has to be tested in the actual host before the docs are written.

## 4. Optimistic about the Mermaid renderer

The pre-launch testing assumed the Mermaid version we ship handles every diagram type the spec covers. The launch version chokes on `gitGraph` diagrams (silent failure, renders blank). Filed as a known issue; will fix post-launch by upgrading.

Cost: 0 user-facing impact (no users hit it), 30 mins of bisecting.
Lesson: visual regression tests for the renderer aren't optional.

## 5. Forgot to test the "signed out" state for sidebar bundles

Bundles survived sign-out for two weeks. Found by the founder (me) at the worst possible time — during a competition review. The cause was a missing `setBundles([])` in the sign-out button and a refetch effect that re-populated against the still-present anonymous_id.

Cost: 1h of QA + 1h of competition embarrassment.
Lesson: test every "ephemeral state on logout" path explicitly. The "I just signed out, what does my session look like" view is fragile and gets shipped without testing more often than it deserves.

## What none of these are

Catastrophic. They're all 1-3 day setbacks that I learned from. The pattern is the same: ship → notice → fix → write down the lesson. The loop is fine.

What I'm watching for is the bigger mistake — the one where I get too attached to a piece of the product to remove it. Haven't seen it yet but it's coming.
