-
Notifications
You must be signed in to change notification settings - Fork 3
Wiki Log
Won-Kyu Park edited this page Aug 28, 2026
·
5 revisions
Append-only ingest history for this wiki.
- Source:
simple_rcs/*.py,tools/*.py,README.md,pyproject.toml,tests/unit_tests/(direct source reading, no external notes) - Tier: Current system
- Created: Home, System Overview, Source Code Map,
Storage Format, Diff Engines, CLI Tools, and their
-encounterparts (12 pages total) - Updated: n/a (first pass)
- Notes: Verified against current source, not just README prose —
_format_block/calculate_block_hashread directly for Storage Format, public method list read directly for Source Code Map, CLI argument lists read directly from eachtools/*.pyfor CLI Tools.README.md's comparison table and feature list were used as a cross-check, not copied verbatim.
- Source:
docs/wiki_backend_design.mdin the mainSimpleRCSrepository (design notes + real SQLite benchmarks from an earlier session on using SimpleRCS as a wiki-page version-control backend) - Tier: Current analysis / design notes (storage-backend benchmarks are verified/reproducible; the "recommended direction" section is a proposal, not implemented)
- Created: Wiki Backend Design (Korean only — no English counterpart yet)
- Updated: Home, Home (English) link sections
- Notes: Moved, not duplicated — the file no longer exists under
docs/in the main repo. Benchmark scripts referenced from this page live in the main repo'sscripts/, not in this wiki.
- Source: re-run of
scripts/wiki_sqlite_bench.pyin the main repo, after fixingSimpleRCS.commit()returning the whole stream instead of the version string on in-memory (BytesIO) instances - Tier: Current analysis (measured, reproducible)
- Created: n/a
- Updated: Wiki Backend Design §5-1 table and commentary, §5-2 per-commit timings
- Notes: The old §5-1 numbers stored a full stream copy in the
versioncolumn, which inflated design B. Design B is in fact flat as the theory predicts; the earlier "B gets slower than A" claim was a measurement artifact and is now retracted in place. The page's conclusion (a single BLOB column is good enough at wiki scale) is unchanged.
- Source:
simple_rcs/simple_rcs.pycommit()write path; RLIMIT_FSIZE interruption sweep run against a real commit; GNU RCS 5.10.1 source (src/rcsedit.c,src/b-fro.c,src/base.h) and itsci/cobinaries; git source (lockfile.h,write-or-die.h,pack-write.c,object-file.c); Mercurial 7.2.4 source (transaction.py,revlog.py,revlogutils/deltas.py) plus a 401-commit repo built by running hg from that source tree - Tier: Current analysis (failure map and cross-system comparison are measured and reproducible) + plan/proposal (options A/B/C and the recommendation are not implemented)
- Created: Write Durability
- Updated: Home design-notes section
- Notes: Every cross-system claim was read out of source or reproduced, not
recalled. Two things that contradicted the initial framing and were corrected
in place: RCS is a hybrid (trunk reverse-delta, branch forward-delta —
verified by inspecting a branched
,v), and RCS's full rewrite is worse than our tail rewrite on the bit-flip axis even though it is better on the crash axis, because every commit passes the whole history through RAM andrename()then makes the corruption atomic and undetectable. Theverify()KeyError found during this work is fixed separately in PR #17; the rest is unimplemented.
- Source:
simple_rcs/simple_rcs.py(_rewrite_head,_atomic_rewrite_head,_copy_prefix, constructor),simple_rcs/codec.py(encode_binary),simple_rcs/gitpatch.py, eachtools/*.pyargparse block, CPython'sshutil(_USE_CP_SENDFILE), plus timing and crash-injection runs against real stores. SimpleRCS PRs #19–#25. - Tier: Current system (implemented and merged; released as 0.2.6)
- Created: Plan Atomic Commit
- Updated: Storage Format, Source Code Map, System Overview,
CLI Tools and their
-encounterparts; Write Durability §8; Home - Notes: The core pages had not been touched since the 2026-08-04 ingest and
had drifted in ways that mattered. Storage Format still described the
commit as an in-place
seek/write/truncateover the live HEAD — that is now only the memory/caller-stream path — and still documented the binary field as;base64,when the tag is one ofraw/base64/base85, escaping is unconditional, and the length counts post-escape bytes. The@parity rule that makes block framing decidable was not written down anywhere. Source Code Map was missinggitpatch.pyandmatchers.py,get_bytes(), and had stale counts (1,848 lines / 61 tests, now 2,344 / 186). CLI Tools was missingsrcs_commit --encodingandsrcs_diff --binary. - Correction found while verifying: the CLI Tools
srcs_diffexamples were wrong from the first ingest — they passedmy_doc.txt.srcs, but the tool resolves the tracked file name and would look formy_doc.txt.srcs.srcs. Every command on the page was re-run before being written down; the--binaryexample is a verifiedgit apply/git apply -Rround-trip. The inconsistency it exposed (three tools take the.srcspath, two take the tracked file, one takes either) is recorded rather than papered over.