docs(roadmap): public engineering roadmap suite — roadmap, scale/HA, standalone scale#254
Conversation
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
Warning Review limit reached
Next review available in: 31 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR adds three new internal-only roadmap documents under ChangesRoadmap Documentation Suite
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
55f781c to
57ea796
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/roadmap/enterprise-edition.md`:
- Around line 134-145: The anonymous fenced block in the enterprise edition
roadmap is triggering markdownlint MD040; update the fence in the relevant
section of enterprise-edition.md to explicitly use a text language tag. Keep the
repo-layout listing unchanged, and only adjust the markdown fence so the block
is recognized as text by the linter.
In `@docs/roadmap/scale-ha-architecture.md`:
- Around line 11-24: The fenced diagram/snippet blocks in this roadmap doc are
missing language tags and are triggering MD040. Update each affected fenced
block to use the text language tag so the markdown linter treats them as plain
text; fix the unlabeled fences in the roadmap sections that contain the
architecture diagrams and snippets, keeping the content unchanged.
In `@docs/roadmap/standalone-horizontal-scale.md`:
- Around line 12-18: The fenced examples in the roadmap doc are missing language
tags, causing MD040 warnings. Update the unlabeled fenced blocks around the rung
diagrams and the config example to use the appropriate identifiers, specifically
tagging the diagram-style fences as text and the config block as bash. Make the
same tagging change for the other referenced fenced sections in the document so
all examples are consistently labeled.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: be8fff36-9324-4491-b042-222200a239c9
📒 Files selected for processing (7)
CHANGELOG.mddocs/roadmap/ROADMAP.mddocs/roadmap/case-study-helios-session-store.mddocs/roadmap/enterprise-edition.mddocs/roadmap/scale-ha-architecture.mddocs/roadmap/standalone-horizontal-scale.mdmkdocs.yml
| ``` | ||
| github.com/pilotspace/moon (public, Apache-2.0) — everything in CE | ||
| github.com/pilotspace/moon-ee (private) — additive crates only | ||
| crates/ee-license/ signed-key parsing + entitlement checks (also vendored into CE as | ||
| a no-op stub so CE code can call `ee::is_licensed(Feature::X)`) | ||
| crates/ee-crypto-kms/ AWS KMS / Vault / PKCS#11 key providers behind the CE key-provider trait | ||
| crates/ee-audit-sinks/ CEF/Splunk/OTLP-logs exporters behind the CE audit-sink trait | ||
| crates/ee-dr/ cross-DC replication observer, promotion coordinator | ||
| crates/ee-console/ SSO (OIDC/SAML/LDAP) for the admin console, tenant SLO reports | ||
| crates/ee-operator/ fleet CRDs layered on the CE operator core | ||
| bin/moon-enterprise/ links moon (CE, as a git/registry dep) + ee crates | ||
| ``` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Label the repo-layout fence.
The anonymous code fence here is tripping MD040. Mark it as text so markdownlint stays green.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 134-134: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/roadmap/enterprise-edition.md` around lines 134 - 145, The anonymous
fenced block in the enterprise edition roadmap is triggering markdownlint MD040;
update the fence in the relevant section of enterprise-edition.md to explicitly
use a text language tag. Keep the repo-layout listing unchanged, and only adjust
the markdown fence so the block is recognized as text by the linter.
Source: Linters/SAST tools
| ``` | ||
| ┌──────────────────────── moon process ───────────────────────┐ | ||
| clients ──SO_REUSEPORT┤ shard 0 (core 0) shard 1 (core 1) … shard N (core N) │ | ||
| RESP2/3 │ ┌─────────────┐ ┌─────────────┐ │ | ||
| │ │ event loop │◄──►│ event loop │ SPSC rings (flume/ │ | ||
| │ │ DashTable │ │ DashTable │ ringbuf), no locks │ | ||
| │ │ VectorStore │ │ VectorStore │ on write path │ | ||
| │ │ Graph/FTS │ │ Graph/FTS │ │ | ||
| │ │ WAL v3+AOF │ │ WAL v3+AOF │ per-shard durability │ | ||
| │ └─────────────┘ └─────────────┘ │ | ||
| │ listener runtime: admin HTTP, cluster bus*, gossip* │ | ||
| └──────────────────────────────────────────────────────────────┘ | ||
| * today spawned only under runtime-tokio (gap: monoio wiring) | ||
| ``` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Tag the fenced diagrams and snippets.
These unlabeled fences are all triggering MD040. Use text for the diagrams/snippets so the docs lint job passes.
Also applies to: 61-70, 188-191, 195-205, 209-214, 235-246
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 11-11: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/roadmap/scale-ha-architecture.md` around lines 11 - 24, The fenced
diagram/snippet blocks in this roadmap doc are missing language tags and are
triggering MD040. Update each affected fenced block to use the text language tag
so the markdown linter treats them as plain text; fix the unlabeled fences in
the roadmap sections that contain the architecture diagrams and snippets,
keeping the content unchanged.
Source: Linters/SAST tools
| ``` | ||
| rung 0: vertical --shards N, busy-poll, NUMA pinning 1 node | ||
| rung 1: read replicas 1 durable master + K read replicas (v0.7) 1 write node | ||
| rung 2: functional split cache node / vector node / graph node per-workload nodes | ||
| rung 3: client-side shards M independent durable masters, hashed client-side | ||
| rung 4: cluster mode slots + auto-failover + live rebalance (v0.8) | ||
| ``` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Tag the fenced examples.
These unlabeled fences are also tripping MD040. Add text for the diagrams and bash for the config block.
Also applies to: 27-32, 52-59
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 12-12: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/roadmap/standalone-horizontal-scale.md` around lines 12 - 18, The fenced
examples in the roadmap doc are missing language tags, causing MD040 warnings.
Update the unlabeled fenced blocks around the rung diagrams and the config
example to use the appropriate identifiers, specifically tagging the
diagram-style fences as text and the config block as bash. Make the same tagging
change for the other referenced fenced sections in the document so all examples
are consistently labeled.
Source: Linters/SAST tools
57ea796 to
5cc28dc
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/roadmap/scale-ha-architecture.md`:
- Around line 80-82: `WAIT` and the ACK tracking described in the ACK plumbing
section are currently using a single global offset, which can be satisfied by
unrelated shard progress; update the `ReplicaInfo.ack_offsets`/`REPLCONF ACK`
handling and the `WAIT numreplicas timeout` comparison to use per-shard offsets
or an equivalent vector watermark so the check is shard-aware rather than
scalar.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 24abca68-7caf-4c28-b6fa-968525794427
📒 Files selected for processing (5)
CHANGELOG.mddocs/roadmap/ROADMAP.mddocs/roadmap/scale-ha-architecture.mddocs/roadmap/standalone-horizontal-scale.mdmkdocs.yml
✅ Files skipped from review due to trivial changes (3)
- mkdocs.yml
- CHANGELOG.md
- docs/roadmap/ROADMAP.md
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/roadmap/standalone-horizontal-scale.md
| 4. **ACK plumbing (blocking bug today)**: master's post-PSYNC loop must `select!` on socket reads, | ||
| parse `REPLCONF ACK`, and store into `ReplicaInfo.ack_offsets` (today initialized to 0 and never | ||
| written). `WAIT numreplicas timeout` then compares acked global offset ≥ issue-time offset. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
Make WAIT shard-aware. A summed global offset can be satisfied by unrelated progress on other shards before the shard that carried the write has actually caught up, so the RPO/ack guarantees in this section are too strong as written. Compare per-shard offsets (or another vector watermark) instead of a single scalar.
Also applies to: 219-223
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/roadmap/scale-ha-architecture.md` around lines 80 - 82, `WAIT` and the
ACK tracking described in the ACK plumbing section are currently using a single
global offset, which can be satisfied by unrelated shard progress; update the
`ReplicaInfo.ack_offsets`/`REPLCONF ACK` handling and the `WAIT numreplicas
timeout` comparison to use per-shard offsets or an equivalent vector watermark
so the check is shard-aware rather than scalar.
…standalone scale Adds docs/roadmap/ (excluded from the published MkDocs site via exclude_docs — planning docs, same treatment as perf/): - ROADMAP.md: honest state-of-project at v0.6.0, features mindmap (mermaid), release train v0.6.1→v0.7 (replication GA)→v0.8 (cluster hardening)→v0.9 (enterprise foundation)→v1.0 GA, task-level execution plans with code anchors + verification, debt register (shardslice waiver 2026-08-01, cold-tier TTL leak, ACL registry bypass), risks. - scale-ha-architecture.md: multi-shard PSYNC wire-format draft (capability-negotiated mux over per-shard WAL v3 streams), WAIT/ACK plumbing fix plan, failover timeline + fencing invariants, RPO/RTO contract tables, HA observability catalog, decision log D-1..D-5. - standalone-horizontal-scale.md: 5-rung scaling ladder for durable non-cluster deployments (vertical → read replicas → functional split → client-side shards → cluster), replica-swap resize playbook, standalone→cluster migration path, field anti-patterns. Commercial/EE planning (licensing, pricing, launch phases) is deliberately NOT in this public repo; the open-core commitment stated here is: the Apache-2.0 core never loses features. author: Tin Dang
5cc28dc to
51334ff
Compare
…sed] + resolve PR #TBD placeholders (#330) The v0.6.0 tag (355f68d, 2026-07-10) absorbed several PRs that merged after the v0.6.0 release PR itself but before the tag was cut. Their changelog entries were left under [Unreleased], understating what shipped in the tagged v0.6.0 binary. Audit (task #65, v0.7.0 roll-up prep) identified 23 sections whose PR merge commits are verified ancestors of v0.6.0 via `git merge-base --is-ancestor`: PR #248 (FastScan SIMD, SQ8 default, TQ ADC L2 fix, EF_RUNTIME FT.CONFIG, RERANK_MULT+EXACT_BEAM, CLI/moon.conf tuning defaults), PR #250 (13 production-hardening sections), PR #251 (COLD-segment reload off event loop), PR #254 (roadmap docs suite), PR #255 (CI macOS 30m), PR #256 (v0.6.0 ledger closure). Moved verbatim to a new subsection at the top of [0.6.0], with a note explaining the absorption. Sections from PR #252, #253, and #257-#263 were verified NOT ancestors of v0.6.0 and correctly remain in [Unreleased]. Also resolves the "PR #TBD" placeholders left by those sections (now #248, #257, #261) now that the real PR numbers are known. Section-count invariant holds (306 before, 306 after); content unchanged except for the PR-number substitutions. author: Tin Dang Co-authored-by: Tin Dang <tindang.ht97@gmail.com>
Summary
Adds the public engineering planning docs under
docs/roadmap/(kept off the published docs site viamkdocs.ymlexclude_docs, same treatment asperf/):Commercial/EE planning (licensing, pricing, launch phases) is deliberately excluded from this public repo and maintained privately. The open-core commitment stated publicly: the Apache-2.0 core never loses features.
Docs only — no runtime code changes. CHANGELOG
[Unreleased]entry included for the Lint gate.Test plan
mkdocs.ymlstrict build unaffected:roadmap/added toexclude_docs(mirrors existingperf/exclusion)Summary by CodeRabbit