mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-28 09:53:36 +00:00
Establishes ruvnet/ruvector as the canonical source and ruvnet/RuLake
as a read-only mirror. Implements "option C" — no submodules, no
workspace-inheritance rewrites, no `--recursive` tax on contributors.
Trigger: push to `main` touching either
- crates/ruvector-rulake/** (the whole crate: src, tests, examples,
Cargo.toml, README, BENCHMARK, …)
- docs/adr/ADR-15[5-8]-* (the four ruLake ADRs)
- the workflow itself
plus a workflow_dispatch for manual re-syncs.
RuLake repo layout after sync:
/
├── README.md hand-maintained landing page, never overwritten
├── LICENSE-MIT hand-maintained
├── LICENSE-APACHE hand-maintained
├── MIRROR.md tombstone explaining read-only status (written by the workflow)
├── crate/ ← rsync'd from crates/ruvector-rulake/
│ ├── Cargo.toml (workspace-inheritance preserved; consumers
│ │ who clone RuLake standalone see the manifest
│ │ as-is, but the canonical build is from the
│ │ monorepo so this is non-blocking)
│ ├── src/ tests/ examples/ BENCHMARK.md …
└── docs/adr/ ← cp'd, only ADR-155…158
├── ADR-155-rulake-datalake-layer.md
├── ADR-156-rulake-as-memory-substrate.md
├── ADR-157-optional-accelerator-plane.md
└── ADR-158-optional-rotation-and-qvcache-positioning.md
rsync --delete keeps the mirror an exact reflection; when a file is
removed from the monorepo, it vanishes from the mirror on the next
sync. Commit message on RuLake is `mirror: ruvnet/ruvector@<12-char>`
with a body carrying the full 40-char sha + provenance note.
Concurrency: serialized via `group: mirror-rulake` so a quick
back-to-back push doesn't race two sync jobs.
ONE-TIME SETUP (blocking the first sync until done):
1. Generate a fine-grained PAT at
github.com/settings/personal-access-tokens/new
scoped to repo: ruvnet/RuLake, permissions:
Contents: Read and write
2. Add it as a Repository secret on ruvnet/ruvector named
RULAKE_MIRROR_PAT
3. Merge this PR and verify the first run succeeds
(workflow_dispatch lets you trigger manually).
4. Optional post-merge: update the README at ruvnet/RuLake to
point file references at `crate/...` (currently they link to
the ruvector monorepo paths; after first sync, both work but
local paths are cleaner).
Why not option A (submodule): forces every contributor to run
`git submodule update --init`, forces a Cargo.toml rewrite that
loses workspace inheritance, splits PR #373's history in two.
Option C keeps all tooling working and RuLake always current.
Co-Authored-By: claude-flow <ruv@ruv.net>
|
||
|---|---|---|
| .. | ||
| agentic-synth-ci.yml | ||
| benchmarks.yml | ||
| build-attention.yml | ||
| build-diskann.yml | ||
| build-gnn.yml | ||
| build-graph-node.yml | ||
| build-graph-transformer.yml | ||
| build-native.yml | ||
| build-router.yml | ||
| build-rvf-node.yml | ||
| build-tiny-dancer.yml | ||
| build-verified.yml | ||
| ci.yml | ||
| copilot-setup-steps.yml | ||
| docker-publish.yml | ||
| edge-net-models.yml | ||
| hooks-ci.yml | ||
| mirror-rulake.yml | ||
| postgres-extension-ci.yml | ||
| publish-all.yml | ||
| RELEASE-FLOW.md | ||
| release-rvf-cli.yml | ||
| RELEASE.md | ||
| release.yml | ||
| ruvector-postgres-ci.yml | ||
| ruvllm-benchmarks.yml | ||
| ruvllm-build.yml | ||
| ruvllm-native.yml | ||
| ruvltra-tests.yml | ||
| sona-napi.yml | ||
| sync-rvf-examples.yml | ||
| thermorust-ci.yml | ||
| ui-ci.yml | ||
| validate-lockfile.yml | ||
| wasm-dedup-check.yml | ||