Skip to content

chore(privacy): scrub maintainer-local traces and third-party names before going public - #5

Closed
lmanchu wants to merge 2 commits into
rename-bopomixfrom
scrub-private
Closed

lmanchu wants to merge 2 commits into
rename-bopomixfrom
scrub-private

Conversation

@lmanchu

@lmanchu lmanchu commented Sep 13, 2026

Copy link
Copy Markdown
Owner

What

Removes the maintainer's local traces so the repository can go public. Stacked on #4 (rename-bopomix).

  • Personal name in code comments, test comments, eval tooling and the review records becomes "the maintainer" / 「維護者」; absolute home paths, scratch-directory paths and references to a private planning document are gone (58 mentions of the plan file across 19 files now read "the design notes").
  • The private evaluation corpus is no longer hard-wired: the two corpus-driven tests read BOPOMIX_EVAL_CORPUS and skip with a pointer to tools/eval/build_corpus.py when it is unset. xcodebuild does not pass its environment to the test host, so tools/eval/check_plist_unchanged.sh forwards the variable as TEST_RUNNER_BOPOMIX_EVAL_CORPUS; documented in tools/eval/README.md.
  • The review records under docs/ are published as they are (decision: keep the honest record), with one change: the corpus token dumps no longer name real people or the maintainer's employer, customers and partners — placeholders such as <name-2> / <company-1> keep the counts and conclusions intact.
  • Source/Data/latin-tech-seed.txt drops eight internal codenames that would have shipped inside the app bundle and outranked the dictionary (irisgo, tachikoma, hermes, gloria, apollo, argus, wells, magi); the six that are ordinary English words remain in the main dictionary at their normal rank.
  • .gitignore gains a generic eval-corpus/ entry; build_corpus.py's proper-noun example no longer names the maintainer's company.

Untouched on purpose: copyright lines, lmanchu in URLs and the bundle id, test method names, and the dictionary data.

Verification

  • Full suite, serial, without BOPOMIX_EVAL_CORPUS: 255 XCTest (2 skipped, the corpus tests) + 87 Swift Testing, PLIST_UNCHANGED / DATA_FOLDER_UNCHANGED.
  • With the maintainer's private corpus: 255/255, corpus tests run, baseline numbers unchanged (token retention 349/385 = 90.6%, pure-Chinese 4369/4586 = 95.3%, completion 76/330 = 23.0%, 95/330 = 28.8%).
  • git grep audit for every scrubbed pattern: remaining hits are dictionary rows and -i substring false positives only.

🤖 Generated with Claude Code

lmanchu and others added 2 commits September 13, 2026 20:10
Everything here is a private trace, not a behavior change: the maintainer's
name, local absolute paths, the out-of-repo private corpus location, and a
planning document that only ever existed on one machine.

- Person: "Lman" -> "the maintainer" / 「維護者」 in comments, .gitignore,
  tools/eval docs, and the review reports. Copyright lines keep the real
  name; so do the lmanchu GitHub URLs and the bundle id.
- Paths: /Users/lman/... -> ~/... or a description; a scratch-directory
  script reference loses its path.
- Design notes: ~/.claude/plans/zhuyin-ime-personal.md (and its bare
  filename) never existed in this repo, so every reference now reads "the
  design notes". The README sentence citing it is gone.
- Eval corpus: the two XCTest eval measurements read BOPOMIX_EVAL_CORPUS
  and XCTSkip when it is unset or missing, instead of hardcoding
  ~/Dev/mixime-private/eval200.tsv. check_plist_unchanged.sh forwards the
  variable as TEST_RUNNER_BOPOMIX_EVAL_CORPUS, which is the only spelling
  xcodebuild passes to the test host. build_corpus.py defaults to the
  gitignored eval-corpus/ directory; .gitignore's comment no longer names
  a private repo path.

docs/REVIEW-* and docs/REVERIFY-* keep their content and conclusions
verbatim -- only the private details inside them changed.

Verified: xcodebuild build succeeds; the suite is 255 tests green under
check_plist_unchanged.sh both with and without BOPOMIX_EVAL_CORPUS
(2 skipped without it), PLIST_UNCHANGED and DATA_FOLDER_UNCHANGED each
time, and BASELINE.md's numbers regenerate identically apart from latency.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…odenames

Follow-up to the previous scrub. The review reports quote samples of the
maintainer's private eval corpus verbatim, which leaked colleague names and
the customers/partners those notes are about; the shipped tech word list
carried the maintainer's own product codenames.

- Corpus token dumps and frequency counts in docs/REVIEW-P3-2026-09-11.md
  and docs/REVERIFY-P3-2026-09-12.md now use stable placeholders:
  people become <name-N>, the maintainer's company/customers/partners
  become <company-N>, their products become <product-N>. The same word
  always maps to the same placeholder, so the counts and the "how many of
  these are real proper nouns" conclusions still read correctly. Generic
  global brands already in the shipped lexicon (google, computex, Stripe,
  Apple, Electron) stay as they are.
- Source/Data/latin-tech-seed.txt: dropped irisgo, tachikoma, hermes,
  gloria, apollo, argus, wells and magi. The first two are private names
  that exist nowhere else; the other six are internal system codenames
  that were outranking the whole dictionary for words a public user has no
  reason to want boosted. All six remain available from latin-words.txt.
  Ranks are explicit per row, so the resulting gaps change nothing.
- tools/eval/build_corpus.py: the synthetic-padding token list no longer
  names the maintainer's company, and says to swap in your own.

Verified: xcodebuild build succeeds; 255 tests green under
check_plist_unchanged.sh without BOPOMIX_EVAL_CORPUS (2 skipped), with
PLIST_UNCHANGED and DATA_FOLDER_UNCHANGED; the built app's bundled
latin-tech-seed.txt no longer contains any of the removed terms.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@lmanchu

lmanchu commented Sep 13, 2026

Copy link
Copy Markdown
Owner Author

Merged into master through #6 (readme-public was stacked on scrub-private, so both commits a53d43d and 467edb4 are in master via merge commit 3083107). GitHub closed this PR when its base branch was deleted; nothing was lost.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant