Skip to content

feat: TOON no caminho handoff real (código mergeado nunca executa) + A/B no bench + ledger de usage (follow-up #85) #88

Description

@wesleysimplicio

Contexto

Follow-up do rollout TOON (#85, PR #87 mergeada). Três achados verificados em código:

  1. O código TOON mergeado está morto no caminho real. build_mapper_context() retorna os bullets manuais de _render_handoff_context() (path=... | lang=...) antes de chegar ao branch TOON: simplicio/mapper.py:344-348 retorna, o bloco TOON em :389 nunca roda — sempre que o simplicio-mapper ≥0.13 responde handoff, que é o setup de qualquer instalação correta do ecossistema (o simplicio-loop inclusive bloqueia sem o mapper instalado). Ou seja: em produção, SIMPLICIO_PROMPT_TOON hoje não faz nada.
  2. O A/B de benchmark do feat: usar TOON no contexto JSON injetado nos prompts de geração (precedent + skill_router) #85 (AC3) está quase de graça e não foi rodado: bench.py já loga tokens_estimated por caso em runs.jsonl.
  3. Telemetria descartada/duplicada: pipeline.py:182 hard-coda cost_usd=0.0; providers.generate()/planner_complete() não persistem usage; e há dois estimadores conflitantes no mesmo repo (observability.estimate_tokens = words*4/3 vs cost_governor._estimate_tokens = chars/4) — claims de antes/depois podem divergir ~30% dependendo de qual se usa.

Escopo

  1. Ligar TOON no caminho handoff: aplicar o gate _toon_enabled() já existente dentro do rendering de files[] em _render_handoff_context() (~30 linhas espelhando o padrão mergeado), com teste de prompt garantindo: header TOON presente no caminho handoff com flag on, bullets legados com SIMPLICIO_PROMPT_TOON=0.
  2. Rodar o A/B e commitar o baseline: SIMPLICIO_PROMPT_TOON=1 vs 0 sobre bench/cases.jsonbench/results_toon_ab.{json,md} (fecha o AC3 do feat: usar TOON no contexto JSON injetado nos prompts de geração (precedent + skill_router) #85). Rotular o estimador usado.
  3. Emitir eventos de usage: um evento runs.jsonl por chamada em generate()/planner_complete() com cache_hit + usage reportado pelo provider quando disponível; e um simplicio.savings-event/v1 com source=toon quando o flag disparar (spec: issue-irmã no simplicio-runtime; há um ledger vivo em .simplicio/ledger/savings-events.jsonl deste checkout que hoje este repo só HOSPEDA sem produzir).
  4. Unificar os estimadores (um só, rotulado) e remover o cost_usd=0.0 hard-coded.
  5. Documentar SIMPLICIO_PROMPT_TOON em README/CHANGELOG (hoje só existe no código).
  6. Quick win independente de TOON: scratch/planner.py embute few-shot EXAMPLE_PLAN pretty-printed — trocar por json.dumps(EXAMPLE_PLAN, separators=(',',':')) (1 linha).
  7. Adotar o corpus de conformidade TOON (feat: TOON-CONTRACT — spec única + corpus de fixtures golden de conformidade para os 8 codecs (3 linguagens) simplicio-mapper#149) na suite.

Critérios de Aceitação

  • Header TOON aparece no prompt do caminho handoff (teste); =0 restaura legado
  • bench/results_toon_ab.* commitado com números e tokenizador rotulado
  • runs.jsonl recebe evento por chamada de provider; savings-event emitido com source=toon
  • Um único estimador; cost_usd real ou explicitamente estimated
  • Flag documentado; fixtures de conformidade passando

Aviso: partir de origin/master atualizado (checkout local ficou no branch do rollout). Pré-condição de impacto: o fix do encoder no produtor (wesleysimplicio/simplicio-mapper#148) multiplica o ganho deste wire.

Refs: #85, PR #87, wesleysimplicio/simplicio-mapper#148, wesleysimplicio/simplicio-mapper#149.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions