Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/aeon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ jobs:

# Allowlist. Upstream had a claude/grok binary, so ANY other value was
# silently rewritten to claude. These four are the ones measured end to
# end on a real runner (aaronjmars/harness-adapter, Tier 4).
# end on a real runner (Tier 4).
# Deliberately NOT here, each for a measured reason:
# opencode — its .result carried the agent's narration instead of the
# deliverable (fixed in the adapter, but it still loops to
Expand Down
18 changes: 8 additions & 10 deletions harness-adapter/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
# harness-adapter — vendored subset
# harness-adapter

**One Claude Code-shaped contract, six coding-agent harnesses.**

This is a **vendored copy** inside `aeon-openrouter`, trimmed to exactly what the
workflow runs: the `run-harness` dispatcher and the six adapters aeon can dispatch
to — **claude, grok, codex, pi, vibe, kimi**. The full project — three more
harnesses (`opencode`, `copilot`, `agy`), the live test suite, and the
harness-by-harness research — lives upstream at
[aaronjmars/harness-adapter](https://github.com/aaronjmars/harness-adapter). Fixes
land there first and are re-vendored here.
This directory is exactly what the workflow runs: the `run-harness` dispatcher and
the six adapters aeon can dispatch to — **claude, grok, codex, pi, vibe, kimi**.
It is self-contained, so fixes land here directly. Three further harnesses
(`opencode`, `copilot`, `agy`) were evaluated and deliberately left out; the
per-harness reasons are recorded in the allowlist comment in
`.github/workflows/aeon.yml`.

`run-harness` wraps each CLI behind one headless interface — Claude Code's: prompt
on stdin, flags mirroring `claude -p`, one JSON envelope on stdout. Swap the first
Expand Down Expand Up @@ -174,7 +173,6 @@ docs/aeon-integration.md deployment runbook: wiring the swap into a live aeon

The normalize-to-Claude's-envelope pattern, the grok permission stance, and the
thought-firewall come from [aeonfun/aeon](https://github.com/aeonfun/aeon)'s
`run-grok.sh`. The full nine-harness research, sources, and live test suite are in
the upstream [aaronjmars/harness-adapter](https://github.com/aaronjmars/harness-adapter).
`run-grok.sh`.

MIT — see [LICENSE](LICENSE).
18 changes: 7 additions & 11 deletions harness-adapter/docs/aeon-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
A deployment runbook for putting `run-harness` into [aeonfun/aeon](https://github.com/aeonfun/aeon)
so a skill can run on **codex, pi, vibe, or kimi** instead of only claude/grok.

The reference implementation is `aaronjmars/aeon-harness@harness-swap-4` — a full
aeon fork with every change below applied and verified on a real GitHub runner
(6-harness × 3-scenario matrix, verified in the upstream
[harness-adapter](https://github.com/aaronjmars/harness-adapter) test suite, Tier 4).
This document is how to reproduce it on a fresh aeon instance, and what each
change is for so you can review rather than copy blind.
Every change below was applied to a full aeon fork and verified on a real GitHub
runner (6-harness × 3-scenario matrix, Tier 4). This document is how to reproduce
it on a fresh aeon instance, and what each change is for so you can review rather
than copy blind.

---

Expand Down Expand Up @@ -148,8 +146,7 @@ skills are overwhelmingly **research** skills.
Getting this wrong is silent: three harnesses each lost the network a different
way, and every failed run was **green** — valid envelope, exit 0, scorer 3–4/5 —
while committing fabricated or empty output. The fixes are in the adapters
(pi/vibe/codex) and one compat clause; see the upstream
[harness-adapter](https://github.com/aaronjmars/harness-adapter) test suite for the full account.
(pi/vibe/codex) and one compat clause.
The takeaway for operating an instance: **a green run is not proof the skill did
its job.** Spot-check committed `output/` content, especially for research skills.

Expand Down Expand Up @@ -254,9 +251,8 @@ output**:
- `memory/token-usage.csv` — non-zero tokens, and the model that actually ran
- `memory/skill-health/<skill>.json` — a real score, not an empty no-op

The reference fork's final grid (all four × three scenarios, verified by output)
is the "FINAL verified grid" in the upstream
[harness-adapter](https://github.com/aaronjmars/harness-adapter) test suite.
The reference fork's final grid covered all four harnesses × three scenarios, each
verified by committed output rather than by exit code.

---

Expand Down