mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-21 02:28:07 +02:00
Merge branch 'main' into ragnorc/index-best-practices-audit
This commit is contained in:
commit
f81f046543
3 changed files with 8 additions and 60 deletions
9
.github/branch-protection.json
vendored
9
.github/branch-protection.json
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_comment": "Branch protection policy for main. Applied via scripts/apply-branch-protection.sh. See docs/branch-protection.md for rationale.",
|
"_comment": "Branch protection policy for main. Applied via scripts/apply-branch-protection.sh. See docs/branch-protection.md for rationale. NOTE: bypass_pull_request_allowances.users must mirror the engineering owners in .github/codeowners-roles.yml — code owners merge their own PRs without a second review; non-owners still need a code-owner approval. (render-codeowners.py does NOT generate this list; keep it in sync by hand.)",
|
||||||
"required_status_checks": {
|
"required_status_checks": {
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"contexts": [
|
"contexts": [
|
||||||
|
|
@ -17,7 +17,12 @@
|
||||||
"dismiss_stale_reviews": true,
|
"dismiss_stale_reviews": true,
|
||||||
"require_code_owner_reviews": true,
|
"require_code_owner_reviews": true,
|
||||||
"required_approving_review_count": 1,
|
"required_approving_review_count": 1,
|
||||||
"require_last_push_approval": false
|
"require_last_push_approval": false,
|
||||||
|
"bypass_pull_request_allowances": {
|
||||||
|
"users": ["ragnorc", "aaltshuler"],
|
||||||
|
"teams": [],
|
||||||
|
"apps": []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"restrictions": null,
|
"restrictions": null,
|
||||||
"required_linear_history": true,
|
"required_linear_history": true,
|
||||||
|
|
|
||||||
57
.github/workflows/ci.yml
vendored
57
.github/workflows/ci.yml
vendored
|
|
@ -261,63 +261,6 @@ jobs:
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
||||||
run: cargo test --locked -p omnigraph-server --features aws
|
run: cargo test --locked -p omnigraph-server --features aws
|
||||||
|
|
||||||
test_windows_binaries:
|
|
||||||
name: Test Windows release binaries
|
|
||||||
needs: classify_changes
|
|
||||||
runs-on: windows-latest
|
|
||||||
timeout-minutes: 75
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
env:
|
|
||||||
CARGO_TERM_COLOR: always
|
|
||||||
steps:
|
|
||||||
- name: Skip for text-only changes
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci != 'true'
|
|
||||||
run: Write-Host "Text-only change detected; skipping Windows binary build."
|
|
||||||
|
|
||||||
- name: Checkout source
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
uses: actions/checkout@v5.0.1
|
|
||||||
|
|
||||||
- name: Install system dependencies
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
run: choco install protoc -y
|
|
||||||
|
|
||||||
- name: Install Rust stable
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
uses: dtolnay/rust-toolchain@stable
|
|
||||||
with:
|
|
||||||
toolchain: stable
|
|
||||||
|
|
||||||
- name: Cache Rust build data
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
uses: Swatinem/rust-cache@v2
|
|
||||||
with:
|
|
||||||
workspaces: |
|
|
||||||
. -> target
|
|
||||||
key: windows-release-binaries
|
|
||||||
|
|
||||||
- name: Build Windows binaries
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
run: cargo build --release --locked -p omnigraph-cli -p omnigraph-server
|
|
||||||
|
|
||||||
- name: Smoke test Windows binaries
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
run: |
|
|
||||||
& ./target/release/omnigraph.exe version
|
|
||||||
& ./target/release/omnigraph-server.exe --help
|
|
||||||
|
|
||||||
- name: Check PowerShell installer syntax
|
|
||||||
if: needs.classify_changes.outputs.run_full_ci == 'true'
|
|
||||||
run: |
|
|
||||||
$tokens = $null
|
|
||||||
$errors = $null
|
|
||||||
[System.Management.Automation.Language.Parser]::ParseFile("scripts/install.ps1", [ref]$tokens, [ref]$errors) | Out-Null
|
|
||||||
if ($errors.Count -gt 0) {
|
|
||||||
$errors | Format-List
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
rustfs_integration:
|
rustfs_integration:
|
||||||
name: RustFS S3 Integration
|
name: RustFS S3 Integration
|
||||||
needs:
|
needs:
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ The engine's `tests/` is the principal coverage surface; most graph-shaped behav
|
||||||
| `s3_storage.rs` | S3-backed graph (skipped unless `OMNIGRAPH_S3_TEST_BUCKET` is set) |
|
| `s3_storage.rs` | S3-backed graph (skipped unless `OMNIGRAPH_S3_TEST_BUCKET` is set) |
|
||||||
| `lance_version_columns.rs` | Per-row `_row_last_updated_at_version` behavior |
|
| `lance_version_columns.rs` | Per-row `_row_last_updated_at_version` behavior |
|
||||||
| `validators.rs` | Schema constraint enforcement (enum, range, unique, cardinality) across JSONL, insert, update paths |
|
| `validators.rs` | Schema constraint enforcement (enum, range, unique, cardinality) across JSONL, insert, update paths |
|
||||||
| `maintenance.rs` | `optimize` (compaction) + `cleanup` (version GC): empty/idempotent/no-op edges, policy validation, head preservation; `optimize` publishes the compacted version so the manifest tracks the Lance HEAD and a subsequent schema apply succeeds (`optimize_publishes_compaction_to_manifest_so_schema_apply_succeeds`), and reconciles a pre-existing manifest-behind-HEAD drift forged via raw Lance compaction (`optimize_reconciles_preexisting_manifest_head_drift`) |
|
| `maintenance.rs` | `optimize` (compaction) + `cleanup` (version GC): empty/idempotent/no-op edges, policy validation, head preservation; `optimize` publishes the compacted version so the manifest tracks the Lance HEAD and a subsequent schema apply succeeds (`optimize_publishes_compaction_to_manifest_so_schema_apply_succeeds`), and refuses to run while a `__recovery` sidecar is pending so optimize only ever operates on a recovered graph (`optimize_defers_when_recovery_sidecar_is_pending`) |
|
||||||
| `failpoints.rs` | Failure-injection coverage (gated on `failpoints` feature). Includes the five per-writer Phase B → recovery integration tests (`recovery_rolls_forward_after_finalize_publisher_failure`, `schema_apply_phase_b_failure_recovered_on_next_open`, `branch_merge_phase_b_failure_recovered_on_next_open`, `ensure_indices_phase_b_failure_recovered_on_next_open`, `optimize_phase_b_failure_recovered_on_next_open`). |
|
| `failpoints.rs` | Failure-injection coverage (gated on `failpoints` feature). Includes the five per-writer Phase B → recovery integration tests (`recovery_rolls_forward_after_finalize_publisher_failure`, `schema_apply_phase_b_failure_recovered_on_next_open`, `branch_merge_phase_b_failure_recovered_on_next_open`, `ensure_indices_phase_b_failure_recovered_on_next_open`, `optimize_phase_b_failure_recovered_on_next_open`). |
|
||||||
| `recovery.rs` | Open-time recovery sweep — sidecar I/O, classifier dispatch (NoMovement / RolledPastExpected / UnexpectedAtP1 / UnexpectedMultistep / InvariantViolation), all-or-nothing decision, roll-forward via `ManifestBatchPublisher::publish`, roll-back via `Dataset::restore`, audit row in `_graph_commit_recoveries.lance`, `OpenMode::ReadOnly` skip path |
|
| `recovery.rs` | Open-time recovery sweep — sidecar I/O, classifier dispatch (NoMovement / RolledPastExpected / UnexpectedAtP1 / UnexpectedMultistep / InvariantViolation), all-or-nothing decision, roll-forward via `ManifestBatchPublisher::publish`, roll-back via `Dataset::restore`, audit row in `_graph_commit_recoveries.lance`, `OpenMode::ReadOnly` skip path |
|
||||||
| `composite_flow.rs` | Compositional/narrative end-to-end stories — multi-step flows that compose mechanics covered by other test files. Catches integration regressions where individual operations all pass their unit tests but their composition breaks (sequential merges, post-merge main writes, time-travel through merge DAG, reopen consistency over multi-merge histories, post-optimize and post-cleanup strict writes). |
|
| `composite_flow.rs` | Compositional/narrative end-to-end stories — multi-step flows that compose mechanics covered by other test files. Catches integration regressions where individual operations all pass their unit tests but their composition breaks (sequential merges, post-merge main writes, time-travel through merge DAG, reopen consistency over multi-merge histories, post-optimize and post-cleanup strict writes). |
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue