ADF Agent Validation #36
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: ADF Agent Validation | |
| on: | |
| schedule: | |
| - cron: "0 2 * * *" | |
| workflow_dispatch: | |
| inputs: | |
| config_path: | |
| description: "Path to orchestrator config file" | |
| required: false | |
| default: "/opt/ai-dark-factory/orchestrator.toml" | |
| type: string | |
| skip_model_probe: | |
| description: "Skip model availability probe (faster)" | |
| required: false | |
| default: "false" | |
| type: boolean | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| CARGO_INCREMENTAL: 0 | |
| CARGO_NET_RETRY: 10 | |
| jobs: | |
| agent-validation: | |
| name: Validate All ADF Agents | |
| runs-on: [self-hosted, bigbox] | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-action@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Build adf binary | |
| run: | | |
| cargo build --release -p terraphim_orchestrator --bin adf | |
| - name: Run agent validation (all modes) | |
| id: validate | |
| run: | | |
| CONFIG_PATH="${{ inputs.config_path || '/opt/ai-dark-factory/orchestrator.toml' }}" | |
| SKIP_MODEL="" | |
| if [ "${{ inputs.skip_model_probe }}" = "true" ]; then | |
| SKIP_MODEL="--skip-model-probe" | |
| fi | |
| if [ -f "$CONFIG_PATH" ]; then | |
| ./target/release/adf agent validate-all --config "$CONFIG_PATH" --format json $SKIP_MODEL > adf-validation-report.json 2>&1 | |
| EXIT_CODE=$? | |
| echo "exit_code=$EXIT_CODE" >> $GITHUB_OUTPUT | |
| echo "report_file=adf-validation-report.json" >> $GITHUB_OUTPUT | |
| else | |
| echo "config_file_not_found=true" >> $GITHUB_OUTPUT | |
| echo "exit_code=1" >> $GITHUB_OUTPUT | |
| echo "WARNING: Config file $CONFIG_PATH not found, skipping validation" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| - name: Upload validation report | |
| if: env.exit_code != '1' || env.config_file_not_found != 'true' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: adf-validation-report | |
| path: adf-validation-report.json | |
| retention-days: 7 | |
| - name: Parse and display results | |
| if: env.exit_code != '1' || env.config_file_not_found != 'true' | |
| run: | | |
| if command -v jq &> /dev/null; then | |
| TOTAL=$(jq '.total // 0' adf-validation-report.json 2>/dev/null || echo "0") | |
| RUNNABLE=$(jq '.runnable // 0' adf-validation-report.json 2>/dev/null || echo "0") | |
| FAILED=$(jq '.failed // 0' adf-validation-report.json 2>/dev/null || echo "0") | |
| ALL_MODES=$(jq '.all_modes_runnable' adf-validation-report.json 2>/dev/null || echo "unknown") | |
| echo "## ADF Agent Validation Summary" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "| Metric | Value |" >> $GITHUB_STEP_SUMMARY | |
| echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY | |
| echo "| Total Agents | $TOTAL |" >> $GITHUB_STEP_SUMMARY | |
| echo "| Runnable | $RUNNABLE |" >> $GITHUB_STEP_SUMMARY | |
| echo "| Failed | $FAILED |" >> $GITHUB_STEP_SUMMARY | |
| echo "| All Modes Runnable | $ALL_MODES |" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| # List failed agents | |
| FAILED_AGENTS=$(jq -r '.agents | to_entries[] | select(.value.runnable == false) | "\(.key): \(.value.warnings | join(", "))"' adf-validation-report.json 2>/dev/null || echo "") | |
| if [ -n "$FAILED_AGENTS" ]; then | |
| echo "### Failed Agents" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| for LINE in $FAILED_AGENTS; do | |
| echo "- $LINE" >> $GITHUB_STEP_SUMMARY | |
| done | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Full report: [adf-validation-report.json](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_STEP_SUMMARY | |
| else | |
| cat adf-validation-report.json | head -100 | |
| fi | |
| - name: Fail if validation failed | |
| if: env.exit_code == '1' && env.config_file_not_found != 'true' | |
| run: | | |
| echo "Validation failed. One or more agents have runnable=false in one or more trigger modes." | |
| echo "See the uploaded artifact for full details." | |
| exit 1 | |
| - name: Skip if config not found | |
| if: env.config_file_not_found == 'true' | |
| run: | | |
| echo "Config file not found. Skipping validation (this is expected in development environments)." |