Files
waggle-os/docs/plans/HERMES-40-RESULTS-2026-05-19.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

114 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Results — Hermes "~40% faster" closed-loop claim (R6 pilot)
**Verdict: `INCONCLUSIVE-STOPPED`** (pre-registered outcome, manifest §10)
**Spend:** $0.0048 / $5 pilot cap · **Wall:** ~50s · **Model:** `qwen/qwen3-30b-a3b-instruct-2507` (OpenRouter)
**Contract:** `docs/plans/HERMES-40-PREREG-2026-05-19.md` @ `a7b844a` · **Harness:** `f9de7ae`
Reported verbatim against the manifest. No goalpost moving (§11).
## What happened
| Family | task_a tools | R1 trigger (real `planSkillDistillation`) | Skill authored? | Pair |
|---|---|---|---|---|
| F1 trace-wired-behavior | 4 | gated-off (<5, correct) | no | not formed |
| F2 audit-pattern | 2 | gated-off (<5, correct) | no | not formed |
| F3 summarize-subsystem | 6 | **would-fire** (≥5) | **no — model ignored `create_skill`** | not formed |
0/3 families PASSPASS → pre-registered gate §9 (`passFamilies ≥ 2`) failed → **STOP**. All 3 distill-source runs *passed the code grader* (the model is genuinely agentic over the tools; grader/cost-cap/gate/sign-test machinery all functioned).
## Honest reading
The pilot did **not** measure the Hermes effect and find it absent — it **never formed a measurable pair**. The claim is **neither supported nor refuted**. Two precisely-located, distinct causes — both *experiment construction*, not evidence about the claim:
1. **Corpus too small to exercise the loop.** Tasks resolve in 24 tool calls, below the ≥5 distillation threshold. The *real* `planSkillDistillation` correctly returned `null` for F1/F2 (gated-off) — shipped R1 behaving exactly as specified, just under test conditions that never reach it.
2. **30B model under-complies with the meta-directive.** F3 reached 6 tools (R1 *would* fire) yet the model did not call `create_skill` despite the shipped behavioral-rule text in context. A 30B instruct model under-follows a secondary "now distil a skill" instruction.
This is the T3 tier working as designed: **$0.0048 bought the finding that the experiment is underpowered by construction**, instead of $40 on a doomed N=20.
## Effect on the rubric
D1 (closed learning loop) **stays 2** ("solid", wired + deterministically triggered + unit-proven). The Hermes "~40% faster" benchmark remains the open gap between D1=2 and a real premium D1=3 — unchanged from the R5 honest state. Nothing in this pilot lets us claim 3.
What the pilot *did* add (a real, if narrow, datum on the loop's autonomous half): a small instruct model, given the shipped behavioral distillation rule and a qualifying ≥5-tool success, did **not** self-distil. That argues the production loop's reliability depends on either model strength or a more deterministic surfacing than behavioral-prose — relevant to R5b's design (the seam emits a `step`, but authoring still depends on the model acting).
## Pre-registered amendment ask (manifest §10)
To actually measure the speed claim the experiment needs amendment (documented, user-decided per cost-discipline — not a silent re-run):
- **A. Forcing corpus** — larger/deeper corpus + tasks engineered so a correct answer *requires* ≥510 tool calls (reliably trips the real R1 gate).
- **B. Stronger model** — a model that complies with the `create_skill` directive (cost ↑ per the pinned-model amendment process), keeping authoring LLM-side (Hermes-faithful).
- **C. Deterministic distillation arm** — harness mechanically distils a skill from task_a's successful trace, testing reuse-speedup (claim part ii) while *separately* reporting model self-distillation compliance (claim part i). Cheapest path to a real speed number; explicitly decouples the two halves of the Hermes claim.
- **D. Stop here** — record as honestly unproven (rubric already states this); spend nothing further.
No option is taken without an explicit pre-registered amendment + (for B) a cost-cap decision.
## Pilot 3 — Amendment 3 (forcing corpus, qwen-thinking)
**Verdict: `INCONCLUSIVE-STOPPED`** · spend $0.0244 (cum **$0.0385 / $5**) · ~2m15s.
| Family | task_a tools | distill grader | R1 trigger | create_skill called? | Pair |
|---|---|---|---|---|---|
| F1 ingest→export | **5** | **PASS** | **would-fire** | **no** | not formed |
| F2 audit→ingest | **5** | **PASS** | **would-fire** | **no** | not formed |
| F3 export→audit | **5** | **PASS** | **would-fire** | **no** | not formed |
**Amendment 3 succeeded at its purpose.** The forcing corpus reliably produced genuine ≥5-tool, grader-correct successes where the real `planSkillDistillation` **would fire** (in-data, 3/3). The task-difficulty bottleneck (Pilots 12) is solved.
> **⚠ RETRACTED 2026-05-19 PM (Amendment 4).** The "decisive" finding below is **WITHDRAWN**. It was a **harness artifact**: the distill phase was a single `runAgentLoop` turn that ended at the model's answer (no tool_calls → loop exits), so the model was **never given the post-task turn** where production R1 actually distils (`chat.ts` seam fires `planSkillDistillation` *after* the turn → directive surfaced into a *subsequent* turn). The model never declined `create_skill` — it was never asked where it could act. qwen demonstrably *can* call tools (every distill run passed the grader, which requires tool calls). Pilots 13 measured an incomplete harness, not model self-distillation propensity. Fixed via two-phase distill + re-run (Amendment 4). The section is kept for history only.
## Decisive cross-pilot finding (half i of the Hermes claim) — RETRACTED, see banner above
The blocker is now isolated and **model-behavioral**: given a real qualifying success **and** the shipped behavioral distillation rule in context, the **30B model does not call `create_skill`**. Replicated across both variants and the forcing corpus: **6/6 qualifying opportunities → 0 autonomous distillations** (Pilot 1 instruct F3 @6 tools; Pilot 3 thinking @5 tools ×3).
This is a real, citable result, not a null. The Hermes claim has two halves:
- **(i) the loop autonomously distils on success** — **empirically negative on a 30B model.** The trigger is correctly wired (R5b) and *would* fire; the model simply does not act on the in-context directive. Confirms the R5b open concern verbatim: the seam emits a `step`/directive but authoring still depends on the model *acting*.
- **(ii) reuse of a distilled skill → ~40% faster** — **still unmeasured**, blocked behind (i): no skill is ever authored, so no treatment arm forms.
**Rubric impact:** D1 stays 2. New durable datum: a robust closed loop cannot depend on model goodwill to call `create_skill` — premium D1=3 likely requires the seam to *deterministically* distil (or compel it), not merely emit a directive. Directly informs a future R5b hardening.
## Decision after Pilot 3 (user-decided; no autonomous re-run)
- **B. Stronger model** — a frontier agentic model likely complies with `create_skill`; tests whether *both* halves hold. Real $ + bigger build.
- **C. Deterministic distillation arm** — harness mechanically distils a skill from task_a's PASS trace (no reliance on model volunteering), measures half (ii) directly, and separately reports half (i) = the strong negative above. Cheapest path to an actual speed number; also a prototype of the more robust production seam. *(Recommended.)*
- **D. Stop** — record as-is: half (i) empirically negative on 30B (valuable, honest), half (ii) undetermined; D1=2.
## Pilot 4 — Amendment 4 (fixed two-phase harness + sonnet-4.6) — VALID RESULT, R6 CONCLUDES
**Verdict: `INCONCLUSIVE-STOPPED`** (pre-registered gate §9.1) · spend $0.4597 (cum **~$0.50 / $5**) · ~4m45s · `anthropic/claude-sonnet-4.6`.
**The harness fix worked — this result is valid, not an artifact.** All **3/3 families formed PASSPASS pairs**: the model traced task_a, authored a skill on the faithful post-task distill turn (production-mirroring Phase 2), and both baseline_b and treatment_b passed the grader.
| Family | tcBase | tcTreat | reduction |
|---|---|---|---|
| F1 ingest→export | 7 | 8 | **14%** (skill *added* a lookup call) |
| F2 audit→ingest | 7 | 7 | **0%** |
| F3 export→audit | 7 | 7 | **0%** |
**median reduction = 0%**, sign-test p = 1. Gate: passFamilies ✓, cost ✓, **median ✗ (0 < 0.40)** → no escalation. The gate correctly **halted before the $40 powered run** rather than spend it confirming a null.
### Conclusion (R6, valid, final under the locked manifest)
The Hermes "~40% faster" speed claim is **NOT reproduced** in this controlled setting: with a fixed harness and a frontier agentic model, a self-distilled skill yielded **~0% median tool-call reduction** (range 14%…0%). This is a real measured negative.
**Why — and the actual finding about when the closed loop pays off:** the forcing corpus is a clean linear chain whose *optimal* path is short (~7 grounded calls). A strong model already walks it near-optimally **without** the skill, so there is no wasted exploration for a distilled recipe to eliminate (it can even cost one extra `skill_lookup`). Self-distilled skills accelerate tasks where the **baseline floundered** (dead-ends, re-derivation); they cannot speed up a task that is already a short deterministic traversal for a capable model. Hermes's ~40% presumably comes from workloads with genuine exploratory waste — not from clean, well-specified lookups.
**Rubric:** D1 **stays 2** — and is now *better characterized*: the R1 loop is wired + unit/integration-proven (R5b) and, with the fixed harness, the model **does** autonomously distil on a qualifying success (the Pilot 13 negative was retracted as a harness bug). The remaining gap to a premium D1=3 is not "does the loop work" but "does reuse pay off" — which is **workload-dependent**, ~0% on already-optimal tasks. Citing a flat "~40% faster" would be unsupported by this evidence.
**Cost discipline outcome:** total R6 spend ≈ $0.50 of the $5 pilot budget; the $40 powered budget was **correctly never spent** — the T3 pilot→gate design prevented a $40 confirmation of a null. R6 concludes here under the pre-registered no-revisit rule; any "tasks-with-genuine-floundering" follow-up is a *new* pre-registered experiment, user-initiated, not an autonomous re-run.
## Pilot 2 — Amendment 2 (qwen-thinking, user-directed)
**Verdict: `INCONCLUSIVE-STOPPED`** · spend $0.0093 (cumulative **$0.0141 / $5**) · ~56s · `qwen/qwen3-30b-a3b-thinking-2507`.
| Family | task_a tools | distill grader | R1 trigger | Pair |
|---|---|---|---|---|
| F1 | 2 | PASS | gated-off (<5, correct) | not formed |
| F2 | 1 | **FAIL** | gated-off | not formed |
| F3 | 2 | **FAIL** | gated-off | not formed |
Pattern *inverted* vs Pilot 1 (instruct: 4/2/6 tools, all distill-PASS, no skill authored): the thinking variant used **fewer** tool calls and failed 2/3 graders. Not a measurement bug — F1 passed the grader, so the `content` field is read correctly for the thinking model; F2/F3 were genuinely under-grounded.
## Cross-pilot conclusion (binding)
**Two pilots, two models, identical structural verdict.** The limiting factor is **experiment construction, model-invariant**: the synthetic corpus is small enough that a 30B model (reasoning or not) resolves these tasks in ≤6 tool calls — below the ≥5 distillation threshold. The real `planSkillDistillation` correctly gated-off on every family (shipped R1 working as designed; the test never reaches it). The Hermes "~40% faster" claim is **neither supported nor refuted**. **D1 stays 2.** Total spend $0.0141 of $5 — the T3 tier did its job: ~1.4 cents bought a decisive structural finding instead of $40 on a doomed powered run.
To measure the effect at all, the *task environment* must force ≥510 grounded tool calls (amendment A-class). That is a design change with cost implications and is a **user decision** — autonomous re-engineering + re-run would be the goalpost-moving the cost-discipline rule bans. Decision options surfaced to the user; no further spend without an explicit Amendment 3.