Skip to content

docs(roadmap): public engineering roadmap suite — roadmap, scale/HA, standalone scale#254

Merged
pilotspacex-byte merged 1 commit into
mainfrom
docs/roadmap-suite
Jul 9, 2026
Merged

docs(roadmap): public engineering roadmap suite — roadmap, scale/HA, standalone scale#254
pilotspacex-byte merged 1 commit into
mainfrom
docs/roadmap-suite

Conversation

@pilotspacex-byte

@pilotspacex-byte pilotspacex-byte commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the public engineering planning docs under docs/roadmap/ (kept off the published docs site via mkdocs.yml exclude_docs, same treatment as perf/):

  • ROADMAP.md — state-of-project at v0.6.0, features mindmap, release train v0.6.1 → v0.7 (replication GA) → v0.8 (cluster hardening) → v0.9 (enterprise foundation) → v1.0 GA, task-level execution plans, debt register, risks.
  • scale-ha-architecture.md — multi-shard PSYNC wire-format draft, failover timeline + fencing invariants, RPO/RTO contract tables, HA observability catalog, decision log.
  • standalone-horizontal-scale.md — 5-rung scaling ladder for durable non-cluster deployments, replica-swap resize, standalone→cluster migration path, anti-patterns.

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.yml strict build unaffected: roadmap/ added to exclude_docs (mirrors existing perf/ exclusion)
  • No source changes — CI is lint/docs-gate only for this PR

Summary by CodeRabbit

  • Documentation
    • Added a new roadmap section covering current status, release milestones, risks, and success measures.
    • Published architecture guidance for scaling, replication, high availability, and failover behavior.
    • Added a standalone scaling guide with step-by-step paths from single-node deployments to cluster mode.
    • Updated the published docs configuration so the roadmap content stays out of the public site.

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@TinDang97, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 31 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e91d625b-aa33-4142-99a2-3ec008ca353e

📥 Commits

Reviewing files that changed from the base of the PR and between 57ea796 and 51334ff.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/roadmap/ROADMAP.md
  • docs/roadmap/scale-ha-architecture.md
  • docs/roadmap/standalone-horizontal-scale.md
  • mkdocs.yml
📝 Walkthrough

Walkthrough

This PR adds three new internal-only roadmap documents under docs/roadmap/ (product roadmap, scale/HA architecture, and standalone horizontal-scale guide), excludes that directory from the published docs site via mkdocs.yml, and adds a corresponding changelog entry. No runtime code is changed.

Changes

Roadmap Documentation Suite

Layer / File(s) Summary
Product roadmap
docs/roadmap/ROADMAP.md
Adds a full v0.7→v1.0→Enterprise roadmap with status, reality-check table, vision/positioning, features mindmap, release train, debt register, risks, non-goals, task execution plans, and success metrics.
Scale/HA architecture deep dive
docs/roadmap/scale-ha-architecture.md
Adds architecture doc covering current sharding baseline, vertical scaling levers, multi-shard PSYNC replication design, failure semantics, cluster GA blockers/verification, durability/RPO-RTO contracts, fault-tolerance matrix, topology tiers, wire-format details, failover timeline, observability catalog, and decision log.
Standalone horizontal scale guide
docs/roadmap/standalone-horizontal-scale.md
Adds guide describing a scaling ladder (vertical, read replicas, functional split, client-side sharding, cluster), per-rung durability contracts, backup requirements, cluster migration path, and anti-patterns.
Site exclusion and changelog
mkdocs.yml, CHANGELOG.md
Excludes roadmap/ from the published docs site and logs the new documentation suite in the changelog.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • pilotspace/moon#162: Both PRs modify mkdocs.yml, with this PR extending exclude_docs on top of the MkDocs Material setup introduced there.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately summarizes the docs roadmap suite and its main areas: roadmap, scale/HA, and standalone scaling.
Description check ✅ Passed The description is mostly complete: it includes a clear summary and test plan, plus the docs-only and no-runtime-change details.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/roadmap-suite

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@TinDang97
TinDang97 force-pushed the docs/roadmap-suite branch from 55f781c to 57ea796 Compare July 9, 2026 18:14
@pilotspacex-byte pilotspacex-byte changed the title docs(roadmap): owner planning suite — roadmap, EE plan, scale/HA architecture docs(roadmap): public engineering roadmap suite — roadmap, scale/HA, standalone scale Jul 9, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between f9ad681 and 55f781c.

📒 Files selected for processing (7)
  • CHANGELOG.md
  • docs/roadmap/ROADMAP.md
  • docs/roadmap/case-study-helios-session-store.md
  • docs/roadmap/enterprise-edition.md
  • docs/roadmap/scale-ha-architecture.md
  • docs/roadmap/standalone-horizontal-scale.md
  • mkdocs.yml

Comment thread docs/roadmap/enterprise-edition.md Outdated
Comment on lines +134 to +145
```
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
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment on lines +11 to +24
```
┌──────────────────────── 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)
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment on lines +12 to +18
```
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)
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

@TinDang97
TinDang97 force-pushed the docs/roadmap-suite branch from 57ea796 to 5cc28dc Compare July 9, 2026 18:21

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 55f781c and 57ea796.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/roadmap/ROADMAP.md
  • docs/roadmap/scale-ha-architecture.md
  • docs/roadmap/standalone-horizontal-scale.md
  • mkdocs.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

Comment on lines +80 to +82
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ 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
@TinDang97
TinDang97 force-pushed the docs/roadmap-suite branch from 5cc28dc to 51334ff Compare July 9, 2026 18:44
@pilotspacex-byte
pilotspacex-byte merged commit 8b2c0c7 into main Jul 9, 2026
8 of 9 checks passed
pilotspacex-byte added a commit that referenced this pull request Jul 14, 2026
…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>
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.

2 participants