Skip to content

WS-F: paired local-model formation battery

Implementation/report: PR #1118.

The six-formation battery is an artifact gate, not a claim that TeamResult.success
proves task completion. It uses the same harness and task on Qwen3-Coder-30B and
the locally available LFM2.5-8B-A1B Q4_K_M model, through Sandhi. Classifiers and
production formation behavior are unchanged.

Reproduction and scope

Run scripts/validation/formation_model_battery.py from its linked worktree with
.venv-codesign/bin/python, supplying --model, --gateway-client, and --output-dir.
Each case creates fresh artifacts and two member sessions. Pass requires successful
member results, every required file, independent pytest, and the formation's
structured verdict/agreement contract. Failure evidence is retained.

The model store identifies LFM2.5-8B-A1B as a small MoE (4.9 GB quantized file).
It ran on llama_cpp_cpu; Qwen ran on llama_cpp_rocm. Both models were ready and
reported fallback=false. This is an additional local-model guard sample, not a
latency comparison, a dense 2B support claim, or a model ranking. Only one run per
model was measured. The fixed HIERARCHICAL case uses static member assignments;
it does not validate model-generated delegation/synthesis.

Tasks require a doubling function, a corresponding pytest file, actual execution,
and exact final JSON. REFLECTION instead requires the critic to inspect/test the
first member's code and emit a structured verdict plus review.json. CONSENSUS
must actually reach agreement. Bounded iterations=10, tool budget=12, timeout=240s;
the gateway's separate upstream timeout can fail a call sooner.

Measured matrix (2026-09-18)

Formation Qwen / ROCm LFM / CPU
SEQUENTIAL Failed: missing test_first.py (30.85s) Failed: missing second deliverables; test syntax error (232.33s)
PIPELINE Failed: missing test_first.py (10.92s) Failed: literal backslash-n in both tests (162.89s)
PARALLEL Failed: missing test_second.py (11.09s) Timeout; missing second deliverables (240.60s)
HIERARCHICAL Failed: both test files missing (28.84s) Timeout; no required artifacts (240.55s)
CONSENSUS Passed: two member sessions, artifacts/tests and agreement (10.82s) Timeout; no required artifacts (240.76s)
REFLECTION Failed: invalid critic JSON and no review.json (14.46s) Timeout; no required artifacts (240.55s)

Result: Qwen ⅙; LFM 0/6. All twelve cases were attempted and retained. A partial
pytest pass does not compensate for missing member files. These results do not
replace the earlier successful live matrix: they use a different strict task and
record its failures rather than claiming universal formation/model reliability.

Evidence: Qwen and
LFM. Request-model assertions were checked against
every recorded request. Timeout cases have post-run independent pytest and artifact
checks as supplemental evidence; they remain failures regardless of late files.
The final harness adds an explicit nonzero failure exit and model-match gate; neither
changes the recorded model responses. Executed harness SHA256 is retained in evidence.

The edge model was loaded with default=false, then unloaded after the battery. Its
temporary Sandhi virtual key was revoked. The Qwen GPU model and ZAI gateway scopes
were retained. The local model-store README identifies this GGUF as a small MoE;
a dense 2B model remains unvalidated.

Local verification and follow-ups

The formation/team suites passed 459 tests on the experiment base and 463 tests
on the final merged WS-E base. The additional
completion/intent suites passed 88 tests and failed one existing wall-clock guard:
TestIterationBoundHolds.test_never_complete_loop_stops_at_max_iterations. Its
iteration bound passed, but duration was 22.68s against a 20s assertion; an isolated
recheck failed at 23.38s. No timing threshold or classifier was relaxed. G33 tracks
isolating startup/plugin work from the bounded-loop test.

The unchanged classifier implementation is on the pre-WS-E experiment base; a CI-only
fast-forward occurred during the edge run. The report increment is based on merged
WS-E. Thus this report claims a measured baseline, not a live rerun of newly merged
usage-accounting changes. WS-E's separate mixed run provides that accounting evidence.

Follow-up boundaries

  • Missing or syntactically invalid files plus successful member status is a task
    completion gap, not passing evidence. LFM emitted literal backslash-n sequences
    into test source, and a member returned proposed shell commands as answer text.
  • A malformed REFLECTION verdict is rejected explicitly. Preserve that contract;
    do not add prose parsing to make a weak model appear successful.
  • CPU provider/gateway timeouts are transport/capacity observations. They do not
    identify a narration, intent, or refusal classifier defect by themselves.
  • Any guard tuning needs the paired FEP-0025 experiment process, retained false
    positives/negatives, and independent artifact verification. This increment
    records follow-ups instead of silently changing shared completion heuristics.

Final environment check: Sandhi stop/start restored both permanent scoped keys;
one real Qwen completion and one real ZAI completion succeeded through the gateway.