Context
A comparative audit of AutoBot's self-correction, compaction-fidelity and measurement
surfaces against an external prompt-and-skill library. Nothing here proposes importing
external code, data or dependencies — every adoptable item is a design decision restated
in AutoBot's own stack. Evidence (file:line, greps, controls) lives in each child, not
here.
Sibling umbrella: #13413, the same audit genus against a different reference and a
non-overlapping surface set (governance / approval / GUI). Read together, not merged.
What the audit found
The reference's corpus is a dead end for this scope: its curated dataset contains zero
self-correcting entries — every constraint in it is output-format discipline. Its loop
design is behind ours on every axis we checked. So this umbrella is deliberately small:
four narrow adoptions and three defects our own audit surfaced while looking.
We already do this better — do not re-raise
| Capability |
Evidence |
| Retry with the validation error fed back |
autobot-backend/llm_shared/structured_ops.py:110, :171-216 |
Typed reflection verdicts incl. INDETERMINATE for evaluator outage |
autobot-backend/rlm/types.py:24-53 (#6697) |
| Severity-scaled retry budget |
autobot-backend/agent_loop/loop.py:1890-1898, :1910-1949 |
| Tool-argument schema self-correction at the live seam |
autobot-backend/chat_workflow/tool_handler.py:1000-1040 (#4482) |
| Evaluated goldens rather than popularity ranking |
autobot-backend/eval/runner.py (#10546) |
| Multi-file skill bundles |
already in use in-repo |
Deliberately NOT proposed
- Any runtime dependency on the external service. It is unversioned, unmetered, has no
stability contract, and would sit in the request path — rejected against our egress policy.
- Adopting the corpus itself. It is unreviewed, persona-shaped for chat rather than
tool-calling agents, and unevaluated.
- The reference's contribution model, which buys throughput by removing review. That is the
trade this umbrella exists to avoid.
Children
Compaction fidelity
Self-correction
Measurement
Discovered while auditing
Sequencing
#16114 and #16116 are independent and small — take them first. #16110 before #16111 (native
blocked_by recorded). #16115 is the highest-leverage item for delivery throughput and does not
collide with any of the others.
Related
Method note
Two findings in this audit initially rested on greps that returned nothing, and both were
partly false — one from too narrow a word list, one (in a peer session, on the same finding)
from a path that did not exist. Each child states the selector that produced its evidence.
See #16102.
Context
A comparative audit of AutoBot's self-correction, compaction-fidelity and measurement
surfaces against an external prompt-and-skill library. Nothing here proposes importing
external code, data or dependencies — every adoptable item is a design decision restated
in AutoBot's own stack. Evidence (
file:line, greps, controls) lives in each child, nothere.
Sibling umbrella: #13413, the same audit genus against a different reference and a
non-overlapping surface set (governance / approval / GUI). Read together, not merged.
What the audit found
The reference's corpus is a dead end for this scope: its curated dataset contains zero
self-correcting entries — every constraint in it is output-format discipline. Its loop
design is behind ours on every axis we checked. So this umbrella is deliberately small:
four narrow adoptions and three defects our own audit surfaced while looking.
We already do this better — do not re-raise
autobot-backend/llm_shared/structured_ops.py:110,:171-216INDETERMINATEfor evaluator outageautobot-backend/rlm/types.py:24-53(#6697)autobot-backend/agent_loop/loop.py:1890-1898,:1910-1949autobot-backend/chat_workflow/tool_handler.py:1000-1040(#4482)autobot-backend/eval/runner.py(#10546)Deliberately NOT proposed
stability contract, and would sit in the request path — rejected against our egress policy.
tool-calling agents, and unevaluated.
trade this umbrella exists to avoid.
Children
Compaction fidelity
text[:200]— a 300-word summary judged on a200-character window (highest severity here: the score is evidence-shaped)
(blocked by bug(kb): summary quality is scored against text[:200] — a 300-word summary judged on a 200-character window #16110 — fix the window before building on the signal)
Self-correction
ReflectionResultrecords no provenance (trivial; unblocks debugging the two above)Measurement
Discovered while auditing
.prompt/.yml/.yamlload butnever serve, and any guard scoped to either list is narrower than the union
(
ReflectionResult/JudgmentResult/ThinkCategory.SELF_REFLECTION) with no shared type(take before feat(rlm): reflection is a single scalar — no itemized checks and no re-audit after repair #16112 and chore(rlm): ReflectionResult records no provenance — no scoring model id, no evidence refs #16114, which otherwise improve one plane of three)
Sequencing
#16114 and #16116 are independent and small — take them first. #16110 before #16111 (native
blocked_byrecorded). #16115 is the highest-leverage item for delivery throughput and does notcollide with any of the others.
Related
filed by a peer session after re-deriving it wider than first reported
Method note
Two findings in this audit initially rested on greps that returned nothing, and both were
partly false — one from too narrow a word list, one (in a peer session, on the same finding)
from a path that did not exist. Each child states the selector that produced its evidence.
See #16102.