compile_skill() truncates held_back rule text mid-word at ~80 chars #32
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Observed on: 6.7.0
Problem
compile_skill(domain='python', mode='propose')returnedinsufficient_reinforcementwith aheld_backlist. Every rule in that list is truncated mid-word at roughly 80 characters:Note the third and fourth entries cut inside a clause ("the in-s", "volatile-s"), so the reader gets the setup and not the point.
Why it matters
The whole purpose of
held_backis to let a human decide what tobless. That decision needs the rule's substance, and the substance is consistently in the half that got cut. "Deterministic template compilation instead of LLM distillation was the key desig…" tells you the subject but not the claim, which is exactly what you'd be blessing.Truncation makes sense for a scanning list, but this list is the input to a judgement call, and there's no second call that returns the full text — you'd have to go to
recall_detail()on each source key to reconstruct what you're being asked about.Suggested fix
Return the rule text in full. These are single rules, not memory bodies, so the payload stays small even at 10 entries.
If a cap is wanted for very long rules, truncate at a word boundary and add an ellipsis so it's visibly cut, rather than a hard character slice that looks like complete text. Worth checking whether the truncation happens at compile time or only in the tool response — if the stored candidate is already clipped, blessing it would carry the clipped text into the skill.
Related
Same call surfaced a separate design question about whether these candidates are domain rules at all — filed as #33.
Fixed in 6.7.1 (
b4822f3onv6.7.x).Full rule text now. The cap that remains is 500 characters, and it exists as a safety valve for a pathological rule rather than as a display convention: it cuts on a word boundary, appends an ellipsis and sets
truncated: true, so a trimmed rule can never be mistaken for a complete sentence the wayrule.text[:80]could.To answer the question you flagged: the truncation was only in the tool response.
rule.text[:80]lived in_held_back_preview, and the stored candidate was never clipped — so nothing already blessed carries truncated text, and blessing one of these was never going to carry the clipped version into a skill.One knock-on the fix required: the web UI rendered
held_backsemicolon-joined into a single paragraph, which is fine for 80-character stubs and unreadable at full length. It's now one rule per line, since reviewing these is the entire point of the list.