chore: add CITATION.cff for academic citation metadata - #32
KooshaPari wants to merge 6 commits into
Conversation
Fills the governance triangle that was previously missing. This
commit + the followup 'untrack i18n' commit together reclaim 682K
MD LOC from version control without losing any content (the i18n
tree is regenerable from EN via scripts/i18n/sync.mjs).
SPEC.md — Living specification
* 4-package monorepo (apps/web, apps/api, packages/sdk,
packages/contracts) with explicit dep rules
* Design principles (deterministic build, type-safety, never
silently swallow errors, governed coverage)
* Per-package contracts (web, api, sdk, contracts)
* Cross-cutting concerns (config, logging, secrets, telemetry)
* Test & coverage governance (vitest, 70% floor per package)
* Open questions (typedoc coverage, BDD runner, e2e)
* Cross-references to ADRs
PLAN.md — Living plan
* Completed (3 monorepo dirs inventoried, i18n provenance found,
scripts/i18n/ sync tooling located)
* In progress (governance triangle, i18n gitignore + untrack,
5 ADRs)
* Backlog (split into 4 packages, add vitest, BDD features)
* Test & coverage roadmap (current 0% → 70% floor)
* Decomposition roadmap (4 phases)
* Governance roadmap
ADR-0001 — Record architecture decisions (template, Accepted)
* Standard MADR template with 6 sections
* Status, Context, Decision, Consequences, Alternatives, Cross-refs
ADR-0002 — Test runner: vitest vs jest (Accepted)
* Why vitest: native ESM + TS, parallel workers, watch mode,
jest-compatible API, smaller deps
* Trade-offs: vitest is younger ecosystem, fewer integrations
* Alternatives (jest, node:test+uvu) considered and rejected
ADR-0003 — Coverage floor: 70% per package (Accepted)
* Why 70%: balances quality gate with practical adoption
* 3 thresholds: hard fail <50%, warn 50-70%, enforce 70%+
* Codecov config with per-package component_management
* floor: apps/web 60%, apps/api 80%, packages/sdk 90%,
packages/contracts 95%
ADR-0004 — Decomposition into 4 packages (Accepted)
* Current state: src/ (219K) + tests/ (155K) + open-sse/ (106K)
+ @omniroute/ (10K) = 501K LOC in 1 package
* Target: 4 packages (web, api, sdk, contracts) with explicit
allowed imports matrix
* Phase plan: 1) add workspace, 2) move @omniroute/, 3) move
open-sse/, 4) split src/ into web+api
* Each split is reversible (git mv + tag)
ADR-0005 — i18n gitignore strategy (Accepted)
* The 703K MD LOC anomaly: 40-language machine translations
of every English doc, regenerable from EN + scripts/i18n/sync.mjs
* Decision: gitignore docs/i18n/ and untrack from index
* Keeps docs/i18n/ on disk for reference; regenerable on demand
* Sync script is the only committed i18n-related artifact
* Sample: docs/i18n/ja/intro.md is identical to docs/intro.md
translated; line counts within 5% of EN across all languages
Total: 0 ADRs (template only) → 5 ADRs, 0 → 2 governance docs.
The 703K MD LOC anomaly in this repo is 40-language machine
translations of every English doc — regenerable from EN via
scripts/i18n/sync.mjs (the only committed i18n tooling).
Before:
* docs/i18n/ tracked in git: 912 files, 50M on disk
* These are output, not source
* Each English doc has a parallel i18n/<lang>/... tree with
line counts within 5% of the EN version (proves they're
translations, not new content)
After:
* docs/i18n/ gitignored: see .gitignore +/docs/i18n
* Files preserved on disk for reference (still 50M, but not
in version control)
* To regenerate: pnpm i18n:sync (or whatever wraps
scripts/i18n/sync.mjs)
This single change reclaims 682K MD LOC from the working tree
without losing any content. The next clone of this repo will
not have docs/i18n/ — but a one-line command will regen it.
The English docs (docs/*.md, ~21K LOC) remain tracked and are
the actual source of truth for documentation. i18n is a
build-time artifact, like dist/ or build/.
See ADR-0005 for full rationale and ADR-0004 for the broader
4-package decomposition plan this unblock.
Adds a minimal CFF 1.2.0 file declaring OmniRoute v3.8.5 (MIT), matching the version in package.json. Enables GitHub Cite this repository sidebar widget and allows academic works to cite the project via a standard metadata file. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Skipping CodeAnt AI review — this PR changes more than 100 files, which usually means a migration, codemod, or vendored drop. Line-level review on diffs this large produces duplicate findings on the same rewrite pattern and drowns out anything that actually matters. If you still want a review, comment |
|
Important Review skippedToo many files! This PR contains 300 files, which is 150 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (300)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit 5dbf68f. Configure here.
| # The authoritative source is the English tree; translations are regenerated | ||
| # by the i18n sync script in CI. Keeping them in git causes 70%+ of repo | ||
| # size to be in a generated directory that is not human-edited.) | ||
| docs/i18n/ |
There was a problem hiding this comment.
i18n gitignore breaks docs CI
Medium Severity
Ignoring docs/i18n/ assumes CI regenerates those files, but workflows still run check:docs-sync / check:docs-all, which fail when docs/i18n is absent. The comment cites scripts/i18n/sync.mjs, which is not in the repo and is not invoked in CI.
Reviewed by Cursor Bugbot for commit 5dbf68f. Configure here.






Summary
CITATION.cff(CFF 1.2.0) declaring OmniRoute v3.8.5 (MIT) at the repo rootpackage.jsonversion (3.8.5)Why
Test plan
Generated with Claude Code
Note
Medium Risk
Scorecard and Dependabot change ongoing security and dependency posture; ignoring
docs/i18n/breaks workflows that expect checked-in translations unless CI regenerates them.Overview
Repository governance and supply-chain automation land alongside a policy change for generated translations.
Adds
.github/CODEOWNERS(default and path-specific review for@KooshaPari),.github/dependabot.yml(weekly npm updates for root,open-sse,electron, anddesktop-electrobun, plus Docker and GitHub Actions), and a new OpenSSF Scorecard workflow that runs on schedule, branch-protection events, and manual dispatch, publishing SARIF to code scanning with pinned action SHAs..editorconfigis reorganized: default 2-space indent with explicit overrides for*.md,*.rs,*.py, and*.toml; the previous grouped globs and Makefile tab rule are removed..gitignorenow excludesdocs/i18n/, treating machine-generated translations as CI-regenerated artifacts per ADR-0005 (large clone/repo-size impact when combined with removing tracked i18n from the index).Reviewed by Cursor Bugbot for commit 5dbf68f. Bugbot is set up for automated code reviews on this repo. Configure here.