Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
5d7d3eb
feat(authz-resolver)!: migrate to toolkit contract with REST projection
mattgarmon Aug 27, 2026
34fe8c8
feat(toolkit-oop): lazy connect DirectoryService client
mattgarmon Aug 27, 2026
4b68233
feat(api-gateway): advertise bound REST endpoint for directory regist…
mattgarmon Aug 27, 2026
01d524c
chore(examples): remove legacy hand-rolled gRPC OoP example (calculator)
mattgarmon Aug 26, 2026
3e28876
feat(toolkit-oop): platform-host and initial OoP gear binaries
mattgarmon Aug 26, 2026
0f09ee8
feat(toolkit-oop): container images and helm charts
mattgarmon Aug 26, 2026
1951a98
docs(toolkit-oop): deployment guide and architecture notes
mattgarmon Aug 26, 2026
36055e8
test(toolkit-oop): scripted k8s smoke test and e2e suite
mattgarmon Aug 26, 2026
c11798f
feat(cluster-consumer): add cluster-consuming demo gear + loopback Oo…
asmith987 Aug 28, 2026
bc57054
feat(deploy): cluster + cluster-consumer minikube charts (Profile 3)
asmith987 Aug 28, 2026
00de3e9
fix(deploy): make oop-smoke.sh edge reachability driver-aware
asmith987 Aug 28, 2026
9871a76
feat(cluster-consumer): exercise all three cluster primitives in the …
asmith987 Aug 28, 2026
cf53a87
feat(deploy): cluster demo uses the native postgres lock backend
asmith987 Aug 28, 2026
78ac171
feat(cluster-consumer): scope all three primitives under one namespace
asmith987 Aug 28, 2026
cc1beaf
feat(cluster-consumer): expand the demo into a realistic seat-reserva…
asmith987 Aug 28, 2026
58663ea
test(cluster-consumer): exercise the reservation API in the loopback …
asmith987 Aug 28, 2026
b8876e0
perf(cluster-consumer): memoize resolved cluster facades instead of r…
asmith987 Aug 31, 2026
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
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -386,3 +386,8 @@ testing/e2e/logs/

# Local reports from the toolkit-pr-review-v2 skill (never committed)
/REVIEW_*.md

# Helm chart artifacts (never committed)
*.tgz
Chart.lock

170 changes: 98 additions & 72 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 3 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ debug = true
[workspace]
members = [
"apps/cf-gears-example-server",
"apps/platform-host",
"tools/gts-analyze",
"tools/xtask",
"libs/toolkit",
Expand Down Expand Up @@ -110,10 +111,8 @@ members = [
"examples/toolkit/users-info/users-info-sdk",
"examples/toolkit/users-info/users-info",
"examples/toolkit/users-info/users-info-server",
"examples/oop-gears/calculator-gateway/calculator-gateway-sdk",
"examples/oop-gears/calculator-gateway/calculator-gateway",
"examples/oop-gears/calculator/calculator-sdk",
"examples/oop-gears/calculator/calculator",
"examples/toolkit/hello/hello",
"examples/toolkit/cluster-consumer/cluster-consumer",
"examples/cf-gears-fips-probe",
"gears/system/types-registry/types-registry-sdk",
"gears/system/types-registry/types-registry",
Expand Down
34 changes: 26 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ COMMA := ,
EXAMPLE_SERVER_BIN ?= cf-gears-example-server
EXAMPLE_SERVER_DEBUG_BINARY ?= target/debug/$(EXAMPLE_SERVER_BIN)
EXAMPLE_SERVER_MANIFEST ?= apps/cf-gears-example-server/Cargo.toml
EXAMPLE_SERVER_FEATURE_EXCLUDES ?= default fips k8s otel oop-example timescaledb-usage-collector
EXAMPLE_SERVER_FEATURE_EXCLUDES ?= default fips k8s otel timescaledb-usage-collector
EXAMPLE_SERVER_ALL_FEATURES := $(strip $(shell cargo gears ls features --manifest $(EXAMPLE_SERVER_MANIFEST) 2>/dev/null))
EXAMPLE_SERVER_FEATURES ?= $(subst $(SPACE),$(COMMA),$(filter-out $(EXAMPLE_SERVER_FEATURE_EXCLUDES),$(EXAMPLE_SERVER_ALL_FEATURES)))
EXAMPLE_SERVER_FEATURE_ARGS ?= $(if $(EXAMPLE_SERVER_FEATURES),--features $(EXAMPLE_SERVER_FEATURES),)
Expand Down Expand Up @@ -905,7 +905,7 @@ bench-db-longhaul: bench-pg-longhaul bench-mysql-longhaul bench-mariadb-longhaul

# -------- E2E tests --------

.PHONY: e2e e2e-local e2e-local-smoke e2e-mini-chat e2e-docker e2e-docker-smoke e2e-tr-authz e2e-usage-collector
.PHONY: e2e e2e-local e2e-local-smoke e2e-mini-chat e2e-docker e2e-docker-smoke e2e-tr-authz e2e-usage-collector e2e-oop oop-smoke

E2E_TARGET ?=
# E2E selectors for `make e2e-local`:
Expand Down Expand Up @@ -984,6 +984,30 @@ e2e-usage-collector:
$(call print_target_banner)
$(MAKE) e2e-local SUITE=usage-collector

# Out-of-process (loopback) E2E: boots platform-host + OoP gears as local
# processes (no Kubernetes) and asserts the cross-process seams. Self-managed:
# its conftest builds the binaries and owns the process lifecycle, so it runs
# pytest directly (not via run_e2e.py). timeout_func_only keeps the per-test
# timeout from counting the heavy fixture setup (build + boot + route sync).
OOP_E2E_DIR ?= testing/e2e/suites/oop
OOP_E2E_TIMEOUT ?= 60
## Run the out-of-process (loopback, no-k8s) E2E suite
e2e-oop: py-env
$(call print_target_banner)
cargo build -p cf-gears-platform-host --bin platform-host
cargo build -p hello --features oop_module --bin hello-oop
cargo build -p cf-api-contracts --features oop_module --bin api-contracts-oop
cargo build -p cf-api-contracts-consumer --features oop_module --bin api-contracts-consumer-oop
cargo build -p cf-gears-cluster --bin cluster-oop
cargo build -p cluster-consumer --features oop_module --bin cluster-consumer-oop
$(PYTHON) -m pytest $(OOP_E2E_DIR) -c testing/e2e/pytest.ini \
-o timeout_func_only=true --timeout=$(OOP_E2E_TIMEOUT) -vv

## Run the scripted Profile-3 (Kubernetes) OoP demo smoke test (see deploy/oop-smoke.sh --help)
oop-smoke:
$(call print_target_banner)
deploy/oop-smoke.sh $(OOP_SMOKE_ARGS)

# -------- Code coverage --------

.PHONY: coverage coverage-unit coverage-e2e-local check-prereq-e2e-local
Expand Down Expand Up @@ -1233,12 +1257,6 @@ fips:
$(call print_target_banner)
cargo run --bin cf-gears-example-server --features fips,static-authn,static-authz,single-tenant,static-credstore,otel -- --config config/quickstart.yaml run

## Run server with out-of-process example gear
oop-example:
$(call print_target_banner)
cargo build -p calculator --features oop_gear
cargo run --bin cf-gears-example-server --features oop-example,users-info-example,static-authn,static-authz,static-tenants,static-credstore -- --config config/quickstart.yaml run

# Run all quality checks
check: fmt cfs-validate clippy lychee security dylint gts-docs test
$(call print_target_banner)
Expand Down
3 changes: 0 additions & 3 deletions apps/cf-gears-example-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ credstore = ["dep:credstore"]
# FIPS-140-3: use the AWS-LC FIPS-validated crypto module for all cryptographic operations
fips = ["toolkit/fips", "oagw", "api_egress?/fips"]
users-info-example = ["dep:users-info"]
oop-example = ["dep:calculator-gateway", "dep:calculator"]
single-tenant = ["dep:single-tenant-tr-plugin"]
static-tenants = ["dep:static-tr-plugin"]
static-authn = ["dep:static-authn-plugin"]
Expand Down Expand Up @@ -119,8 +118,6 @@ bss_pricing = { package = "cf-gears-bss-pricing", path = "../../gears/bss/pricin

# Optional example module
users-info = { path = "../../examples/toolkit/users-info/users-info", optional = true }
calculator-gateway = { path = "../../examples/oop-gears/calculator-gateway/calculator-gateway", optional = true }
calculator = { path = "../../examples/oop-gears/calculator/calculator", optional = true }

[dev-dependencies]
tempfile = { workspace = true }
Expand Down
Loading
Loading