mirror of
https://github.com/msitarzewski/agency-agents.git
synced 2026-10-14 18:17:16 +00:00
test-convert-outputs.sh's Python fence model read fences only at column 0. With an indented opening fence and a column-0 closer - valid CommonMark that GitHub renders, lint accepts and convert_openclaw splits correctly - the model missed the opener and treated the closer as its own opener, so it reported a torn fenced block across SOUL.md/AGENTS.md and failed the Check Tools workflow on an agent file that was fine. Mirror lib.sh's fence_open_p / fence_closes_p (up to three spaces, same character, a closer at least as long as the opener with nothing but whitespace after the run) so the eval sees the same blocks the converter does. test-convert-fence-model.sh builds a throwaway repo with one such fixture and runs the real eval; on the previous model it fails with the false torn-block report, and with this change all tools validate. The full roster still passes with zero manifest drift.
71 lines
2.6 KiB
YAML
71 lines
2.6 KiB
YAML
name: Check Tools Consistency
|
|
|
|
# Runs on every PR (no path filter on purpose): a new or renamed tool must trip
|
|
# this check even when nobody touched tools.json or the install/convert scripts.
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
check-tools:
|
|
name: tools.json is the single source of truth
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Validate tool set
|
|
run: |
|
|
chmod +x scripts/check-tools.sh
|
|
./scripts/check-tools.sh
|
|
|
|
- name: Validate generated Hermes plugin
|
|
run: python3 scripts/check-hermes-plugin.py
|
|
|
|
- name: Validate converted YAML frontmatter
|
|
run: bash scripts/test-convert-frontmatter.sh
|
|
|
|
- name: Reject colliding agent slugs before conversion
|
|
run: bash scripts/test-convert-slug-collisions.sh
|
|
|
|
- name: Refuse symlinked conversion output directories
|
|
run: bash scripts/test-convert-symlink-output.sh
|
|
|
|
- name: Validate converted outputs (round-trip, strict parse, counts, drift)
|
|
# Drift is advisory on pull requests (agent PRs always move their own manifest line;
|
|
# maintainers regenerate at landing) and enforced on pushes to main.
|
|
run: bash scripts/test-convert-outputs.sh ${{ github.event_name == 'pull_request' && '--drift=advisory' || '' }}
|
|
|
|
- name: Parse indented code fences like lib.sh in the outputs eval
|
|
run: bash scripts/test-convert-fence-model.sh
|
|
|
|
- name: Validate agent selection (install.sh --agent / --agents-file)
|
|
run: bash scripts/test-agent-selection.sh
|
|
|
|
- name: Protect unrelated Hermes destinations
|
|
run: bash scripts/test-install-hermes-destination.sh
|
|
|
|
- name: Reject partial installs after conversion failure
|
|
run: bash scripts/test-install-conversion-failure.sh
|
|
|
|
- name: Validate shared destinations for detected tools
|
|
run: bash scripts/test-install-all-path-collision.sh
|
|
|
|
- name: Validate complete selected installs
|
|
run: bash scripts/test-install-selection-completeness.sh
|
|
|
|
- name: Surface parallel conversion failures and clean temp output
|
|
run: bash scripts/test-convert-parallel-failure.sh
|
|
|
|
- name: Reject unclosed agent frontmatter
|
|
run: bash scripts/test-frontmatter-closing.sh
|
|
|
|
- name: Reject code fences that do not nest or never close
|
|
run: bash scripts/test-lint-fences.sh
|
|
|
|
- name: Unknown options fail; --help lists every option
|
|
run: bash scripts/test-cli-usage.sh
|
|
|
|
- name: Keep installing after one tool fails, then exit non-zero
|
|
run: bash scripts/test-install-continue-after-failure.sh
|