Skip to content

feat(daemon-logs): integrate LogStorageBackend plugins + animus logs … #8

feat(daemon-logs): integrate LogStorageBackend plugins + animus logs …

feat(daemon-logs): integrate LogStorageBackend plugins + animus logs … #8

name: Protocol Drift
# Fails fast if the in-tree `animus-plugin-protocol` crate diverges from the
# published `launchapp-dev/animus-protocol` crate. Plugin authors depend on
# the published crate, so any in-tree-only addition that hasn't yet shipped
# as a standalone release means plugins built against the published crate
# can send wire shapes the in-tree host won't understand — or vice versa.
#
# The job clones the standalone repo at the pinned tag, exports the path to
# its `animus-plugin-protocol/src/lib.rs`, and runs the
# `crates/orchestrator-plugin-host/tests/protocol_drift.rs` integration test.
# That test parses both crates with `syn`, extracts their public surface,
# and panics if anything diverges that isn't on its `expected_in_tree_only`
# allowlist.
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
concurrency:
group: protocol-drift-${{ github.ref }}
cancel-in-progress: true
jobs:
drift:
name: protocol drift check
runs-on: ubuntu-latest
timeout-minutes: 15
env:
CARGO_TERM_COLOR: always
# Pinned tag for the published animus-plugin-protocol crate. Bump this
# when a new standalone release ships; the in-tree crate is expected
# to match the surface at this tag (modulo entries the test's
# `expected_in_tree_only` allowlist documents as pending-release).
STANDALONE_TAG: v0.1.1
steps:
- name: Checkout ao-cli (in-tree protocol)
uses: actions/checkout@v4
with:
path: ao-cli
- name: Checkout animus-protocol (standalone)
uses: actions/checkout@v4
with:
repository: launchapp-dev/animus-protocol
ref: ${{ env.STANDALONE_TAG }}
path: animus-protocol
- name: Verify standalone lib.rs is present
run: |
set -euo pipefail
STANDALONE_LIB="$GITHUB_WORKSPACE/animus-protocol/animus-plugin-protocol/src/lib.rs"
if [ ! -f "$STANDALONE_LIB" ]; then
echo "::error::standalone animus-plugin-protocol/src/lib.rs not found at $STANDALONE_LIB"
exit 1
fi
echo "Resolved standalone lib.rs at $STANDALONE_LIB"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Cargo build artifacts
uses: Swatinem/rust-cache@v2
with:
workspaces: ao-cli
- name: Run protocol drift test
working-directory: ao-cli
env:
ANIMUS_STANDALONE_PROTOCOL_PATH: ${{ github.workspace }}/animus-protocol/animus-plugin-protocol/src/lib.rs
run: |
cargo test --locked -p orchestrator-plugin-host --test protocol_drift -- --nocapture