A tarefa que desaparece
Uma página de reserva pode passar por várias verificações e, ainda assim, não permitir que alguém reserve um livro. O que falta muitas vezes não é mais uma verificação, mas uma declaração precisa da tarefa que todas elas devem proteger.
A jornada de reserva na Biblioteca é fictícia. Ela representa uma tarefa web crítica e não contém pessoas, instituição ou resultado real. A página prática local fornece um caso sem código; seus resultados não são evidência de conformidade.
O curso-base apresentou o harness como um conjunto repetível de verificações, evidências e consequências. Aqui, a primeira entrada desse harness não é um seletor nem uma captura. É a promessa de que a pessoa ainda precisa conseguir concluir a tarefa.
Um PASS de página pode esconder uma tarefa quebrada
Imagine que a busca aparece, a página do livro tem título e o botão Reservar existe. Nada disso mostra se o login devolve a pessoa ao mesmo livro ou se a confirmação aparece. Verificar páginas separadamente apaga o fio que as une. Um contrato de jornada recupera esse fio ao declarar um objetivo e os estados ordenados que completam a tarefa.
Não comece por todos os comportamentos possíveis. Escolha uma jornada crítica e escreva a linha de chegada em linguagem comum. Na jornada fictícia de reserva na Biblioteca, o objetivo é reservar um livro disponível e receber uma confirmação inequívoca. Busca, detalhe, login quando necessário, reserva e confirmação são estados a serviço desse objetivo.
Por que começar pelo objetivo, e não por uma lista de páginas?
Transforme a promessa em cláusulas inspecionáveis
O contrato executável tem seis campos de nível superior, não quatro. journey é o nome curto da tarefa fictícia. user_goal diz o que a pessoa tenta concluir. steps é uma lista ordenada e não vazia dos estados que precisam permanecer possíveis. owner nomeia o papel que resolve evidência ausente ou contestada. release_evidence nomeia o registro que sustenta o contrato. practice_packet leva a observação feita na superfície prática local.
O pacote de prática é deliberadamente pequeno: state identifica um estado visível; method diz como você o inspecionou; observation diz o que ocorreu; decision é exatamente PROMOTE ou HOLD; e limit diz o que aquela observação não estabelece. É um documento curto, não um arquivo completo de requisitos. Valores vazios e texto de modelo como “substitua por” permanecem em HOLD, pois não descrevem uma observação.
O limite do pacote impede que um registro estreito vire promessa ampla. Uma confirmação registrada pode sustentar que o percurso roteirizado chegou à confirmação. Ela não demonstra que todas as pessoas usam a jornada, que todos os aparelhos se comportam do mesmo modo ou que uma norma foi atendida.
Exemplo resolvido: contrato mais pacote de prática
O contrato da Biblioteca nomeia a jornada fictícia e o objetivo, depois lista “buscar no catálogo”, “abrir um título disponível”, “entrar se solicitado” e “confirmar a reserva”. Sua evidência de lançamento é uma captura do caminho concluído. A pessoa responsável é “revisora de lançamento”, um papel, não uma identidade privada. O pacote de prática registra um estado da superfície local: uma caminhada de teclado a 320 px CSS devolveu o foco ao controle Reservar. A decisão permanece HOLD porque essa observação local sintética não é evidência de tecnologia assistiva nem de pessoas usuárias.
Agora remova a observação do pacote. Busca e detalhe podem continuar verdes, mas o contrato fica incompleto. A resposta correta é HOLD: a regra declarada exige um registro concreto de prática além das cláusulas da jornada. HOLD não prova que a confirmação está quebrada. Diz apenas que o registro ainda não sustenta o avanço.
contract = {
"journey": "library reservation",
"user_goal": "reserve an available book",
"steps": ["search", "detail", "sign_in", "confirmation"],
"owner": "release reviewer",
"release_evidence": "completed-path capture",
"practice_packet": {
"state": "confirmation dialog",
"method": "keyboard walk at 320 CSS px",
"observation": "focus returns to Reserve this book",
"decision": "HOLD",
"limit": "synthetic local practice is not AT or user evidence"
}
}
verdict = "PASS" if all(contract.values()) else "HOLD"
O que significa HOLD quando falta a observação do pacote de prática?
Contraexemplo: inventário não é contrato
“Página de busca, página de detalhe, página da conta” parece organizado, mas nomeia telas, não a tarefa. Omite o retorno depois do login e não diz qual evidência importa nem quem resolve uma lacuna. Um verificador poderia marcar as três páginas como presentes enquanto a reserva termina num beco sem saída.
O conserto não é acrescentar páginas. Reescreva a lista em torno de um verbo e de uma chegada observável: reservar um livro disponível; terminar quando a confirmação identifica o livro e o estado da reserva. Depois, conecte cada estado intermediário a essa chegada.
Interprete antes de decidir
PASS no verificador do contrato significa que o registro fictício contém os seis campos exigidos e os cinco campos concretos do pacote. Isso permite continuar a coleta de evidências; não significa que a jornada funciona. HOLD aponta um rótulo de jornada, objetivo, passo, responsável, campo de evidência de lançamento ou campo do pacote de prática ausente.
Sua vez: conteste o registro
Escreva um objetivo em uma frase para outra jornada familiar, como alterar um endereço de entrega. Liste os poucos estados sem os quais o objetivo fica incompleto. Para um deles, nomeie o registro que aceitaria e uma conclusão que esse registro não permite.
state, method, observation, decision e limit no pacote fornecido antes de abrir o laboratório.Quem altera o contrato quando a evidência é contestada?
journey-contract-check
Verifique um contrato fictício para rótulo da jornada, objetivo, passos ordenados, pessoa responsável, evidência de lançamento e os cinco campos do pacote de prática. Execute o registro negativo incluído para ver campo ausente ou de modelo produzir HOLD.
python journey_contract_check.py --out journey-contract-result.json --lang pt- O contrato protege um objetivo, não uma coleção de páginas.
- Seus seis campos exigidos incluem um pacote de prática concreto com cinco campos, não apenas uma lista de passos.
- PASS indica completude do registro, não usabilidade ou conformidade.