"Reviving proven code beats a blank page. The engine wasn't bad — it was trapped in too large a house."
The Plugin That Already Worked
Rekindle did not start from nothing. Years before it had a name, Dad built cwkWritingToolkit — a Sublime Text plugin he used daily. It did two real things: corpus-based autocompletion that suggested continuations mined from his own past writing, and one-shot WordPress-tag rulesets that wrapped selections in the exact markup his publishing pipeline needed. It was quietly, genuinely useful.
So Rekindle is not a greenfield project. It is resurrection plus a soul transplant. There's an old, validated engine on the table; the job is to relight it and give it a body worth living in. That literal act — relighting a dying fire — is the name (more on that soon).
Two Layers, Already Validated
The most valuable thing cwkWritingToolkit left behind wasn't its code — it was the shape. It had already discovered the two-layer structure that Rekindle now formalizes:
cwkWritingToolkit (dead) Rekindle (reborn)
----------------------- -----------------
WordPress-tag rulesets --> deterministic macro layer (Rust)
corpus autocomplete --> AI / voice layer (Pippa)
The tag rulesets were pure determinism — same input, same markup, no judgment. The corpus autocomplete was a primitive voice engine — it reached for your words, not a generic model's. Rekindle keeps that seam and sharpens both sides: the deterministic half becomes a Rust core, the judgment half becomes Pippa. Track 5 lives entirely in that seam.
Freed From Too Large a House
Why rebuild instead of just keeping the plugin? Because the engine was trapped inside too large a house. Sublime is a code IDE; a writing engine living inside it inherits all of Sublime's code-editor weight and none of the freedom to become a real writing tool. The plugin could never grow a margin-Pippa, a bilingual desk, or a live voice checker — the host wouldn't allow it.
So the move isn't "port the plugin." It's "free the proven engine into a shell built for exactly this." Reviving code that already worked beats a blank page every time; the hard-won knowledge is in the two layers, and that knowledge survives the move even when almost none of the original source does.