Skip to content

feat(cli): add openshell conformance subcommand skeleton#2182

Draft
elezar wants to merge 1 commit into
mainfrom
feat/conformance-suite-skeleton
Draft

feat(cli): add openshell conformance subcommand skeleton#2182
elezar wants to merge 1 commit into
mainfrom
feat/conformance-suite-skeleton

Conversation

@elezar

@elezar elezar commented Jul 8, 2026

Copy link
Copy Markdown
Member

Summary

  • Adds a hidden openshell conformance subcommand behind a conformance Cargo feature flag
  • Implements conformance run (with --filter, --timeout, -o/--output flags) and conformance list
  • Implements the lifecycle scenario (create → ready → delete) as the first concrete conformance scenario
  • Five remaining scenarios are stubbed as "not yet implemented" placeholders

Related Issue

This is a skeleton PR to accompany the driver conformance suite spike issue. It exists to make the design concrete — not for merge as-is.

Changes

  • crates/openshell-cli/Cargo.toml — adds conformance feature flag
  • crates/openshell-cli/src/main.rs — adds Conformance command variant and ConformanceCommands enum
  • crates/openshell-cli/src/run.rs — adds conformance_run, conformance_list, run_scenario, and scenario_lifecycle

Notes

  • Pre-existing clippy lint failure in openshell-driver-podman/src/container.rs (unused import warning treated as error) exists on main and is unrelated to this change
  • Sandbox names use conformance-<scenario>-<run-id> convention (Kubernetes RFC 1123 safe, 8-char hex timestamp suffix)
  • conformance list requires no gateway connection — purely static metadata
  • Timeout is per-scenario via tokio::time::timeout, default 300s

Testing

Not intended to be merged or tested as-is. Accompanies the spike issue.

Adds a hidden `openshell conformance` subcommand behind a `conformance`
Cargo feature flag. The subcommand connects to a registered gateway and
runs a suite of driver-agnostic conformance scenarios, reporting pass/fail
per scenario and exiting non-zero on any failure.

Implements the `lifecycle` scenario (create → ready → delete) as the first
concrete scenario. The remaining five scenarios are stubbed as "not yet
implemented" placeholders.

Sandbox names follow the `conformance-<scenario>-<run-id>` convention
(Kubernetes RFC 1123 safe) to make orphaned sandboxes identifiable.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jul 8, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant