chore(deps): bump minijinja from 2.20.0 to 2.21.0 (#496) #2067
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
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUSTFLAGS: "-Dwarnings" | |
| permissions: | |
| contents: read | |
| jobs: | |
| check: | |
| name: fmt + clippy + test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| # Needed for friction-log checks that diff/scan commit history. | |
| fetch-depth: 0 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install nextest | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-nextest | |
| - name: fmt | |
| run: cargo fmt --all -- --check | |
| - name: clippy | |
| run: cargo clippy --workspace --all-targets -- -D warnings | |
| - name: clippy (convergio-embed --features fastembed) | |
| # ADR-0038 F1-β: opt-in real-model code path. Default workspace | |
| # build does not pull `fastembed-rs` (heavy ONNX dep); this | |
| # step ensures the feature still compiles + lints clean. | |
| run: cargo clippy -p convergio-embed --features fastembed --all-targets -- -D warnings | |
| - name: test (nextest) | |
| # Faster than `cargo test`. Runs unit, integration, and e2e | |
| # tests; doc tests are not in scope for nextest, so they | |
| # run separately below. | |
| run: cargo nextest run --workspace --no-fail-fast | |
| - name: doc tests | |
| run: cargo test --workspace --doc | |
| - name: file-size guard (300 lines max) | |
| run: | | |
| fail=0 | |
| while IFS= read -r f; do | |
| lines=$(wc -l < "$f" | tr -d ' ') | |
| if [ "$lines" -gt 300 ]; then | |
| echo "::error file=$f::has $lines lines (max 300)" | |
| fail=1 | |
| fi | |
| done < <(git ls-files '*.rs') | |
| exit $fail | |
| - name: agent context budget | |
| # CONSTITUTION § 13. Hard-fail on >10k lines/crate; soft-warn | |
| # on >5k. CI surfaces the soft-warn to the PR but does not | |
| # block on it. | |
| # GitHub Actions runs each `run:` block under `bash --noprofile | |
| # --norc -eo pipefail`, so a non-zero exit aborts before we | |
| # can inspect $?. Capture the exit code via `||` to keep the | |
| # block alive on exit 2 (soft-warn). | |
| run: | | |
| rc=0 | |
| ./scripts/check-context-budget.sh || rc=$? | |
| if [ "$rc" -eq 2 ]; then | |
| echo "::warning::context-budget soft cap exceeded (advisory)" | |
| exit 0 | |
| fi | |
| exit $rc | |
| - name: friction-log mirrored in daemon | |
| # Closes F40. Every new actionable F## row in the friction | |
| # log must declare a daemon task UUID in the | |
| # "Daemon task mirror" section of the same file. See | |
| # AGENTS.md § Friction log ↔ daemon mirror. | |
| run: BASE_REF=origin/${{ github.base_ref || 'main' }} ./scripts/check-friction-log-mirror.sh | |
| - name: ADR coherence (advisory) | |
| # T1.17 / Tier-2 retrieval. Soft-warn only: CI surfaces drift | |
| # between ADR frontmatter, the README index, and workspace | |
| # members — it does not block. | |
| run: | | |
| cargo run -q -p convergio-cli -- coherence check || \ | |
| echo "::warning::cvg coherence check found drift (advisory)" | |
| - name: route-table coherence (advisory) | |
| # T1.18 / Tier-2 retrieval. Diffs actual axum routes under | |
| # `crates/convergio-server/src/routes/` against the | |
| # `### Endpoints` table in ARCHITECTURE.md and the HTTP | |
| # routes bullet list in AGENTS.md. Soft-warn only while the | |
| # doc surface re-converges with code (PR #138 just synced | |
| # ARCHITECTURE; ambiguous multi-path table rows still | |
| # surface as method_mismatch noise — see PR description). | |
| run: | | |
| cargo run -q -p convergio-cli -- coherence routes --output plain || \ | |
| echo "::warning::cvg coherence routes found drift (advisory)" | |
| - name: cvg coherence adrs is current (strict) | |
| run: cargo run -p convergio-cli -- coherence adrs --strict --output plain | |
| - name: cvg coherence agents (advisory) | |
| # Flags merged PRs whose author skipped the multi-agent | |
| # protocol (no agent_registry entry / no heartbeat in window / | |
| # no coordination messages). Advisory only — we do not flip | |
| # `--strict` here until the SessionStart hook (sister PR | |
| # `feat/session-register-and-poll-hook`) has bedded in for | |
| # ~2 weeks. Until then this is a regression-tracking signal, | |
| # not a hard gate. Daemon is unreachable in CI by design, so | |
| # the verifier degrades gracefully (`daemon_reachable=false`) | |
| # and emits no findings. | |
| run: cargo run -p convergio-cli -- coherence agents --since 7d --output plain || true | |
| - name: cvg coherence handshake (E2E loop smoke test) | |
| # F1 / 5th verifier. Boots a temporary daemon (tempdir DB so | |
| # migrations run cleanly), runs two synthetic agents through | |
| # register → publish → poll → ack, asserts the round-trip | |
| # closes within 10s. Catches regressions in any of those | |
| # four seams. | |
| run: | | |
| export CONVERGIO_DB="sqlite:///tmp/convergio-handshake-ci.db?mode=rwc" | |
| rm -f /tmp/convergio-handshake-ci.db /tmp/convergio-handshake-ci.db-wal /tmp/convergio-handshake-ci.db-shm | |
| # Build server + cli binaries first so the cargo run below | |
| # only takes the time to start, not to compile (CI cargo | |
| # run can take 20-30s on cold cache, racing the probe loop). | |
| cargo build -q -p convergio-server -p convergio-cli | |
| cargo run -q -p convergio-server -- start --bind 127.0.0.1:18421 & | |
| DAEMON_PID=$! | |
| trap 'kill $DAEMON_PID 2>/dev/null || true; rm -f /tmp/convergio-handshake-ci.db*' EXIT | |
| # Probe up to 120s (240 × 0.5s) — health + the bootstrap | |
| # action catalog used by MCP/CLI discovery. /v1/api/actions is | |
| # intentionally exempt from purpose binding so this smoke check | |
| # cannot create durable rows while waiting for the daemon. | |
| ready=0 | |
| for _ in $(seq 1 240); do | |
| if curl -fsS -H 'x-purpose-id: 00000000-0000-4000-8000-000000000443' http://127.0.0.1:18421/v1/health >/dev/null 2>&1 \ | |
| && curl -fsS http://127.0.0.1:18421/v1/api/actions >/dev/null 2>&1; then | |
| ready=1 | |
| break | |
| fi | |
| sleep 0.5 | |
| done | |
| if [ "$ready" != "1" ]; then | |
| echo "::error::daemon never became ready after 120s; aborting handshake" | |
| exit 1 | |
| fi | |
| cargo run -q -p convergio-cli -- coherence handshake \ | |
| --daemon http://127.0.0.1:18421 --timeout-seconds 10 | |
| - name: legibility audit | |
| # CONSTITUTION § 16. Combines static caps + index density + | |
| # audit chain integrity into a 0-100 score. Advisory only: | |
| # CI never blocks on legibility (it is a regression-tracking | |
| # signal, not a hard gate). Floor is 70; target 85. | |
| run: | | |
| rc=0 | |
| ./scripts/legibility-audit.sh || rc=$? | |
| if [ "$rc" -eq 1 ]; then | |
| echo "::warning::legibility score below 50/100 — repo may be hard for an agent to follow (CONSTITUTION § 16)" | |
| elif [ "$rc" -eq 2 ]; then | |
| echo "::warning::legibility score 50-69/100 — under target floor of 70/100 (CONSTITUTION § 16)" | |
| fi | |
| # Advisory only: never fail CI on legibility (gate is | |
| # static caps + supply chain). | |
| exit 0 | |
| docs-drift: | |
| name: Docs drift (advisory) | |
| # Advisory only — surfaces AUTO-block + docs/INDEX.md drift | |
| # without blocking PR merges. Per ADR-0015 § Drift policy, the | |
| # nightly cron in `.github/workflows/auto-blocks-drift.yml` is | |
| # the canonical reconciliation mechanism, eliminating the | |
| # O(N²) cascade caused by per-PR regen gates (retro 544e78cc | |
| # P2-9). | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: docs AUTO blocks (advisory) | |
| run: | | |
| cargo run -q -p convergio-cli -- docs regenerate --check || \ | |
| echo "::warning::AUTO blocks drift detected (advisory; reconciled nightly)" | |
| - name: docs INDEX (advisory) | |
| run: | | |
| ./scripts/generate-docs-index.sh --check || \ | |
| echo "::warning::docs/INDEX.md drift detected (advisory; reconciled nightly)" | |
| supply-chain: | |
| name: cargo deny + audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| # friction-log mirror check needs git diff against base | |
| fetch-depth: 0 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install supply-chain tools | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-deny,cargo-audit | |
| env: | |
| RUSTFLAGS: "" | |
| - name: cargo deny | |
| run: cargo deny --locked check advisories bans licenses sources | |
| - name: cargo audit | |
| run: cargo audit |