Skip to content

ci(docs): add a Korean prose style gate over the public docs#417

Merged
haksungjang merged 1 commit into
mainfrom
ci/ko-style-gate
Jul 16, 2026
Merged

ci(docs): add a Korean prose style gate over the public docs#417
haksungjang merged 1 commit into
mainfrom
ci/ko-style-gate

Conversation

@haksungjang

Copy link
Copy Markdown
Member

Why

The Korean style rules (translation-ese, notation, terminology) were enforced only by a local editing hook. Commits from other machines bypassed them entirely — the same path that previously let AI-styled prose and notation drift into the repo. The readability cleanup (#415) fixed the measured cases; this PR keeps them fixed.

What

  • scripts/ko-style/lint.mjs + patterns.json: self-contained line-regex linter (node stdlib only), scoped to the public docs surface — docs/ minus maintainers/, the READMEs, CONTRIBUTING.md. The changelog, license inventories, and the style guide itself (it must quote the anti-patterns it bans) are excluded. Rule taxonomy after epoko77-ai/im-not-ai (MIT).
  • New terminology rules encoding the decisions recorded in korean-style-guide.md: 디렉터리/배지 spellings (S1), 컬럼→열, 리포트→보고서(문서)/제보(동사), coined 정합화 (S2).
  • CI: a Doc Coverage step runs the gate (--no-baseline, fails on S1/S2) plus a self-test — it generates a fixture with known violations and requires the linter to fail on it, so a broken catalog cannot pass silently.
  • The gate immediately proved itself: six live violations the manual cleanup missed are fixed in this PR (리포트 uses in cli.ko.md, testing.ko.md, ai-model.ko.md, CONTRIBUTING.md; one 디렉토리 in docker/README.md).

Verification

  • node scripts/ko-style/lint.mjs --all --no-baseline — 65 files, 0 findings
  • Self-test locally reproduces the CI step: fixture trips the linter (S1 2 / S2 2), exit 1
  • tests/check-docs-drift.sh, mkdocs build --strict — pass

The Korean style rules lived only in a local editing hook, so commits
from machines without that hook (the path AI-styled prose and notation
drift took into the repo before) reached main unchecked.

Vendor the line-regex style linter into scripts/ko-style/ (engine +
rule catalog; taxonomy after epoko77-ai/im-not-ai, MIT) and run it in
the Doc Coverage job over the public documentation surface — docs/
minus maintainers, the READMEs, CONTRIBUTING — failing on S1/S2.
The step also lints a generated fixture and requires it to FAIL, so a
broken rule catalog cannot pass silently. The style guide itself is
excluded: it has to quote the very anti-patterns it bans.

New terminology rules encode the decisions recorded in
korean-style-guide.md: 디렉터리/배지 spellings (S1), 컬럼→열,
리포트→보고서/제보, and the coined 정합화 (S2). Running the gate
surfaced six live violations the manual pass had missed — 리포트
verb/noun uses in cli.ko.md, testing.ko.md, ai-model.ko.md and
CONTRIBUTING.md, and one 디렉토리 in docker/README.md — fixed here.
@haksungjang
haksungjang merged commit 9aa3da3 into main Jul 16, 2026
34 checks passed
@haksungjang
haksungjang deleted the ci/ko-style-gate branch July 16, 2026 09:29
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