Resumo

  • Os parâmetros condicionais criam uma projeção do estado do recurso; uma resposta 2.05 com Observe confirma uma relação, não o suporte de cada limiar, período ou regra solicitado.
  • Silêncio operacional só ganha significado quando suporte, amostragem, avaliação, gatilho, agendamento, entrega e resultado têm evidências próprias.

A condição desconhecida que não causou erro

Um cliente registra /temperatura?c.gt=40&c.newthing=5. O servidor conhece c.gt, não conhece c.newthing, devolve conteúdo com Observe e continua. Pelo rascunho, isso está correto: um parâmetro condicional válido mas não suportado não deve fazer o pedido fracassar.

Agora troque c.newthing por um requisito que a aplicação acreditava ser essencial. O mesmo comportamento interoperável vira um risco de governança. O cliente vê sucesso; a condição que justificava a interpretação do silêncio nunca existiu.

draft-ietf-core-conditional-attributes-14 data de 14 de setembro de 2026 e expira em 18 de março de 2027. É um Internet-Draft ativo do CoRE, destinado ao Standards Track, ainda marcado para revisão após uma questão de último chamado. Não é RFC, comprovação de produto ou levantamento de implantação.

A proposta adiciona condições e controles temporais ao Observe. O servidor mantém uma projeção separada para a URI condicional e envia apenas as representações selecionadas. A economia é real; o contrato probatório precisa reconhecer que o fluxo deixou de ser uma cópia de todas as mudanças.

Cruzamento, passo, faixa e borda

c.gt e c.lt detectam cruzamentos em relação ao último valor relatado. Depois de cruzar o limite, a continuação no mesmo lado não gera novos avisos por si só. Um alarme isolado não informa duração nem pico.

c.st compara uma amostra ao último estado enviado. Durante c.pmin, outras amostras podem ser condensadas no último valor. Assim, notificações consecutivas podem diferir mais do que o passo configurado.

c.band usa os dois limites para escolher dentro ou fora de uma faixa conforme sua ordem. c.edge seleciona uma direção de mudança booleana. Quando condições coincidem, não existe prioridade e apenas uma notificação é enviada. O pacote é uma consequência agregada, não um inventário de eventos físicos.

Descoberta ampla, suporte estreito

if="core.conditional" é um marcador opcional de interface. Ele não enumera condições individuais. Sua presença não garante um parâmetro; sua ausência não prova falta de suporte.

Já um valor inválido é rejeitável: tipo errado, período não positivo ou máximo menor que mínimo produz 4.00 Bad Request. Um servidor que se protege de períodos agressivos pode responder ao GET sem registrar o observador; a ausência do Observe Option é o sinal decisivo.

Logo, há pelo menos três estados: observado com a condição, observado sem uma condição ignorada e GET respondido sem observação. Um campo único “sucesso” apaga essa diferença.

A cadência de avaliar não é a de avisar

c.epmin informa que avaliações mais frequentes não interessam ao cliente. c.epmax limita a espera até a próxima avaliação. Entre duas avaliações, um valor pode ultrapassar e retornar sem deixar amostra.

c.pmin limita a frequência de notificação e pode reter uma condição já vista. c.pmax pede uma atualização dentro de um intervalo máximo, mesmo sem mudança, mas o texto rejeita a interpretação de contrato rígido de tempo real. O servidor trabalha em melhor esforço.

Estado físico, amostra, avaliação, obrigação de notificar e envio são cinco fatos. Rede e aplicação acrescentam mais dois. Um timestamp de mensagem não substitui essa sequência.

O proxy e o ACK têm escopos próprios

Um proxy pode deixar de encaminhar atualizações periódicas quando a representação não muda. A recomendação de Max-Age menor ou igual a c.pmax reduz essa interferência, mas não prova entrega.

Com c.con=true, a notificação deve ser confirmável. O ACK comprova uma troca CoAP delimitada. Não comprova todas as amostras, o entendimento da aplicação, a execução de um atuador nem o resultado no processo físico.

Tokens, sequência Observe, transporte confiável e OSCORE também fornecem recibos específicos. Segurança e correlação corretas não concedem ao pacote autoridade sobre a realidade monitorada.

Cancelar exige repetir a identidade

O cancelamento explícito precisa usar a URI condicional original. Dois valores de limiar sobre o mesmo recurso identificam projeções distintas. Remover uma configuração da tela não é prova de que o servidor encerrou a relação certa.

O recibo de cancelamento une endpoint, Token, URI completa, sinal Observe e resposta. Sem ele, observadores esquecidos permanecem como custo e como fonte de mensagens órfãs.

A cadeia que torna o silêncio interpretável

Primeiro vem a capacidade do recurso. Depois, o registro da projeção exata e o conjunto de parâmetros realmente suportado. Em seguida, fonte e resolução da amostragem, horários de avaliação, cálculo da condição, regras de pmin e pmax, envio, travessia de proxies, recepção, consumo pela aplicação e efeito físico.

Se um elo estiver ausente, o silêncio pode significar estabilidade, excursão entre amostras, condição ignorada, avaliação atrasada, coalescência, cache, perda, expiração ou aplicação parada.

As fontes não sustentam alegações sobre produtos, adoção, incidentes, taxa de perda ou segurança industrial. O documento de amplificação citado é um Internet-Draft IRTF expirado, não um registro de ataque.

Pela distinção de Lu Heng, a projeção é um registro de decisões tomadas pelo servidor. Ela coordena evidência; não recebe a autoridade do sensor nem da máquina que deveria agir.

Fontes