Commit 40021db
fix(crm): a origem do atendimento é reservada ao servidor — então ele passa a escrevê-la
EXCEÇÃO DECLARADA ao freeze-invariants.sh: o arquivo tocado,
`fronteira-progressao-nao-e-conflito.test.ts`, foi criado por mim neste PR e
ganha DOIS casos novos. Nada foi relaxado.
CAUSA RAIZ do último vermelho, e ela é de produto, não de teste. O `pulados` que
eu acabara de acrescentar ao dreno entregou o dado na primeira rodada:
lead.stage_changed/followup-gatilho-etapa.v1:
armados=1 enrolled=0 origem_obsoleta=1 ja_vivo=0 gate=0 sem_contato=0
`emit_event` RECUSA `service_origin` vindo de chamador autenticado (42501, e com
razão: é o campo que autoriza efeito operacional, não payload público) — e
ninguém o escrevia no lugar dele. O resultado:
· quem move o negócio PELA IA carimba a origem no servidor
(`agent-stage-sync`, `appointment-stage-move`, `handoff-stage-move`) e o
follow-up nasce;
· quem move PELO QUADRO — o operador, pela rota HTTP autenticada — emitia um
evento SEM origem. `fn_service_event_origin` caía no `service_stale` final
(40001), `serviceForEvent` engolia como `stale_origin`, e o follow-up nunca
nascia. Sem erro em lugar nenhum.
Ou seja: o gatilho de etapa era inalcançável pelo único caminho que o produto
oferece na tela. A spec não estava vermelha por acaso — ela mede exatamente
"o negócio movido NO QUADRO arma o follow-up sozinho".
O conserto lê "campo reservado" pelo que ele significa: reservado AO SERVIDOR,
e o servidor tem de escrevê-lo. `emit_event` passa a carimbar a origem quando
ela está ausente, tirando o retrato no instante da emissão — que é a semântica
de procedência que a 0223 quer. A resolução do contato repete a regra que
`fn_service_event_origin` já usa; tipo que ela não sabe resolver segue sem
origem, como antes. Origem já presente NÃO é sobrescrita: quem move pela IA
pode estar passando uma CONTINUAÇÃO, que é o que amarra o efeito ao atendimento
de onde ele nasceu.
Entrou na 0224 (a última da cadeia a definir `emit_event`) e na definição
correspondente do baseline — o gate de espelho confirma que os dois artefatos
seguem iguais.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 5ec7b15 commit 40021db
3 files changed
Lines changed: 141 additions & 2 deletions
File tree
- supabase
- migrations
- tests/invariants
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20434 | 20434 | | |
20435 | 20435 | | |
20436 | 20436 | | |
| 20437 | + | |
| 20438 | + | |
20437 | 20439 | | |
20438 | 20440 | | |
20439 | 20441 | | |
| |||
20464 | 20466 | | |
20465 | 20467 | | |
20466 | 20468 | | |
| 20469 | + | |
| 20470 | + | |
| 20471 | + | |
| 20472 | + | |
| 20473 | + | |
| 20474 | + | |
| 20475 | + | |
| 20476 | + | |
| 20477 | + | |
| 20478 | + | |
| 20479 | + | |
| 20480 | + | |
| 20481 | + | |
| 20482 | + | |
| 20483 | + | |
| 20484 | + | |
| 20485 | + | |
| 20486 | + | |
| 20487 | + | |
| 20488 | + | |
| 20489 | + | |
| 20490 | + | |
| 20491 | + | |
| 20492 | + | |
| 20493 | + | |
| 20494 | + | |
| 20495 | + | |
| 20496 | + | |
| 20497 | + | |
| 20498 | + | |
| 20499 | + | |
| 20500 | + | |
| 20501 | + | |
| 20502 | + | |
20467 | 20503 | | |
20468 | 20504 | | |
20469 | 20505 | | |
20470 | 20506 | | |
20471 | | - | |
| 20507 | + | |
| 20508 | + | |
20472 | 20509 | | |
20473 | 20510 | | |
20474 | 20511 | | |
| |||
Lines changed: 38 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
429 | 429 | | |
430 | 430 | | |
431 | 431 | | |
| 432 | + | |
| 433 | + | |
432 | 434 | | |
433 | 435 | | |
434 | 436 | | |
| |||
459 | 461 | | |
460 | 462 | | |
461 | 463 | | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
462 | 498 | | |
463 | 499 | | |
464 | 500 | | |
465 | 501 | | |
466 | | - | |
| 502 | + | |
| 503 | + | |
467 | 504 | | |
468 | 505 | | |
469 | 506 | | |
| |||
Lines changed: 65 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
83 | 148 | | |
84 | 149 | | |
85 | 150 | | |
| |||
0 commit comments