Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: help lint format type-check security workflow-lint license-check third-party-notices third-party-notices-check cargo-deny-licenses test pre-push pre-push-clean pre-push-preflight pre-push-fast bazel-test clean test-tck docstring-coverage test-network benchmark test-perf test-perf-xs test-perf-slow test-perf-large coverage coverage-rust coverage-python coverage-node coverage-quick coverage-report coverage-diff coverage-strict check-coverage check-coverage-rust check-coverage-python check-coverage-node check-patch-coverage test-durations test-analytics docs-serve docs-build docs-clean cargo-build codspeed-build codspeed-run bench-traversal bench-fixed-hop-limit bench-fixed-hop-livejournal bench-m4-entry bench-g500-scale20 bench-adjacency-200m bench-file-backed-128m m4-entry-matrix-check durability-isolation-check native-consumers release-load-matrix-check release-load-matrix bulk-construction-conformance-check bulk-construction-conformance cargo-test cargo-check cargo-clippy cargo-fmt cargo-fmt-check clean-builds clean-builds-all pnpm-install pnpm-build pnpm-test-bdd install build release-version-check package-license-verify publish-dry-run publish-dry-run-npm publish-dry-run-docs publish-dry-run-python publish-dry-run-cargo record-release-artifacts clean-env-verify-check clean-env-verify-preflight clean-env-verify
.PHONY: help lint format type-check security workflow-lint license-check third-party-notices third-party-notices-check cargo-deny-licenses test pre-push pre-push-clean pre-push-preflight pre-push-fast bazel-test clean test-tck docstring-coverage test-network benchmark test-perf test-perf-xs test-perf-slow test-perf-large coverage coverage-rust coverage-python coverage-node coverage-quick coverage-report coverage-diff coverage-strict check-coverage check-coverage-rust check-coverage-python check-coverage-node check-patch-coverage test-durations test-analytics docs-serve docs-build docs-clean cargo-build codspeed-build codspeed-run bench-traversal bench-fixed-hop-limit bench-fixed-hop-livejournal bench-m4-entry bench-g500-scale20 bench-g500-ladder bench-adjacency-200m bench-file-backed-128m m4-entry-matrix-check durability-isolation-check native-consumers release-load-matrix-check release-load-matrix bulk-construction-conformance-check bulk-construction-conformance cargo-test cargo-check cargo-clippy cargo-fmt cargo-fmt-check clean-builds clean-builds-all pnpm-install pnpm-build pnpm-test-bdd install build release-version-check package-license-verify publish-dry-run publish-dry-run-npm publish-dry-run-docs publish-dry-run-python publish-dry-run-cargo record-release-artifacts clean-env-verify-check clean-env-verify-preflight clean-env-verify

help: ## Show this help message
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
Expand Down Expand Up @@ -309,6 +309,10 @@ bench-m4-entry: ## Emit the M4 entry large/manual evidence envelope (#334; hard
bench-g500-scale20: ## Official-parameter SCALE-20 public-facade engineering green (#710; ignored, not Official-track)
cargo test -p graphforge-api --release --test scale_g500_scale20 scale20_public_facade_engineering_green -- --ignored --nocapture --test-threads=1

bench-g500-ladder: ## Bounded billion-edge scale ladder S20-S26 first-fail evidence (#736; ignored, provisioned scale-host)
GF_G500_LADDER_EVIDENCE_OUT="$(CURDIR)/docs/development/g500-ladder-evidence.json" \
cargo test -p graphforge-api --release --test scale_g500_ladder ladder_public_facade_first_fail_evidence -- --ignored --nocapture --test-threads=1

bench-adjacency-200m: ## >200M-edge public adjacency build evidence (#336; ignored, scale-host)
GF_ADJACENCY_SCALE_EVIDENCE_OUT="$(CURDIR)/docs/development/adjacency-200m-evidence.json" \
GF_ADJACENCY_SCALE_WORK="$(CURDIR)/build/adjacency-200m-work" \
Expand Down
12 changes: 12 additions & 0 deletions crates/graphforge-api/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,17 @@ gf_rust_integration_test(
deps = _API_DEPS,
)

gf_rust_integration_test(
name = "scale_g500_ladder",
srcs = ["tests/scale_g500_ladder.rs"],
compile_data = ["tests/fixtures/scale_g500_ladder.v1.json"],
crate = ":graphforge_api",
data = _API_TEST_DATA,
size = "large",
timeout = "long",
deps = _API_DEPS,
)

gf_rust_integration_test(
name = "adjacency_scale_evidence",
srcs = ["tests/adjacency_scale_evidence.rs"],
Expand Down Expand Up @@ -504,6 +515,7 @@ test_suite(
":public_facade_remaining_conformance",
":public_lifecycle_conformance",
":release_load_construction",
":scale_g500_ladder",
":scale_g500_scale20",
":strict_runtime_properties",
":value_access_semantics",
Expand Down
58 changes: 58 additions & 0 deletions crates/graphforge-api/tests/fixtures/scale_g500_ladder.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"schema": "graphforge-billion-edge-ladder/1",
"schema_version": "1",
"objective": "Bounded-memory Graph500-parameter (ef=16 undirected Kronecker) scale ladder that measures the first envelope bottleneck on the public GraphForge facade. Engineering-green, NOT Official-track and NOT TEPS. Certification of one billion live edges is #745, not this profile.",
"seed": 1,
"edgefactor": 16,
"initiator": { "A": 0.57, "B": 0.19, "C": 0.19, "D": 0.05 },
"policy": {
"directionality": "undirected",
"self_loops": "drop",
"duplicates": "drop",
"canonicalization": "sorted_lo_hi_pair",
"identity": "uuidv7(vertex_index + 1)",
"reconciliation": "raw_attempts == live_unique_edges + self_loops_rejected + duplicates_rejected"
},
"envelope": {
"rss_bytes": 137438953472,
"disk_bytes": 1099511627776,
"timeout_s": 86400,
"note": "128 GiB peak RSS, 1 TiB local NVMe, 24 hours (M5 #735 host envelope)."
},
"metrics": [
"raw_attempts",
"self_loops_rejected",
"duplicates_rejected",
"live_unique_edges",
"wall_time_s",
"rss_peak_bytes",
"disk_used_bytes"
],
"invocation": "CARGO_TARGET_DIR=/tmp/cargo-g500-ladder make bench-g500-ladder",
"rungs": [
{
"id": "S10",
"scale": 10,
"buffer_edges": 4096,
"tier": "ci",
"note": "Small always-on validation rung. buffer_edges is intentionally below the rung's edge count so the external sort/spill/merge path is exercised in normal CI."
},
{
"id": "S20",
"scale": 20,
"buffer_edges": 8388608,
"tier": "provisioned",
"note": "Historical baseline (parity with the #710 SCALE-20 reference client)."
},
{ "id": "S22", "scale": 22, "buffer_edges": 16777216, "tier": "provisioned" },
{ "id": "S24", "scale": 24, "buffer_edges": 33554432, "tier": "provisioned" },
{ "id": "S25", "scale": 25, "buffer_edges": 67108864, "tier": "provisioned" },
{
"id": "S26",
"scale": 26,
"buffer_edges": 134217728,
"tier": "provisioned",
"note": "SCALE-26/ef=16 = 1,073,741,824 raw attempts. Live persisted edges after self-loop and duplicate policy may fall below one billion; raw attempts MUST NOT be reported as live."
}
]
}
Loading