Skip to content

rm skills

rm skills #345

Workflow file for this run

name: ci_2_virt_node
on:
push:
pull_request:
types:
- opened
- synchronize
- reopened
permissions:
actions: read
contents: read
jobs:
package-wheel:
name: package-wheel
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Free hosted runner disk space
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: true
tool-cache: false
swap-storage: false
- name: Scan and clean temporary data
run: >-
sudo env GITHUB_ACTIONS="$GITHUB_ACTIONS"
RUNNER_TEMP="$RUNNER_TEMP"
"$(command -v python3)"
scripts/ci_2_virt_node_workflow.py scan-and-clean-temp
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.10"
- name: Install host dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
git \
pigz \
protobuf-compiler \
python3-venv \
rsync
- name: Verify Docker availability
run: |
command -v docker >/dev/null
if ! docker info >/dev/null 2>&1; then
sudo systemctl start docker
docker info >/dev/null
fi
docker version
- name: Install Python dependencies
run: python3 -m pip install PyYAML
- name: Sync rather_no_git_submodule workspace inputs
run: python3 fluxon_rs/scripts/rather_no_git_submodule.py
- name: Write package input suite
run: |
python3 scripts/ci_2_virt_node_workflow.py write-suite \
--source fluxon_test_stack/ci_test_list.yaml \
--output "$RUNNER_TEMP/ci_test_list.ci.yaml" \
--repository "$GITHUB_REPOSITORY"
- name: Package Fluxon wheel and CI release
run: |
timeout --preserve-status --signal=INT 10800s \
python3 fluxon_test_stack/ci_2_virt_node.py \
--suite-path "$RUNNER_TEMP/ci_test_list.ci.yaml" \
--workdir .dever/ci_2_virt_node \
--testbed-hostworkdir "$RUNNER_TEMP/fluxon_deploy" \
--skip-dispatch \
--skip-start-testbed \
--skip-runner \
--print-generated
- name: Archive Fluxon CI release
run: |
tar -I 'pigz -p 4' \
--exclude='fluxon_release/ext_images' \
-cf "$RUNNER_TEMP/fluxon-ci-release.tar.gz" \
fluxon_release
- name: Upload Fluxon CI release
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: fluxon-ci-release-${{ github.sha }}
if-no-files-found: error
retention-days: 3
compression-level: 0
path: ${{ runner.temp }}/fluxon-ci-release.tar.gz
- name: Collect package failure-analysis context
if: ${{ failure() && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
run: |
python3 scripts/ci_codex_failure_analysis.py collect-context \
--repo-root "$GITHUB_WORKSPACE" \
--runner-temp "$RUNNER_TEMP" \
--context-root "$RUNNER_TEMP/codex-failure-context"
- name: Upload package failure-analysis context
if: ${{ failure() && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: codex-failure-context-${{ github.run_id }}-package-wheel
if-no-files-found: error
include-hidden-files: true
retention-days: 14
compression-level: 6
path: ${{ runner.temp }}/codex-failure-context/**
ci-2-virt-node:
name: ci-2-virt-node
needs: package-wheel
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Free hosted runner disk space
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: true
tool-cache: false
swap-storage: false
- name: Scan and clean temporary data
run: >-
sudo env GITHUB_ACTIONS="$GITHUB_ACTIONS"
RUNNER_TEMP="$RUNNER_TEMP"
"$(command -v python3)"
scripts/ci_2_virt_node_workflow.py scan-and-clean-temp
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.10"
- name: Install host dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
git \
pigz \
protobuf-compiler \
python3-venv \
rsync
- name: Verify Docker availability
run: |
command -v docker >/dev/null
if ! docker info >/dev/null 2>&1; then
sudo systemctl start docker
docker info >/dev/null
fi
docker version
- name: Install Python dependencies
run: python3 -m pip install PyYAML
- name: Sync rather_no_git_submodule workspace inputs
run: python3 fluxon_rs/scripts/rather_no_git_submodule.py
- name: Download Fluxon CI release
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
name: fluxon-ci-release-${{ github.sha }}
path: ${{ runner.temp }}/fluxon-ci-release
- name: Materialize Fluxon CI release
run: |
rm -rf fluxon_release
tar -xzf "$RUNNER_TEMP/fluxon-ci-release/fluxon-ci-release.tar.gz"
test -f fluxon_release/ext_images.tar.gz
tar -xzf fluxon_release/ext_images.tar.gz -C fluxon_release
test -f fluxon_release/fluxon_release.sha256
test -f fluxon_release/profiles/fluxon_tcp_thread/fluxon_release.sha256
test -f fluxon_release/test_rsc/fluxon_tcp_thread/fluxon_test_rsc.sha256
test -f fluxon_release/ext_images/ext_images.sha256
- name: Write test-all suite
run: |
python3 scripts/ci_2_virt_node_workflow.py write-suite \
--source fluxon_test_stack/ci_test_list.yaml \
--output "$RUNNER_TEMP/ci_test_list.ci.yaml" \
--repository "$GITHUB_REPOSITORY"
- name: Run test-all flow
run: |
set +e
timeout --preserve-status --signal=INT 17000s \
python3 fluxon_test_stack/ci_2_virt_node.py \
--suite-path "$RUNNER_TEMP/ci_test_list.ci.yaml" \
--print-generated \
--testbed-hostworkdir "$RUNNER_TEMP/fluxon_deploy" \
--skip-pack
rc=$?
if [ "$rc" -eq 0 ]; then
exit 0
fi
echo "test-all failed or timed out before GitHub job cancellation: rc=$rc"
python3 scripts/ci_2_virt_node_workflow.py print-failure-diagnostics \
--workdir .dever/ci_2_virt_node/runner_run
exit "$rc"
- name: Normalize ci_2_virt_node debug artifact permissions
if: ${{ always() }}
run: |
chmod -R a+rX .dever/ci_2_virt_node || true
find .dever/ci_2_virt_node -type f -name '*.yaml' -exec chmod a+r {} + || true
find .dever/ci_2_virt_node -type f -name '*.log' -exec chmod a+r {} + || true
find .dever/ci_2_virt_node -type f -name '*.json' -exec chmod a+r {} + || true
find .dever/ci_2_virt_node -type f -name '*.html' -exec chmod a+r {} + || true
find .dever/ci_2_virt_node -type f -name '*.txt' -exec chmod a+r {} + || true
find .dever/ci_2_virt_node -type f -name '*.sha256' -exec chmod a+r {} + || true
find .dever/ci_2_virt_node -path '*/pack_release_runtime/project-data/*' \
\( -path '*/instances/*/logs' -o -path '*/instances/*/release' -o -path '*/assemblies/*/profile' \) \
-exec chmod -R a+rX {} + || true
- name: Collect Codex failure-analysis context
if: ${{ failure() && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
run: |
python3 scripts/ci_codex_failure_analysis.py collect-context \
--repo-root "$GITHUB_WORKSPACE" \
--runner-temp "$RUNNER_TEMP" \
--context-root "$RUNNER_TEMP/codex-failure-context"
- name: Upload Codex failure-analysis context
if: ${{ failure() && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: codex-failure-context-${{ github.run_id }}-test-all
if-no-files-found: error
include-hidden-files: true
retention-days: 14
compression-level: 6
path: ${{ runner.temp }}/codex-failure-context/**
- name: Upload ci_2_virt_node debug artifacts
if: ${{ always() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ci-2-virt-node-debug-${{ github.sha }}
if-no-files-found: warn
include-hidden-files: true
compression-level: 1
path: |
.dever/ci_2_virt_node/**
ci-large-scale-mq:
name: ci-large-scale-mq
needs: package-wheel
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Free hosted runner disk space
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: true
tool-cache: false
swap-storage: false
- name: Scan and clean temporary data
run: >-
sudo env GITHUB_ACTIONS="$GITHUB_ACTIONS"
RUNNER_TEMP="$RUNNER_TEMP"
"$(command -v python3)"
scripts/ci_2_virt_node_workflow.py scan-and-clean-temp
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.10"
- name: Download Fluxon CI release
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
name: fluxon-ci-release-${{ github.sha }}
path: ${{ runner.temp }}/fluxon-ci-release
- name: Materialize Fluxon CI release
run: |
rm -rf fluxon_release
tar -xzf "$RUNNER_TEMP/fluxon-ci-release/fluxon-ci-release.tar.gz"
test -f fluxon_release/ext_images.tar.gz
tar -xzf fluxon_release/ext_images.tar.gz -C fluxon_release
test -f fluxon_release/fluxon_release.sha256
test -f fluxon_release/profiles/fluxon_tcp_thread/fluxon_release.sha256
test -f fluxon_release/test_rsc/fluxon_tcp_thread/fluxon_test_rsc.sha256
test -f fluxon_release/ext_images/ext_images.sha256
- name: Install packaged Fluxon wheel
run: |
python3 - <<'PY'
from pathlib import Path
import subprocess
import sys
wheels = sorted(Path("fluxon_release").glob("fluxon-*.whl"))
if len(wheels) != 1:
raise SystemExit(f"expected exactly one packaged Fluxon wheel, found {len(wheels)}")
subprocess.run(
[
sys.executable,
"-m",
"pip",
"install",
"--force-reinstall",
str(wheels[0]),
],
check=True,
)
subprocess.run([sys.executable, "-m", "pip", "check"], check=True)
subprocess.run(
[
sys.executable,
"-I",
"-c",
(
"import etcd3; "
"import fluxon_py; "
"from fluxon_py._api_ext_chan.mq_config_check import MIN_TTL; "
"print(f'Fluxon dependency probe passed: {fluxon_py.__file__=} {MIN_TTL=}')"
),
],
check=True,
)
PY
- name: Run bare-local large-scale MQ
run: |
python3 -u fluxon_test_stack/top_attention_test_index/_largescale_mq.py \
--release-dir fluxon_release \
--workdir .dever/ci_large_scale_mq \
--owner-count 2 \
--owner-dram-gib 1 \
--producer-count 80 \
--consumer-count 8 \
--threads-per-process 1 \
--duration-seconds 90 \
--metric-warmup-seconds 60 \
--value-size 256 \
--op-timeout-seconds 5 \
--cluster-ready-timeout-seconds 1800 \
--consumer-sim-min-ms 1 \
--consumer-sim-max-ms 1
- name: Normalize large-scale MQ debug artifact permissions
if: ${{ always() }}
run: |
chmod -R a+rX .dever/ci_large_scale_mq || true
find .dever/ci_large_scale_mq -type f -name '*.yaml' -exec chmod a+r {} + || true
find .dever/ci_large_scale_mq -type f -name '*.log' -exec chmod a+r {} + || true
find .dever/ci_large_scale_mq -type f -name '*.json' -exec chmod a+r {} + || true
find .dever/ci_large_scale_mq -type f -name '*.jsonl' -exec chmod a+r {} + || true
- name: Collect large-scale MQ failure-analysis context
if: ${{ failure() && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
run: |
python3 scripts/ci_codex_failure_analysis.py collect-context \
--repo-root "$GITHUB_WORKSPACE" \
--runner-temp "$RUNNER_TEMP" \
--context-root "$RUNNER_TEMP/codex-failure-context"
- name: Upload large-scale MQ failure-analysis context
if: ${{ failure() && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: codex-failure-context-${{ github.run_id }}-large-scale
if-no-files-found: error
include-hidden-files: true
retention-days: 14
compression-level: 6
path: ${{ runner.temp }}/codex-failure-context/**
- name: Upload large-scale MQ debug artifacts
if: ${{ always() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ci-large-scale-mq-debug-${{ github.sha }}
if-no-files-found: warn
include-hidden-files: true
compression-level: 1
path: |
.dever/ci_large_scale_mq/*.json
.dever/ci_large_scale_mq/*.jsonl
.dever/ci_large_scale_mq/benchmark_config.py
.dever/ci_large_scale_mq/configs/*.yaml
.dever/ci_large_scale_mq/logs/**/*.log
.dever/ci_large_scale_mq/services/**/*.log
.dever/ci_large_scale_mq/services/**/shared.json
codex_failure_analysis:
name: Codex failure analysis
needs:
- package-wheel
- ci-2-virt-node
- ci-large-scale-mq
if: ${{ always() && (needs['package-wheel'].result == 'failure' || needs['ci-2-virt-node'].result == 'failure' || needs['ci-large-scale-mq'].result == 'failure') && vars.CODEX_FAILURE_ANALYSIS_ENABLED == 'true' }}
environment: OPENAI_API_KEY
runs-on: ubuntu-latest
timeout-minutes: 90
permissions:
actions: read
contents: read
steps:
- name: Check out failed revision
uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
- name: Check OpenAI API configuration availability
id: api_config
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}
run: python3 scripts/ci_codex_failure_analysis.py check-api-config
- name: Fetch current and historical failure evidence
if: ${{ steps.api_config.outputs.available == 'true' }}
env:
GH_TOKEN: ${{ github.token }}
CURRENT_JOB_NAME: ${{ needs['ci-large-scale-mq'].result == 'failure' && 'ci-large-scale-mq' || needs['ci-2-virt-node'].result == 'failure' && 'ci-2-virt-node' || 'package-wheel' }}
CURRENT_CONTEXT_ARTIFACT_NAME: ${{ needs['ci-large-scale-mq'].result == 'failure' && format('codex-failure-context-{0}-large-scale', github.run_id) || needs['ci-2-virt-node'].result == 'failure' && format('codex-failure-context-{0}-test-all', github.run_id) || format('codex-failure-context-{0}-package-wheel', github.run_id) }}
run: |
python3 scripts/ci_codex_failure_analysis.py fetch-evidence \
--repository "$GITHUB_REPOSITORY" \
--current-run-id "$GITHUB_RUN_ID" \
--current-job-name "$CURRENT_JOB_NAME" \
--current-context-artifact-name "$CURRENT_CONTEXT_ARTIFACT_NAME" \
--workflow-file all_test.yml \
--history-failure-limit 5 \
--artifact-wait-seconds 60 \
--artifact-poll-seconds 5 \
--context-root failure-context
- name: Build complete evidence inventory
if: ${{ steps.api_config.outputs.available == 'true' }}
run: >-
python3 scripts/ci_codex_failure_analysis.py build-inventory
--context-root failure-context
- name: Run Codex failure analysis
id: run_codex
if: ${{ steps.api_config.outputs.available == 'true' }}
uses: openai/codex-action@52fe01ec70a42f454c9d2ebd47598f9fd6893d56 # v1.11
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
responses-api-endpoint: ${{ format('{0}/responses', secrets.OPENAI_BASE_URL) }}
prompt-file: .github/codex/ci-failure-analysis-prompt.md
permission-profile: ":read-only"
safety-strategy: drop-sudo
effort: high
- name: Print Codex failure report
if: ${{ steps.api_config.outputs.available == 'true' && steps.run_codex.outputs.final-message != '' }}
env:
CODEX_REPORT: ${{ steps.run_codex.outputs.final-message }}
FAILED_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}
run: >-
python3 scripts/ci_codex_failure_analysis.py print-report
--summary "$GITHUB_STEP_SUMMARY"