Skip to content
C.W.K.
Stream
Lesson 01 of 05 · published

The Replica Program

~12 min · v4, replica, answer-key, parity-ledger, rewrite

Level 0Cold Draft
0 XP0/38 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"Don't ask whether the rewrite looks done. Ask the original — it's still running."

Born Beside the Running Original

On 2026-09-10 the family made a decision that sounds reckless and isn't: rebuild Rekindle — all of it — as a native Swift app, while Dad keeps using the Tauri one. No feature freeze on the old app, no flag day, no 'we'll know it's ready when it feels ready.' The new tree (it carried the temporary name Kindling until the cutover) had one spec: the original is an executable answer key. Whatever the new app needed to do was already observable in the running one — every menu, every IME edge case, every failure behavior.

That's the move that separates this rewrite from the graveyard of rewrites. The old app isn't legacy to escape; it's the test suite you can watch. 'Complete replica of the same product' is a goal you can verify precisely because the answer is still executing next door.

The Parity Ledger

The program's spine is a tracked ledger, not a feeling. Every surface of the original — writing shell, text primitives, Markdown editing, metadata, AI editing, voice, split view, files and recovery, the Pippa integration, offline behavior, the integrations — got rows, and every row carried a state:

unexamined                not looked at yet
missing                   known-absent in the replica
implemented-unverified    code exists, no evidence
verified                  dated installed evidence
regressed                 it worked, then it didn't

# The gate rule: unknown is not passed.
# A row you haven't examined is a row that failed.

Compare like with like or it doesn't count: same content, window size, theme, zoom, focus. Compare action sequences, saved bytes, metadata, failure behavior, recovery. A passing compile is not parity; a terminal build is not an installed product. The ledger is where 'the rewrite is basically done' goes to die — and where, one dated row at a time, 'done' actually arrives.

Code First, Verify on Approval

One sequencing call is worth stealing. Mid-program, Dad ordered: complete every feature in source first, defer the test/build/comparison passes, commit and push the unverified work, then stop. Verification resumed later, by explicit decision, in grouped batches. That's the opposite of the usual instinct (verify each slice as you go), and it fit a one-user program with an AI crew: the expensive, scarce resource was Dad's attention, and a wall of verified-nothing-yet code is cheaper than a dozen half-interrupted verification loops. The written gate stayed strict — before replacement, every scenario verified, no unknowns, no missing features, no regressions, a rehearsed return path. The honest footnote is who judges the gate: the cutover was ordered with the ledger still partial (about eighteen verified rows against a hundred-plus implemented-unverified), because the archived return path made the risk reversible. The contract set the bar; the owner's documented judgment decided when to walk through it.

Code

The ledger states — and the one rule that makes them honest·text
unexamined                not looked at yet
missing                   known-absent in the replica
implemented-unverified    code exists, no evidence
verified                  dated installed evidence
regressed                 it worked, then it didn't

# Unknown is not passed. A row you haven't examined is a row that failed.
# Compare like with like: same content, window, theme, zoom, focus.
# A green compile is not parity. An installed, evidenced row is.

External links

Exercise

Take a tool you use daily and imagine rewriting it natively. Before writing any code, draft the first ten rows of its parity ledger: the surfaces you'd have to reproduce (including the boring ones — settings, recovery, export). Mark each with the state it would start in. Notice how the exercise alone changes 'rewrite it' from a mood into a work list.
Hint
The rows you forgot to write are the point. Ask someone who uses the tool differently than you, or watch your own week: the third time you reach for a feature is when it earns a row.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.