Skip to content
Open
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: 3 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# Copy this file to .env for local runs. .env is ignored by git.
# Shell variables override values from .env:
# CF_CONTROLPLANE_REF=user/luca/dataplane-integration-fixes \
# cargo run --locked -- stack up --topology dataplane
# cargo run --locked -- stack up --lane external

# Default single-stack mode. Possible: controlplane, dataplane.
CF_MCP_STACK_MODE=dataplane
# Default execution lane. Possible: builtin, external.
CF_MCP_LANE=external

# Optional developer checkout containing source overlays. Without this, the
# current directory is the workspace and the binary can materialize embedded
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
exit 1
fi
test ! -e "$sandbox/state"
if (cd "$sandbox" && CF_INTEGRATION_DIR="$sandbox/state" "$binary" stack config --topology dataplane); then
if (cd "$sandbox" && CF_INTEGRATION_DIR="$sandbox/state" "$binary" stack config --lane external); then
echo "stack config unexpectedly succeeded outside a checkout" >&2
exit 1
fi
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
exit 1
fi
test ! -e "$sandbox/state"
if (cd "$sandbox" && CF_INTEGRATION_DIR="$sandbox/state" "$binary" stack config --topology dataplane); then
if (cd "$sandbox" && CF_INTEGRATION_DIR="$sandbox/state" "$binary" stack config --lane external); then
echo "stack config unexpectedly succeeded outside a checkout" >&2
exit 1
fi
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

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

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "cf-integration"
version = "0.2.0"
version = "0.2.1"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
Expand Down
48 changes: 26 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,36 +97,36 @@ failure. Test results use aligned nextest-style labels: green `PASS`, yellow
`CARGO_TERM_COLOR` control ANSI output. Command data such as tokens, Compose
configuration, and report paths remains on standard output for scripting.

Stack commands use physical `--topology controlplane|dataplane`:
Every stack and workflow selector uses semantic `--lane` values. Stack
commands accept `builtin`, `external`, or `all` where both lanes are valid:

```bash
cf-integration stack up --topology dataplane
cf-integration stack up --topology dataplane --fresh
cf-integration stack status --topology dataplane
cf-integration stack config --topology dataplane
cf-integration stack down --topology all
cf-integration stack down --topology all --volumes
cf-integration stack up --lane external
cf-integration stack up --lane external --fresh
cf-integration stack status --lane external
cf-integration stack config --lane external
cf-integration stack down --lane all
cf-integration stack down --lane all --volumes
```

`stack down --volumes` is the explicit destructive reset. Managed workflows
preserve the primary failure, attempt every token and stack cleanup, and report
all cleanup failures.

Probe, load, and Inspector use physical lanes:
Probe, load, and Inspector use the same routed lanes:

```bash
cf-integration probe --lane dataplane --protocol-version 2026-07-28
cf-integration load --lane dataplane --smoke
cf-integration debug inspect --lane dataplane --method tools/list
cf-integration probe --lane external --protocol-version modern
cf-integration load --lane builtin --smoke
cf-integration debug inspect --lane external --method tools/list
```

Live and conformance share semantic lanes: `fixture-direct`,
`built-in-data-plane`, and `external-data-plane`.
Live and conformance additionally support the direct `fixture-direct` lane.

```bash
cf-integration live --lane external-data-plane --group mcp
cf-integration live --lane external --group mcp
cf-integration live --lane fixture-direct --group protocol \
--protocol-version 2025-06-18
--protocol-version legacy

cf-integration conformance run
cf-integration conformance run \
Expand All @@ -139,10 +139,14 @@ cf-integration conformance report
cf-integration --version
```

Workflows accept only `--lane`; `--topology` is reserved for stack commands.
The direct fixture spelling is only `fixture-direct`. Probe, load, live, and
Inspector use `--protocol-version`; conformance uses the explicit
`--client-era` and `--server-era` matrix axes.
No command accepts `--topology`. The direct fixture spelling is only
`fixture-direct`. Probe, load, live, and Inspector use `--protocol-version`;
conformance uses the explicit `--client-era` and `--server-era` matrix axes.

Operational protocol selection is semantic: `modern` maps to the latest
per-request revision and `legacy` maps to the latest initialization-based
revision. Exact date revisions remain internal wire values and conformance
matrix dimensions.

## MCP and conformance behavior

Expand All @@ -165,7 +169,7 @@ built-in and external dataplane routes. For protocol `2026-07-28`, the client
suite also makes the external dataplane send requests to the official scenario
servers. The four downstream scenarios are `tools_call`, `request-metadata`,
`http-standard-headers`, and `http-custom-headers`; they run automatically
whenever `external-data-plane` is selected. The workflow records raw official
whenever the `external` lane is selected. The workflow records raw official
results without suppression, writes deterministic comparisons, and continues
through every expanded client-revision/server-era combination before returning
one aggregated result. `dual` is supported only when selected explicitly.
Expand Down Expand Up @@ -226,7 +230,7 @@ Copy `.env.example` to `.env`. Process values override the file.
```bash
CF_INTEGRATION_ROOT=/path/to/contextforge-dev-tools
CF_INTEGRATION_DIR=.integration
CF_MCP_STACK_MODE=dataplane
CF_MCP_LANE=external

CF_CONTROLPLANE_REPO=https://github.com/IBM/mcp-context-forge.git
CF_CONTROLPLANE_REF=main
Expand All @@ -242,7 +246,7 @@ CF_FAST_TIME_EXPECTED_IMAGE=ghcr.io/ibm/cfex-mcp-fast-time-server:latest
CF_FAST_TIME_SERVER_ID=9779b6698cbd4b4995ee04a4fab38737

MCP_CLI_BASE_URL=http://127.0.0.1:8080
MCP_PROTOCOL_VERSION=2026-07-28
MCP_PROTOCOL_VERSION=modern
MCP_SERVER_ID=9779b6698cbd4b4995ee04a4fab38737

PLATFORM_ADMIN_EMAIL=admin@example.com
Expand Down
2 changes: 1 addition & 1 deletion docker/docker-compose.cf-dataplane.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# export CF_INTEGRATION_ROOT="$PWD"
# export CF_DATAPLANE_IMAGE="ghcr.io/contextforge-org/contextforge-data-plane:latest"
# export CF_DATAPLANE_PLATFORM="linux/amd64"
# # Or let `cf-integration stack up --topology dataplane` resolve `auto`.
# # Or let `cf-integration stack up --lane external` resolve `auto`.
# docker compose \
# -f /path/to/cf-controlplane/docker-compose.yml \
# -f "$CF_INTEGRATION_ROOT/docker/docker-compose.cf-dataplane.yaml" \
Expand Down
Loading