Skip to content

chore(release): prepare v0.23.0 (#347) #793

chore(release): prepare v0.23.0 (#347)

chore(release): prepare v0.23.0 (#347) #793

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
- name: Ruff check
run: python -m ruff check .
- name: Ruff format
run: python -m ruff format --check .
- name: Mypy
run: python -m mypy
- name: Version sync
run: python scripts/version_sync.py --check
- name: Managed snapshot
run: python scripts/managed_snapshot.py --check
test:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
- name: Install
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
- name: Pytest
if: matrix.python != '3.12'
run: python -m pytest -q
- name: Pytest with coverage gate
if: matrix.python == '3.12'
run: python -m pytest -q --cov=brigade --cov-report=term --cov-fail-under=78
content-guard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
path: brigade
- uses: actions/checkout@v5
with:
repository: solomonneas/content-guard
ref: v0.1.1
path: content-guard
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Scan
run: |
cd brigade
PYTHONPATH=../content-guard/src python -m content_guard scan . \
--policy ../content-guard/policies/public-repo.json
repo-metadata:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
- name: Command Inventory
run: brigade roadmap commands --check
env:
BRIGADE_EXTRAS: "1"
- name: Template Audit
run: brigade security template-audit --target . --json
install-from-source:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
combo:
- name: "repo+claude"
flags: "--depth repo --harnesses claude"
- name: "repo+codex"
flags: "--depth repo --harnesses codex"
- name: "workspace+claude+openclaw"
flags: "--depth workspace --harnesses claude,openclaw"
- name: "workspace+codex+openclaw"
flags: "--depth workspace --harnesses codex,openclaw"
- name: "workspace+hermes"
flags: "--depth workspace --harnesses hermes"
- name: "kitchen-sink"
flags: "--depth workspace --harnesses claude,codex,openclaw,hermes"
- name: "workspace+none"
flags: "--depth workspace --harnesses none"
- name: "repo+claude+publisher"
flags: "--depth repo --harnesses claude --include publisher"
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: pipx install
run: |
python -m pip install --upgrade pip pipx
pipx install .
brigade --version
- name: Init + doctor
run: |
target="$(mktemp -d)"
git init -q -b main "$target"
brigade init --target "$target" ${{ matrix.combo.flags }}
brigade doctor --target "$target"
case "${{ matrix.combo.flags }}" in
*hermes*)
test -f "$target/.hermes/memory-handoffs/TEMPLATE.md"
test -d "$target/.hermes/memory-handoffs/processed"
test -f "$target/.brigade/hermes/workspace.harness.json"
test -f "$target/.brigade/hermes/memory-handoff.harness.json"
grep -q '"handoff_inbox": ".hermes/memory-handoffs"' "$target/.brigade/hermes/workspace.harness.json"
grep -q '"inbox_dir": ".hermes/memory-handoffs"' "$target/.brigade/hermes/memory-handoff.harness.json"
! grep -R '.claude/memory-handoffs' "$target/.brigade/hermes"
brigade handoff sources init --target "$target" --force
brigade handoff draft --target "$target" --inbox hermes \
--title "Hermes CI smoke" \
--summary "Hermes can write a local Brigade handoff." \
--content "### Hermes CI smoke
The Hermes inbox follows the shared Brigade handoff contract."
brigade operator verify-harness --harness hermes --target "$target"
;;
esac
quickstart-smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: pipx install
run: |
python -m pip install --upgrade pip pipx
pipx install .
brigade --version
- name: Quickstart (minimal default)
run: |
target="$(mktemp -d)"
git init -q -b main "$target"
brigade operator quickstart --target "$target" --harnesses codex --json
brigade operator doctor --target "$target" --profile local-operator --json
test -f "$target/.brigade/config.json"
test -d "$target/.codex/memory-handoffs"
test -f "$target/.codex/skills/brigade-work/SKILL.md"
test -f "$target/AGENTS.md"
test ! -e "$target/tools"
test ! -e "$target/rules"
test ! -e "$target/INSTALL_FOR_AGENTS.md"
- name: Quickstart (--full)
run: |
target="$(mktemp -d)"
git init -q -b main "$target"
brigade operator quickstart --target "$target" --harnesses codex --full --json
brigade operator doctor --target "$target" --profile local-operator --json
test -f "$target/.codex/skills/frontend/SKILL.md"
test -f "$target/tools/antislop.md"
test -f "$target/INSTALL_FOR_AGENTS.md"
test -f "$target/rules/issue-tdd-loop.md"