Once sticky merge landed, the next door opened. Now the wiki needs “management.” Awkward classify, too many keywords, a merged doc you dislike, a title printed twice. The moment you want to fix it by hand.
But this product’s pipe is AI from the start. Chat comes in, gets summarized and organized, drafts form, merge confirms. The picture of a person polishing every result in a markdown editor almost never holds. A little growth in doc count and hand management is unrealistic. I did not want to grow a wiki by hand. I wanted AI’s pile to stay usable.
Taste still remains. Same space, different voice, different depth of classification, different merge criteria per person. So I opened handles. Re-classify, re-tag, merge, split, rewrite. All via AI. Not the person designing structure by hand. One instruction line, result changes.
Then the next problem. When AI adjustment misses intent.
“Title only,” I said
Around July 16 I put only “remove duplicate title” into rewrite. Common case: the document title also sits as a top H1 in the body. I wanted that duplicate gone.
What came back was a body almost emptied, a stub left. A partial ask, and the model rewrote the whole thing. Long accumulated content shrank into a summary or dropped out.
The cause was simple. The rewrite path asked the model to regenerate the full body, with no preservation check against the original. Even if you write “title only,” the model can emit a short doc, and that output became the draft as-is. Prompt alone was not enough.
The fix split three ways. First, clear rule jobs like title-dupe removal are deterministic: strip a leading # H1 that matches the document title, no model call. Second, partial edits apply SEARCH/REPLACE patches onto the original. Only swap the changed span. Third, full rewrite only when true full rewrite is needed, and reject if length collapses without a shorten instruction. Half a body without “summarize” does not pass.
Smoke passed. Title-dupe scenarios kept body and links. That is not the end. Smoke freezes a few contracts. Real instructions, real lengths, model mood explode the case space. In a product whose default input is unstructured, “tests green = done” almost never holds. Keeping prompts and validators tuned is closer to the main job.
If you cannot undo, it is not a handle
When rewrite misses, the next question is instant. Can I roll back?
First design treated rewrite like an editor aid. Instruction → draft → person saves. Not on the history/rollback path. Only space-wide AI bundles like organize batches and merges went to history.
Real use disagreed. Rewrite was slow and felt stuck. Synchronous model wait on the request path, weak progress, leave the page and the browser-held draft vanishes. What we labeled “instant UX” did not match the feel. Chat was similar: leave mid-answer and it feels gone.
So the words changed. Rewrite must be rollback-capable and must enter a queue. Chat may queue too, but separate from the wiki-mutation queue, and not tied to rollback. Do not mix “AI changed documents” and “one chat turn” on the same history line.
History grain tightened with it. Early talk floated commit-level views, whether summarize and auto-classify share one commit. Also a sense that people rarely undo one document at a time. Product choice kept that sense but kept git-commit UX off the surface. Git is storage audit and disaster recovery. What people see is one space AI action, full restore from the pre-action document snapshot. Organize batch reports summarize and end-of-batch confirm as one line. Rewrite applies to body when the job finishes and leaves one rewrite line. No draft panel “Apply” step. Locked docs refuse.
Once you open a handle, when intent and result diverge you need one-shot undo. Otherwise it is not a handle. It is a gamble.
It runs, and then you look closer
The skeleton is there. Management handles, rewrite validation, space history with undo/redo. Smokes exist. Real use turns the dial once in a while.
Look closer and a lot is still wrong. Awkward classify bins, keyword shards, clusters that should not merge, rewrite instructions that slip. Agent products take unstructured input and case counts explode. You cannot freeze criteria in one line. So smoke green and real cases keep diverging. Each time you stack another validation layer, pull a rule into code, or shorten a prompt.
What I want to leave is not one moral sentence. Build a wiki with AI and hand management is nearly impossible. Taste has to open as AI handles. Those handles are dangerous without validation and history. The day I asked for a title fix and the body vanished, that showed shortest.
Skeleton landed. Not finished. Running and trustworthy are still different layers. For a while, fixing prompts every time a case opens stays a job.