Annotation method for guarded tool-only nodes
General lesson: label guarded tool-only conversations at the caller-turn level while keeping model proposal, harness validity, and backend acceptance as separate outcome axes. Freeze gold before revealing the observed tool call or handler result; otherwise backend acceptance and successful retry can silently become circular training labels.
Applicability: conversational nodes that require exactly one structured tool and whose handlers revalidate arguments or intent. Each label should include a single-gold/ambiguous/unscorable status, exact tool and argument contract, latest-turn evidence, and independent model/harness/backend outcomes. Admit only high-confidence single-gold turns to SFT. Preserve genuine ambiguous cases descriptively or as challenge data rather than forcing majority gold.
Report turn and visit denominators separately. A visit with several retries contributes several proposal turns; later recovery does not erase earlier model errors. Primary exact-match uses harness-valid, single-gold turns. Call-level all-turn success uses only fully scorable visits. Backend expected veto, unexpected acceptance, unexpected rejection, transition failure, and side-effect failure need their own counts.
Limits: route precedence and accepted values must come from the exact capture-bound prompt/schema, not a nearby source revision. Uncommon names should not be rejected by dictionary lookup; grounded context and explicit spelling are stronger evidence, while truncation or contradictory spelling should be marked ambiguous/unscorable.
Evidence/example — 2026-09-16: a bounded review of ten previously exposed node visits showed nineteen proposal turns, including valid uncommon/spelled names, filler proposed as names, an accepted phrase that was not a person name, a mixed name/transfer turn, and recovery after an earlier bad proposal. The rubric was derived without new data acquisition, held-out access, inference, or backend calls.