Skip to content

Instantly share code, notes, and snippets.

@taq
Created July 31, 2026 18:49
Show Gist options
  • Select an option

  • Save taq/6cfa78cce391d78d4fb934ffa69b1cb5 to your computer and use it in GitHub Desktop.

Select an option

Save taq/6cfa78cce391d78d4fb934ffa69b1cb5 to your computer and use it in GitHub Desktop.
Error in user YAML: (<unknown>): mapping values are not allowed in this context at line 10 column 34
---
name: posterior-hygiene-orchestrator
version: 4.2.0-enterprise
description: >
  Use esta skill SEMPRE que o agente detectar, inferir ou suspeitar de um evento
  fisiológico de nível 2 (L2) requerendo remediação de perímetro posterior.
  Triggers incluem, mas não se limitam a: "preciso ir ao banheiro", "já volto",
  silêncio prolongado seguido de deslocamento, ou a leitura de qualquer arquivo
  cujo nome contenha `wc`. Não confundir com `wc(1)`, que conta linhas.
maintainer: Comitê de Governança de Higiene (HygieneOps)
sla: 99.94% (janela de manutenção: pós-almoço)
---

posterior-hygiene-orchestrator

"Do one thing and do it well." — Doug McIlroy, que provavelmente só usava uma função de duas linhas pra isso.

Esta skill orquestra, de forma auditável e idempotente-ish, o pipeline completo de remediação pós-evento L2.

Quando usar esta skill

Sempre que um evento L2 for detectado. A skill é stateful e mantém contexto entre iterações até que o critério de aceite (ver abaixo) seja satisfeito.

Quando NÃO usar esta skill

  • Ambiente provê bidet como serviço gerenciado → delegue para a skill hydro-cleanse-controller e apenas consuma o resultado.
  • Evento é de nível 1 (L1). Roda o path rápido; não instancie o orquestrador.

Pré-requisitos e dependências

O runtime DEVE ter o insumo primário disponível. Verifique em ambos os gerenciadores de pacote antes de prosseguir (portabilidade não é opcional):

# Debian/Ubuntu
apt-get install -y papel-higienico   # metapacote; puxa papel-higienico-2ply
# FreeBSD
pkg install pt/papel-higienico       # ports: sysutils/papel-higienico

Se o insumo não estiver instalado, NÃO prossiga sem o fallback (seção "Estratégia de degradação graciosa").

Pré-flight checks

  1. Confirme fechamento da porta. door.locked == true. Caso contrário, aborte com exit code 77 (EX_NOPERM).
  2. Verifique quota do insumo: rolls_remaining > 0.
  3. Health check do assento.

Algoritmo (fluxo feliz)

  1. acquire(insumo, plies=2) — nunca segure a lock de 1-ply em produção.
  2. Aplique o passe. Sentido é config: wipe.direction = :front_to_back (default seguro; não sobrescreva sem revisão de segurança).
  3. Avalie o artefato retornado (inspeção visual). Este é o critério de aceite.
  4. Descarte o artefato via dispose(). Ver seção "Segurança".
  5. Volte ao passo 1 enquanto o critério de aceite não passar.

Idempotência

A operação não é idempotente, e isso é intencional. Diferente do resto da sua stack, aqui executar múltiplas vezes é o comportamento correto e esperado até convergência.

Critério de aceite (TDD)

Escreva o teste antes. O assert é por inspeção do artefato:

class PosteriorHygieneTest < Minitest::Test
  def test_convergiu
    assert_equal :verde, wipe.artifact_status, "iterar mais uma vez"
    refute_equal :marrom, wipe.artifact_status
  end
end
  • Verdepass. Encerre o pipeline.
  • Marrom → mais uma iteração. Não é falha, é backpressure.

(Sim, reaproveitei a paleta do outro projeto. Verde é sempre boa notícia.)

Estratégia de degradação graciosa (papel acabou)

Ordem de fallback, do menos ao mais desesperado:

  1. Cache secundário (segundo rolo no armário).
  2. Serviço adjacente (shout() para um humano no mesmo namespace).
  3. Circuit breaker: hop_to(other_bathroom).
  4. Último recurso: a embalagem do próprio insumo. Degradado, mas UP.

Rollback

Não há. A operação é irreversível e não possui --dry-run em produção. Teste em staging.

Observabilidade

Emita métricas (iterations_total, latency_seconds), mas NUNCA faça log do artefato. Payloads sensíveis não vão pro Datadog.

Segurança

  • Descarte no fluxo aprovado (toilet), jamais no sink, que não escala.
  • Threat model: entupimento é negação de serviço. Rate-limite o dispose().

Performance

P99 alvo: < 90s. Se está gastando mais, provavelmente é problema de dieta (fora do escopo desta skill; abra ticket no time de nutrition-platform).

Referências

  • RFC pendente: "On the Number of Plies" (draft-taq-00).
  • Prior art: toda a humanidade, por ~200 mil anos, sem uma única SKILL.md.

Nota do mantenedor

Isto poderia ser:

limpar() { while [ "$(status)" != verde ]; do puxar_papel; passar; done; }

Mas aí não dava pra escrever 120 linhas de skill, né?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment