Repository navigation
Research Small Model Reliability
2026-08-27. Written after a 3-candidate bake-off this session (nemotron-3-nano:4b, gemma4:12b,
InternScience/Agents-A1-4B) all failed against the same complex Colombia B2B benchmark item.
Full run-by-run detail lives in session_status/2026-08-26.md / CURRENT.md; this report answers
why, whether DeepDelve's own design contributes, and what to try next.
DeepDelve's workload sits at the hardest tier the agentic-benchmark literature has identified:
long-horizon, multi-step planning with persistent constraint-tracking and self-correction under
pressure — a regime where even frontier models don't yet reach confident-deployment reliability,
per a primary-source read of AgentFloor (arXiv:2605.00334, read in full, all 15 pages, directly —
not summarized).
That reframes this session's 3/3 failures: they are not proof these specific models are broadly
incapable, they are consistent with a known, published capability ceiling that is somewhat
independent of raw parameter count. Separately, and more actionably, this investigation found one
concrete, well-evidenced DeepDelve-side bug: a QuotaAbortException (the "trapped in loop, quota
exceeded for think_tool" abort that killed one of tonight's runs) skips the exact salvage/
completion-check path a near-identical malformed-tool-call failure was explicitly fixed to fall
through to — meaning a real research run's fetched sources are currently thrown away on this
specific abort path with no recovery attempt at all. That's a small, low-risk fix. A prompt-length
reduction, by contrast, is NOT well-supported as a fix — the same primary literature found a
"natural" structured-decomposition prompt simplification degraded performance across every
tested model, and effects were model-specific, not universal. For candidates: the AgentFloor
paper's own corpus found gemma4:26b the strongest open-weight model overall (already
hardware-disqualified here), and BFCL v4 multi-turn results point to two purpose-built
function-calling small models — xLAM-2-8b-fc-r and EGPO-4B — worth testing, though both need
verification before assuming ROCm/ollama fit the way this session's candidates did.
Per-role system-prompt sizes measured directly from src/prompts.py this session:
| Role | Tokens (approx) |
|---|---|
PLANNER_INSTRUCTIONS |
~2,736 |
WEB_SEARCHER_INSTRUCTIONS |
~2,132 |
ACADEMIC_SEARCHER_INSTRUCTIONS |
~2,183 |
FINDINGS_WRITER_INSTRUCTIONS |
~1,612 |
PEER_REVIEWER_INSTRUCTIONS |
~1,195 |
DATA_ANALYZER_INSTRUCTIONS |
~1,141 |
BUILDER_INSTRUCTIONS |
~1,057 |
DOCUMENT_ANALYZER_INSTRUCTIONS |
~944 |
SUBAGENT_DELEGATION_INSTRUCTIONS (appended to every role) |
~342 |
The Planner's own system prompt alone is ~3,078 tokens once the delegation block is appended — about 19% of a 16K-token context budget before any tool schema, user query, or conversation history. That's real weight, but not obviously disqualifying on its own: this session's disqualified candidates were all run at their FULL native context (up to 262,144 tokens), not the 16K floor, so raw context exhaustion was never the observed failure mode in any of the 9 original + 9 retest runs — every failure was behavioral (fabrication, stuck loops, zero tool calls) or wall-clock speed, not "ran out of room." Verdict: prompt length is a plausible contributing factor to instruction-following degradation on weaker models, but the evidence from tonight's runs does not show it as the proximate cause of any specific observed failure. See the AgentFloor finding below for why a length-only story is likely incomplete anyway.
src/engine/completion_checks.py currently defines 27 distinct problem/verdict types
(grep -oP 'Verdict\(\s*\n?\s*"\K[a-z_]+' — full list: claim_unsupported,
cross_source_contradiction, duplicate_report_sections, excluded_topic_present,
findings_underuses_evidence, findings_ungrounded, missing_artifact, missing_findings,
nli_unsupported, non_url_citation, not_delegated, not_grounded, propagated_ungrounded,
quote_paraphrased, regulation_unsupported, report_style_violation,
report_underuses_evidence, report_underuses_findings, specific_figure_unsupported,
stale_findings, stub_source, task_verification_flagged, thin_coverage, topical_mismatch,
uncited_claims, uneven_task_investment, untracked_delegation). Each carries its own
differently-worded corrective SYSTEM WARNING. Layered on top: force_whole_rebuild's full-rewrite
escalation, _with_wait_prefix's "Wait." self-reflection cue, and a distinct-problem attempt-bonus
mechanism (+1 extra attempt per genuinely different consecutive problem, capped at 4). This is a
genuinely large and structurally sophisticated state machine for a model to track across a long
run. Tonight's Agents-A1-4B run 1 worked through 9 completion-check attempts hitting 5+ distinct
problem types in sequence (missing_findings → missing_artifact → untracked_delegation →
stub_source → non_url_citation → report_underuses_findings) and still didn't converge in
time — not because it got confused by the variety (each individual correction was followed
correctly, in sequence), but because there was simply a lot of REAL, sequential work to do. This
argues the verdict-variety itself is not obviously the bottleneck for a model that's otherwise
behaving — but see the task_verification_flagged/force_whole_rebuild interaction below, where
a specific one of these 27 verdict types repeatedly defeated the strongest available escalation.
8 named sub-agent roles (DocumentAnalyzer, DataAnalyzer, WebSearcher, AcademicSearcher,
PeerReviewer, Builder, FindingsWriter) plus the Planner itself — a real query can nest
Planner → WebSearcher/AcademicSearcher → DocumentAnalyzer/DataAnalyzer (a Tier-2/3 delegation
chain), with the Write→Review→Fix loop (Builder/FindingsWriter + PeerReviewer) layered
independently on top, each dispatch a fresh-context LLM call. This is architecturally similar to
what the MAST taxonomy (Cemri et al., NeurIPS 2025 — already cited in this project's own
src/deepdelve.egg-info/PKG-INFO and src/tools/core.py/src/engine/orchestrator.py code
comments, not independently re-verified in full this session, treated as a secondary citation
here) documents as a coordination-failure risk surface distinct from single-agent capability:
FM-1.3 "step repetition" and FM-2.5 (referenced directly in src/tools/core.py:58's no-progress
guard and src/engine/orchestrator.py:1828's rename-reject-escalation logic) are BOTH failure
modes this project has already built structural defenses against, meaning this project's own
history already independently rediscovered that multi-agent nesting produces exactly the loop/
repetition failure shapes tonight's candidates hit.
| Observed failure | Best-fit category |
|---|---|
| Zero real tool calls the entire run (nemotron-3-nano run 2) | Instruction-following collapse under system-prompt load, OR a variant of MAST's "premature termination" |
Task-level fabrication surviving force_whole_rebuild (gemma4:12b run 1, both Agents-A1-4B runs) |
MAST's failure-to-verify / fabrication-under-pressure class; also the exact shape check_task_verification_flagged's own docstring documents as previously observed live on gpt-oss AND Ornith-1.0-9B, 2026-07-31 — i.e. NOT unique to small models |
think_tool spam loop, DeepDelve's own safety net aborted it |
MAST FM-1.3 "step repetition" — the exact failure class src/tools/core.py's tool-failure-streak guard was purpose-built to catch, and did catch here (see Question 2) |
| Ollama XML tool-call parser crash (nemotron-3-nano run 3) | Not a model-capability failure at all — a serving-layer bug, per this project's own Model Evaluation Standard point 3 |
Notably, the fabrication-under-pressure failure (row 2) is explicitly documented in this project's own code as having already happened to gpt-oss:20b itself — the current, larger baseline model. That is the single strongest piece of evidence that this session's disqualified candidates are not uniquely bad; they hit the same wall the incumbent has also hit, just perhaps more often per unit of time given less headroom to recover.
File: src/engine/tui.py, two call sites — run_cli (~line 2676-2678) and run_agent
(~line 1586-1589). Both catch QuotaAbortException and do:
has_requests = False
breakThis is a real bug, not a hypothesis. run_completion_check — the function that owns EVERY
salvage/quarantine/narration-recovery path this project has (including
_salvage_narrated_report, the exact mechanism that rescued Agents-A1-4B's genuinely good run 1
report tonight) — is called from inside the while has_requests: loop, gated on
if not has_requests: (confirmed directly in run_cli, line ~2757 onward). break exits the
loop immediately, on the SAME iteration, before that check is ever reached. Compare this to the
malformed-tool-call-retry-exhaustion branch a few lines below in the exact same function, which
has an explicit code comment specifically warning against this shape: "Deliberately does NOT
continue here (that would skip straight past the while has_requests: check with has_requests
already False, exiting the loop WITHOUT ever calling run_completion_check — meaning the 'finishing
with whatever exists' message below would be a lie)." The QuotaAbortException handler makes
exactly the mistake that comment warns against. Confirmed live tonight: the think_tool-loop-
aborted run had fetched 12 real sources and made zero attempt to write findings.md/final_report.md
from them — "Report: NOT WRITTEN" — with total data loss, when a salvage attempt (or at minimum
the standard "unresolved issue, treat as unconfirmed" notification) was structurally available and
simply never reached.
Proposed fix: replace the break in both handlers with the same fall-through pattern the
malformed-tool-call branch already uses — set has_requests = False and let the current loop
iteration finish naturally (falling into the if not has_requests: block) instead of jumping out.
This doesn't fix the underlying loop-detection trigger itself (that's working as designed — it
correctly caught the spam), it just stops throwing away real, already-fetched research when it
fires. This benefits EVERY model, not just smaller ones, but a model prone to think_tool spam
loops (as tonight's Agents-A1-4B run 3 was) benefits disproportionately, since it hits this path
more often.
Finding B (concrete, medium-confidence): task_verification_flagged's escalation ladder has no cheaper fallback
check_task_verification_flagged (src/engine/completion_checks.py:210) already has a documented
3-strike ladder (redo → acknowledge-and-stop → force_whole_rebuild's one-shot full rewrite), and
tonight confirmed that even the FULL rewrite doesn't always resolve a persistently-fabricating
task (gemma4:12b run 1: 3 flags, full rebuild, still failed; Agents-A1-4B run 2: 6 flags across 8
attempts, full rebuild fired, still failed). A model-capability-agnostic ladder currently treats
every model identically regardless of how much budget it's already burned unsuccessfully. A
config-gated earlier exit (e.g. settings.task_verification_early_gap_threshold, defaulting
to the current 3 strikes, settable lower) would let a known-weaker candidate accept an
acknowledged gap sooner rather than burn its whole attempt budget on a task that historical
evidence (its own whole_approach_retry_used_for ledger) shows it isn't going to fix. This is a
genuinely small diff (one new config key threaded into the existing _consecutive_occurrences
comparison already in that function) but the evidence for its benefit is weaker than Finding A —
it trades completeness for survivability, and might just produce more incomplete-but-honest
reports rather than more complete ones.
The AgentFloor paper (arXiv:2605.00334, read directly, pp.1-3) found — in a controlled ablation across 16 open-weight models — that "a seemingly natural structured decomposition prompt degrades performance across all tested models," and that interventions which helped one model were "typically null on others." This is a direct, primary-source counter-argument to the intuition that simplifying DeepDelve's large role-instruction blocks would reliably help smaller models: the literature's own controlled test of a similar-in-spirit intervention (restructuring/decomposing prompt guidance) made things WORSE broadly, not better. Recommendation: do not prototype a "lite" prompt variant on the assumption that shorter/simpler instructions are safely net-positive — if attempted at all, it needs the same live A/B rigor this project already applies to model candidates (Model Evaluation Standard-style, isolated variable, k≥3 runs), not a one-shot assumption.
Correction: this finding originally claimed AgentFloor's "step-budget ×2" ablation was
convergent evidence that budget/step-count is "one of the few interventions with a broadly
positive effect." Having now read the full paper (previously only pp.1-3 were read; see Sources),
that overstates it. The 9%→44% figure (Fig. 1's annotation) is a single-task effect: doubling
GPT-5's max_steps on tier D/E moved only task E1 (1/9→4/9 runs, +33pp [0,+67]) — the tier-E
aggregate barely moved at all (+4pp [-7,+16], CI crossing zero), and the paper's own trace
inspection attributes it to E1 specifically having "a genuinely tight" declared step budget, not a
general step-budget-starvation pattern. The paper groups this alongside the explicit-submission
prompt as one of three model-specific lifts (Section 5.2), explicitly contrasted with the
structured-decomposition prompt, which was the sweep's one uniform effect (negative, for every
model tested). AgentFloor's own conclusion is "interventions that help one model are typically
null on others" — it does not support budget increases as a broadly generalizing lever.
This does NOT undermine this session's own max_completion_check_attempts 3→10 fix, which was
validated directly by this project's own live runs (fewer stuck-loops, more varied real progress)
independent of any external literature. It only means that fix should not be framed as backed by
convergent published evidence of a general "more budget helps" principle — AgentFloor's actual
finding is closer to "no intervention we tried generalizes broadly, including budget," which is
consistent with, not contradictory to, this project's result being one narrow case that happened
to work.
Searched BFCL (Berkeley Function-Calling Leaderboard) v3/v4 results and the AgentFloor paper directly. Read AgentFloor's abstract/intro/methods pages primarily (pp.1-3); BFCL numbers below are relayed from a WebSearch summary, not independently verified against the primary leaderboard page — flagged accordingly, treat as a lead to confirm, not settled fact.
| Candidate | Size | Why it fits (multi-turn/self-correction specifically) | ROCm/AMD status | First validation step |
|---|---|---|---|---|
gemma4:26b |
3.8B active / MoE | AgentFloor's own corpus found this the single BEST open-weight model overall, matching GPT-5 at the aggregate level (primary source, read directly) | Already disqualified this session on pure VRAM grounds (18-19GB even at its lightest quant, exceeds this machine's 17GB budget) — not re-recommendable without more VRAM | N/A unless hardware changes |
Llama-xLAM-2-8b-fc-r (Salesforce) |
8B | Relayed BFCL v3 multi-turn score ~69.25%, reported to exceed GPT-4o (~47.62%) on multi-turn specifically — the exact capability tonight's candidates lacked. Purpose-built for function-calling, Llama-architecture base | GGUF available directly on HuggingFace (Salesforce/Llama-xLAM-2-8b-fc-r-gguf) — same hf.co/ pull pattern used for Agents-A1-4B tonight, should work the same way, not yet confirmed live |
Point-1 raw checks: think:false on native + OpenAI-compat paths, raw tool-call format test, ollama ps VRAM/context check across the range — exact same 4-step check this session ran on every candidate |
EGPO-4B |
4B | Relayed BFCL v3 multi-turn Overall ~56.25%, reported to beat GPT-4o (~42.50%) and Grok-4 (~36.12%) on multi-turn specifically, at only 4B | Not found as a packaged GGUF/Ollama-pullable checkpoint in this search — likely a research-only release; verify a real downloadable checkpoint exists before investing further | Confirm a GGUF/HF checkpoint exists at all before any other step |
gemma4:e4b |
4.5B effective | Already in this project's own original backlog (untested), same family as the AgentFloor-strongest gemma4:26b but at a size that fits this hardware |
Not tested this session; gemma4:12b's throughput surprise (32.2 tok/s, slower than gpt-oss:20b despite fewer params) means this family's ROCm performance should NOT be assumed fast just because it's smaller — verify raw tok/s FIRST, before any full benchmark run | Raw throughput test (/api/generate, eval_count/eval_duration) BEFORE any live benchmark — this session's own gemma4:12b experience shows this family's ROCm speed is not predictable from parameter count alone |
Explicitly not recommended without further verification: nothing new from the vLLM ecosystem —
per this project's own prior history (session_status/2026-07-26.md era, referenced but not
re-read in full this session), vLLM+bitsandbytes on this exact ROCm/consumer-GPU combination was
already disqualified across 9 candidates as too immature; that finding was not re-litigated here
and should stand unless something has materially changed upstream.
Overall ranked recommendation for next test: Llama-xLAM-2-8b-fc-r first (real checkpoint
exists, purpose-built for the exact multi-turn tool-calling reliability gap observed tonight,
same proven hf.co/ pull path as Agents-A1-4B) → gemma4:e4b second (untested backlog item, but
verify raw throughput before committing real benchmark time, per gemma4:12b's surprise result) →
EGPO-4B only if a real downloadable checkpoint can be confirmed to exist.
-
src/prompts.py,src/engine/completion.py,src/engine/completion_checks.py,src/engine/orchestrator.py,src/tools/core.py,src/engine/tui.py,src/app.py,src/deepdelve.egg-info/PKG-INFO,RESEARCH.md,ROADMAP.md— all read directly this session (primary source: this repository). -
session_status/2026-08-26.md,session_status/CURRENT.md— read in full, primary source for every run number cited above. - AgentFloor: How Far Up the Tool Use Ladder Can Small Open-Weight Models Go? — arXiv:2605.00334
(Karmakar & Chatterjee, Harvard, May 2026). Read directly, full text, all 15 pages (confirmed
real page count via
pdfinfoonpapers/agentfloor_2605.00334.pdf), including Results, Section 5 ("Where the long-horizon gap moves"), Limitations, and Conclusion — completed 2026-08-27, correcting the prior session's partial pp.1-3-only read (see the Finding D correction above, which the full read surfaced). https://arxiv.org/pdf/2605.00334 - MAST (Cemri et al., NeurIPS 2025) — cited here as a SECONDARY reference via this project's own
existing code comments (
src/tools/core.py,src/engine/orchestrator.py,src/deepdelve.egg-info/PKG-INFO), not independently re-read this session. The full paper is reportedly already reviewed elsewhere in this project's wiki literature review (https://github.com/g0elles/deepdelve/wiki/Literature-Review-Architecture-Synthesis, not re-fetched this session). - WebSearch results (titles/summaries only, not independently verified against primary sources):
Berkeley Function Calling Leaderboard v3/v4 general pages (
gorilla.cs.berkeley.edu/leaderboard.html,github.com/ShishirPatil/gorilla), a BFCL v3 multi-turn summary via emergentmind.com, and Salesforce'sLlama-xLAM-2-8b-fc-r-ggufHuggingFace listing (https://huggingface.co/Salesforce/Llama-xLAM-2-8b-fc-r-gguf). The specific BFCL multi-turn percentage figures for xLAM-2-8b-fc-r and EGPO-4B in the table above are RELAYED from search summaries, not confirmed against the primary leaderboard page directly — treat as a lead worth verifying atgorilla.cs.berkeley.edu/leaderboard.htmlbefore citing further. -
session_status/2026-07-26.md(vLLM+ROCm disqualification history) — referenced from memory of this project's own prior session archives, not re-read in full this session; flagged as a lead to re-confirm if vLLM is ever reconsidered.
Design & Plans
History
Model Research
- Model Bake off
- Fine-tuning
- Literature Review
- Small Model Reliability
- Builder Fix Durability
- Harness Design
- Open Items Literature
Reviews & Audits
- Academic Compliance Review
- Comparative Analysis
- Landscape Survey
- Codebase Review
- Report Defect Audit
- Comprehension Diagnostic
- Default Model
- Pipeline Model Comparison
- Writer Redesign Plan
- Writer Role A/B Protocol
- Writer Role A/B Results
Reference