Skip to content

feat: MVP implementation#6

Draft
markurtz wants to merge 2 commits into
mainfrom
feature/initial-implementation
Draft

feat: MVP implementation#6
markurtz wants to merge 2 commits into
mainfrom
feature/initial-implementation

Conversation

@markurtz

Copy link
Copy Markdown
Owner

Description

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update (changes to README.md, SUPPORT.md, docstrings, etc.)
  • Maintenance/Refactoring (non-breaking change that improves code structure or quality)

Test Plan

Related Issues

  • Fixes #

Screenshots / Visuals (if applicable)

Use of AI

  • Includes AI-assisted code completion
  • Includes code generated by an AI application
  • Includes AI-generated tests

Checklist

Important

Please review and complete this checklist before submitting your PR. This helps our maintainers process your contribution faster and ensures it meets the quality standards of rustarium.

  • "I certify that all code in this PR is my own, except as noted below."
  • I have read the CONTRIBUTING.md guide.
  • My code follows the established style guidelines of rustarium.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have made corresponding changes to the documentation.
  • My changes generate no new warnings or errors.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.

@markurtz markurtz requested a review from Copilot May 25, 2026 17:49
@markurtz markurtz self-assigned this May 25, 2026
@markurtz markurtz added documentation Improvements or additions to documentation enhancement New feature or request labels May 25, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces an MVP foundation for rustarium by wiring up an initial public Python API surface (clients, schemas, CLI), adding a minimal Rust/PyO3 binding example, and replacing the project’s CI/docs/tooling scaffolding to support a multi-language (Python+Rust) workflow.

Changes:

  • Added initial Python SDK modules (clients, schemas, exceptions), expanded package exports, and switched the CLI entrypoint to Typer.
  • Introduced a Rust workspace (rustarium-core) with a simple PyO3 extension example and matching Python type stubs/tests.
  • Migrated docs tooling (MkDocs → Zensical) and replaced legacy reusable workflows with a composite-action–based CI pipeline (quality/security/build/tests/docs/publish).

Reviewed changes

Copilot reviewed 100 out of 108 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
zensical.toml Adds Zensical site configuration and navigation.
tests/README.md Updates testing guide for new Python test layout and hatch commands.
tests/python/unit/test_version.py Adds unit tests for rustarium.version metadata exports.
tests/python/unit/test_settings.py Updates a type-ignore annotation in Settings tests.
tests/python/unit/test_logging.py Adds unit tests for logging configuration behavior.
tests/python/unit/test_init.py Expands expectations for rustarium.__all__ exports.
tests/python/unit/test_compat.py Adds a smoke test for optional dependency compatibility exports.
tests/python/unit/__init__.py Declares the Python unit test package.
tests/python/integration/test_integration.py Updates CLI invocation expectations and adds Rust binding import test.
tests/python/integration/__init__.py Declares the Python integration test package.
taplo.toml Adds Taplo TOML formatting include patterns.
src/rustarium/schemas/updates.py Introduces Pydantic models for update-stream payloads.
src/rustarium/schemas/config.py Introduces Pydantic configuration schemas for jobs/workloads/security/limits.
src/rustarium/schemas/__init__.py Re-exports schema models as a public package surface.
src/rustarium/logging.py Adjusts typing suppression on Loguru handler installation.
src/rustarium/exceptions.py Adds a core exception hierarchy for the Python package.
src/rustarium/compat.py Refactors optional OpenTelemetry import handling.
src/rustarium/client.py Adds initial async/sync client skeletons for SDK usage.
src/rustarium/_rust.pyi Adds Python typing stubs for the Rust extension module.
src/rustarium/__main__.py Replaces Click-based CLI with a Typer-based CLI + subcommands.
src/rustarium/__init__.py Expands public exports and adds a Rust-extension import fallback.
scripts/generate_doc_tests.py Adds a script to generate pytest files from markdown via phmdoctest.
scripts/check_links.py Adds a Typer CLI wrapper for urlchecker-based link validation.
README.md Updates repo/tooling description (ty, Zensical, new test layout).
mkdocs.yml Removes legacy MkDocs configuration.
docs/stylesheets/extra.css Removes MkDocs-specific placeholder CSS.
docs/scripts/macros.py Adds Zensical macro helpers for conditional includes and Rust API links.
docs/scripts/gen_ref_pages.py Removes MkDocs gen-files reference page generator.
docs/scripts/extra.js Removes MkDocs-specific placeholder JS.
docs/reference/rust_coverage.md Adds Rust coverage placeholder page via macros.
docs/reference/rust_api.md Adds Rust API placeholder page via macros.
docs/reference/python_coverage.md Adds Python coverage placeholder page via macros.
docs/reference/python_api.md Adds Python API reference directive entrypoint.
docs/reference/index.md Updates reference landing page content and links.
docs/reference/cli.md Adds CLI placeholder page via macros.
docs/guides/repository-setup.md Removes template maintainer bootstrap guide.
docs/guides/index.md Removes link to the deleted repository setup guide.
docs/guides/github-workflows.md Updates workflow documentation for new commands/docs tooling.
docs/getting-started/quickstart.md Updates quickstart commands and navigation links.
Dockerfile Reworks container build to compile/build Python+Rust artifacts and install wheel in runtime stage.
docker-compose.yml Simplifies compose config and restricts port binding to localhost.
deny.toml Adds cargo-deny configuration for Rust dependency policy checks.
cst.yaml Adds container-structure-test configuration for OCI validation.
crates/rustarium-core/tests/test_integration.rs Adds a Rust integration test for the sum example.
crates/rustarium-core/src/sum.rs Adds Rust sum example implementation + unit test.
crates/rustarium-core/src/lib.rs Adds PyO3 module definition exporting the sum function.
crates/rustarium-core/Cargo.toml Adds Rust crate manifest for rustarium-core.
covgate.toml Adds coverage gating configuration (currently permissive).
Cargo.toml Adds Rust workspace configuration and shared dependency versions.
AGENTS.md Updates agent/developer guidance for new commands/docs/testing layout.
.yamllint Adds repository yamllint configuration.
.pre-commit-config.yaml Removes legacy pre-commit configuration.
.gitignore Updates ignore rules (build outputs, docs/test generation, tool caches).
.github/workflows/weekly.yml Removes legacy weekly pipeline workflow.
.github/workflows/util-pr-comment.yml Adds workflow_run-based PR commenter for artifact-driven CI summaries.
.github/workflows/util-development-cleanup.yml Updates PR docs-preview cleanup workflow to delete gh-pages paths via git.
.github/workflows/release.yml Removes legacy release workflow.
.github/workflows/pipeline-weekly.yml Adds new weekly pipeline using composite actions.
.github/workflows/pipeline-release.yml Adds new release pipeline with build/test/docs/publish stages.
.github/workflows/pipeline-nightly.yml Adds new nightly pipeline with change detection + publish steps.
.github/workflows/pipeline-main.yml Adds new main-branch pipeline using composite actions.
.github/workflows/pipeline-development.yml Adds new PR pipeline with conditional docs deployment and PR metadata artifacts.
.github/workflows/nightly.yml Removes legacy nightly workflow.
.github/workflows/main.yml Removes legacy main workflow.
.github/workflows/development.yml Removes legacy development workflow.
.github/workflows/_tests.yml Removes legacy reusable test workflow.
.github/workflows/_security.yml Removes legacy reusable security workflow.
.github/workflows/_quality.yml Removes legacy reusable quality workflow.
.github/workflows/_pr_comment.yml Removes legacy PR commenter workflow.
.github/workflows/_link-check.yml Removes legacy reusable link-check workflow.
.github/workflows/_docs.yml Removes legacy reusable docs workflow.
.github/workflows/_build_package.yml Removes legacy reusable build workflow.
.github/workflows/_build_container.yml Removes legacy reusable container build workflow.
.github/paths-filter.yml Adds centralized path filters for conditional workflow/action execution.
.github/CODEOWNERS Updates ownership rules for Zensical config and removes pre-commit ownership entry.
.github/actions/utility/setup-rust/action.yml Adds composite action to set up Rust + Python toolchain.
.github/actions/utility/setup-python/action.yml Adds composite action to set up Python + install uv/hatch.
.github/actions/rust/tests/action.yml Adds composite action to run Rust tests (optionally with coverage).
.github/actions/rust/security/action.yml Adds composite action for cargo-audit/cargo-deny security checks.
.github/actions/rust/quality/action.yml Adds composite action for Rust lint/type checks via hatch scripts.
.github/actions/rust/publish/action.yml Adds placeholder composite action for Rust publish semantics.
.github/actions/rust/build/action.yml Adds composite action to build the Rust workspace.
.github/actions/python/tests/action.yml Adds composite action to run Python tests (unit/int/e2e) with optional coverage.
.github/actions/python/security/action.yml Adds composite action to run Python security checks.
.github/actions/python/quality/action.yml Adds composite action for Python lint/type checks via hatch scripts.
.github/actions/python/publish/action.yml Adds composite action for PyPI publish + provenance attestation + optional GitHub release.
.github/actions/python/build/action.yml Adds composite action to build Python wheel/sdist via hatch.
.github/actions/project/tests/action.yml Adds composite action for doc tests (phmdoctest) and link-check E2E.
.github/actions/project/security/action.yml Adds composite action for project security checks + actionlint + dependency review.
.github/actions/project/quality/action.yml Adds composite action for repo-wide formatting/lint checks.
.github/actions/project/publish/action.yml Adds placeholder composite action for project-level publishing.
.github/actions/project/docs/action.yml Adds composite action to build/deploy Zensical docs to gh-pages (with optional coverage).
.github/actions/oci/tests/action.yml Adds composite action for container structure tests.
.github/actions/oci/security/action.yml Adds composite action for OCI security scans (dockle/trivy).
.github/actions/oci/quality/action.yml Adds composite action for Docker/compose linting.
.github/actions/oci/publish/action.yml Adds composite action to tag/push OCI images to GHCR.
.github/actions/oci/build/action.yml Adds composite action to build OCI images and optionally export a tarball.
.env.example Removes template environment example file.
.editorconfig Removes legacy EditorConfig template file.
.devcontainer/Dockerfile Adds devcontainer image including uv/hatch and Rust toolchain.
.devcontainer/devcontainer.json Adds devcontainer configuration and VS Code customizations.
.detect-secrets.scan.json Adds detect-secrets baseline configuration output.
Comments suppressed due to low confidence (2)

tests/python/unit/test_settings.py:46

  • The # ty: ignore[...] directive is appended after a # type: ignore[...] on the same comment, which may prevent ty from recognizing it (it’s no longer the leading directive in the comment). If this needs suppression for ty, use a standalone # ty: ignore[...] comment (or keep only one ignore directive) so the configured type checker actually applies it.
    .github/workflows/util-development-cleanup.yml:31
  • This workflow now uses floating action tags (actions/checkout@v4, actions/setup-python@v5) instead of pinning to a commit SHA. For supply-chain safety and consistency with the other workflows in this repo, pin these actions to a specific SHA (and optionally keep the version comment).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/README.md
Comment on lines +9 to +11
| **Unit** | `tests/python/unit/` | Fast, isolated tests for individual functions and classes. These tests should not rely on external services or systems. |
| **Integration** | `tests/python/integration/` | Slower tests that verify interactions between multiple components or modules within the application. |
| **End-to-End** | `tests/e2e/` | Full-stack tests simulating real user workflows, from entry points to expected outcomes. |
Comment thread src/rustarium/client.py
Comment on lines +52 to +56
if default_config is not None:
_serialized_config = to_json(default_config, by_alias=True) # noqa: F841

# Stubbed yield to satisfy the generator signature
yield cast("UpdatePayload", NotImplemented)
Comment thread src/rustarium/client.py
Comment on lines +93 to +94
# Stubbed yield to satisfy the generator signature
yield cast("UpdatePayload", NotImplemented)
Comment thread src/rustarium/compat.py
Comment on lines 17 to 20
try:
from opentelemetry import (
trace as _opentelemetry_trace, # type: ignore[import-not-found]
from opentelemetry import ( # type: ignore[import-not-found, unused-ignore]
trace as _opentelemetry_trace_mod,
)
Comment on lines +22 to +26
/// Sums two integers and returns the result as a string.
#[pyfunction]
fn sum_as_string(a: usize, b: usize) -> PyResult<String> {
sum::sum_as_string_internal(a, b)
}
Comment on lines +19 to +22
/// Sums two integers and returns the result as a string.
pub fn sum_as_string_internal(a: usize, b: usize) -> PyResult<String> {
Ok((a + b).to_string())
}
Comment on lines +31 to +32
pip install --break-system-packages --ignore-installed uv>=0.11.0 # Pin to latest stable/compatible uv
pip install --break-system-packages --ignore-installed hatch>=1.16.0 # Pin to latest stable/compatible hatch
@github-actions

Copy link
Copy Markdown
Contributor

CI Development Pipeline Status

Pipeline: Failed or was cancelled. Check logs

@github-actions

Copy link
Copy Markdown
Contributor

CI Development Pipeline Status

Pipeline: Failed or was cancelled. Check logs

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

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants