docs(federation): ratify graph-complete v0.29 scope #213
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Native Rust CI. Contract bytes are owned by asdecided-spec; the evolving RAC | |
| # repository corpus is exercised through invariants rather than snapshots. | |
| name: rust-spike | |
| permissions: | |
| contents: read | |
| on: | |
| workflow_call: | |
| inputs: | |
| ref: | |
| description: "Revision to test when called from a release workflow." | |
| type: string | |
| required: false | |
| default: "" | |
| pull_request: | |
| paths: | |
| - "rust/**" | |
| - "decisions/**" | |
| - "deny.toml" | |
| - ".github/dependabot.yml" | |
| - ".github/workflows/rust-spike.yml" | |
| push: | |
| branches: [main] | |
| paths: | |
| - "rust/**" | |
| - "decisions/**" | |
| - "deny.toml" | |
| - ".github/dependabot.yml" | |
| - ".github/workflows/rust-spike.yml" | |
| jobs: | |
| windows-runtime: | |
| name: Windows native runtime smoke | |
| runs-on: windows-latest | |
| timeout-minutes: 25 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ inputs.ref || github.ref }} | |
| - name: Install rust toolchain (pinned by rust/rust-toolchain.toml) | |
| run: rustup show | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: rust | |
| - name: Build native release binaries | |
| working-directory: rust | |
| run: cargo build --release --locked | |
| # Keep this bounded: Linux owns the full workspace and inotify matrix; | |
| # Windows proves that the shipped CLI, cache/store, rename transaction, | |
| # and MCP wire contracts execute on the native filesystem. | |
| - name: Native CLI and cache/store smoke | |
| working-directory: rust | |
| run: | | |
| cargo test -p decided --test cli --release | |
| cargo test -p asdecided-core --test index_store_vectors --release | |
| cargo test -p asdecided-core --lib --release rename::tests::successful_transaction_replaces_all_files_and_cleans_backups | |
| - name: MCP contract smoke | |
| working-directory: rust | |
| run: | | |
| cargo test -p decided-mcp --test protocol_legacy --release | |
| cargo test -p decided-mcp --test protocol_2026 --release | |
| cargo test -p decided-mcp --test response_budget --release | |
| cargo test -p decided-mcp --test docs_contract --release | |
| macos-runtime: | |
| name: macOS native runtime smoke | |
| runs-on: macos-15 | |
| timeout-minutes: 25 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ inputs.ref || github.ref }} | |
| - name: Install rust toolchain (pinned by rust/rust-toolchain.toml) | |
| run: rustup show | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: rust | |
| - name: Build native release binaries | |
| working-directory: rust | |
| run: cargo build --release --locked | |
| # Keep this bounded: macOS proves the shipped CLI, cache/store, rename | |
| # transaction, and MCP contracts without duplicating Linux's watcher | |
| # correctness gate. | |
| - name: Native CLI and cache/store smoke | |
| working-directory: rust | |
| run: | | |
| cargo test -p decided --test cli --release | |
| cargo test -p asdecided-core --test index_store_vectors --release | |
| cargo test -p asdecided-core --lib --release rename::tests::successful_transaction_replaces_all_files_and_cleans_backups | |
| - name: MCP contract smoke | |
| working-directory: rust | |
| run: | | |
| cargo test -p decided-mcp --test protocol_legacy --release | |
| cargo test -p decided-mcp --test protocol_2026 --release | |
| cargo test -p decided-mcp --test response_budget --release | |
| cargo test -p decided-mcp --test docs_contract --release | |
| rust-contract: | |
| name: Rust contract + live-corpus invariants | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ inputs.ref || github.ref }} | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install rust toolchain (pinned by rust/rust-toolchain.toml) | |
| run: rustup show | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: rust | |
| - name: Build native release binaries | |
| working-directory: rust | |
| run: cargo build --release --locked | |
| - name: Install export-schema test dependency | |
| run: python -m pip install --disable-pip-version-check -r rust/tools/export-schema-requirements.txt | |
| - name: Export-schema contracts | |
| run: python rust/tools/export_schema_contracts.py --engine rust/target/release/decided | |
| # Keep the Linux-only event-watch correctness gate independently visible | |
| # before the broader workspace suite. | |
| - name: Freshness tracker (Linux inotify + stat fallback) | |
| working-directory: rust | |
| run: cargo test -p asdecided-core --test freshness_tracker --release | |
| - name: Rust workspace unit and bounded regression suites | |
| working-directory: rust | |
| run: cargo test --workspace --release | |
| - name: Clippy (strict across native targets) | |
| working-directory: rust | |
| run: cargo clippy --release --no-deps -- -D warnings | |
| - name: Checkout authoritative asdecided-spec fixtures | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: asdecided/spec | |
| path: asdecided-spec | |
| - name: Guard 1 — vendored registry matches asdecided-spec | |
| env: | |
| DECIDED_SPEC_DIR: ${{ github.workspace }}/asdecided-spec | |
| run: python rust/spec/sync_spec.py | |
| - name: Guard 2 — Rust reproduces asdecided-spec contract bytes | |
| run: | | |
| python rust/tools/conformance_certify.py \ | |
| --spec-dir "${{ github.workspace }}/asdecided-spec" \ | |
| --engine "rust=${{ github.workspace }}/rust/target/release/decided" | |
| - name: MCP compatibility vectors (Rust consumer) | |
| working-directory: rust | |
| env: | |
| ASDECIDED_MCP_SPEC_DIR: ${{ github.workspace }}/asdecided-spec | |
| run: cargo test -p decided-mcp --test spec_vectors --release -- --nocapture | |
| - name: Live RAC corpus invariants | |
| run: | | |
| python rust/tools/live_corpus_invariants.py \ | |
| --engine rust/target/release/decided \ | |
| --corpus decisions | |
| dependency-policy: | |
| name: dependency policy (cargo-deny) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ inputs.ref || github.ref }} | |
| # deny.toml bans outbound HTTP/TLS/async stacks, restricts sources to | |
| # crates.io, and checks the RustSec advisory and license databases. | |
| - uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| manifest-path: rust/Cargo.toml | |
| arguments: --all-features --locked |