Skip to content

Recover the removal a compound take-off loses - #2

Open
GetBeholder wants to merge 1 commit into
devfrom
fix/compound-takeoff-removal
Open

Recover the removal a compound take-off loses#2
GetBeholder wants to merge 1 commit into
devfrom
fix/compound-takeoff-removal

Conversation

@GetBeholder

Copy link
Copy Markdown
Owner

Port of GetBeholder/Beholder-ME#2 — this extractor carries the identical five-pass path.

The bug

One sentence that both takes a garment off and puts another on loses one half. Against the trained extractor (Beholder-Q8_0):

prose removal emitted
take-off alone — "hangs the cloak on a hook" 3/3
compound — "hangs the cloak on a hook and pulls on black boots" 2/8

The lost garment stays in state and is fed back into the next prompt, so one miss compounds for the rest of the scene.

What does not fix it

Five prompt variants, all measured, all left it at 2/8 — an explicit rule, a worked example with expected JSON, "read each clause separately", a terse worn_remove MUST appear, and reordering the existing bullet. Controls never moved.

Re-asking the same compound prose with removal-only framing recovers 0 of 6: the compound sentence itself blinds the model, not the instruction.

The repair

takeoffClause() splits the sentence and asks the worn lane again about the take-off half alone — prose of the shape the model handles 3/3. Only worn_remove is merged from that reply; it never adds or replaces a worn, and it fires only when the reply carried no removal, the prose shows something coming off, and the sentence is compound.

Verified through the real extract() against the live model:

group before after extra calls
compound 2/8 8/8 6
removal only 3/3 3/3 0
addition only 4/4 4/4 0

Ordinary turns cost nothing.

Scope

Interim — the real fix is a training round. COMPOUND_ADD_REMOVE.md carries the evidence so the prompt experiment is not repeated.

Still unfixed: the addition can land on the slots being removed from (boot on chest); that belongs wherever the merge runs.

Tests: 224 pass, 0 fail (4 new for takeoffClause).

Same fix as GetBeholder/Beholder-ME#2; this extractor carries the identical
five-pass path.

When one sentence both takes a garment off and puts another on, the trained
extractor emits one half and drops the other: 2/8 on compound prose against
3/3 when the take-off stands alone. The lost garment stays in state and is fed
back into the next prompt, so one miss compounds for the rest of the scene.

Re-asking the SAME compound prose with removal-only framing recovers nothing
(0 of 6) — the compound sentence itself is what blinds the model. Re-asking
with just the take-off clause recovers all of them.

So when the five-pass reply carries no worn_remove, the prose shows something
coming off, and the sentence is compound, the worn lane runs once more on the
take-off clause alone and only its worn_remove entries are merged in. Verified
through the real extract() against Beholder-Q8_0: compound removal 2/8 -> 8/8,
controls unmoved, extra call only on the six sentences that needed it.

Interim; the real fix is a training round. COMPOUND_ADD_REMOVE.md records the
evidence, including the five prompt variants that did not move the number.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant