44 lines
1.5 KiB
Markdown
44 lines
1.5 KiB
Markdown
# Observability Contract Registry
|
|
|
|
`config/observability_mapping.yaml` é a única tabela usada pelo framework para duas responsabilidades relacionadas ao contrato externo:
|
|
|
|
1. traduzir nomes/códigos semânticos para labels exigidos pela observabilidade do cliente;
|
|
2. preservar ações legadas de guardrails (`retry`, `handover`, etc.) sem hardcode de nomes no Python.
|
|
|
|
A sintaxe v1 continua válida:
|
|
|
|
```yaml
|
|
mappings:
|
|
guardrail.dlex_in: GRL.004
|
|
```
|
|
|
|
A forma rica adiciona `action` e `aliases`:
|
|
|
|
```yaml
|
|
mappings:
|
|
guardrail.revprec:
|
|
action: retry
|
|
aliases: [REVPREC, TIM_REVPREC]
|
|
```
|
|
|
|
`label` é opcional. Quando ausente, o nome de observabilidade não é renomeado. `action` também é opcional.
|
|
|
|
## Precedência de ação
|
|
|
|
Para uma decisão negada, o framework usa:
|
|
|
|
1. `metadata.terminal_action` retornado pelo rail;
|
|
2. `on_deny` do `guardrails.yaml`;
|
|
3. `action` resolvida pelo `observability_mapping.yaml`;
|
|
4. `BLOCK` como fallback fail-safe.
|
|
|
|
Isso mantém compatibilidade com rails internos e externos sem que `OutputSupervisor` ou `ParallelRailExecutor` conheçam nomes como `REVPREC`, `CMP`, `SCO`, `GND`, `ATH` ou `HUMAN`.
|
|
|
|
## Aliases
|
|
|
|
Uma entrada `guardrail.revprec` é automaticamente resolvida também por `REVPREC`. Aliases explícitos permitem associar nomes externos ou históricos, por exemplo `TIM_REVPREC`.
|
|
|
|
## Compatibilidade
|
|
|
|
Mappings escalares continuam funcionando sem alteração. Agentes que não habilitam o mapper continuam em passthrough e usam `BLOCK` para negações sem ação explícita.
|