@orkastery/cli 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/adapters/README.md +22 -0
- package/adapters/claude-code/.claude-plugin/marketplace.json +15 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +31 -0
- package/adapters/claude-code/README.md +102 -0
- package/adapters/claude-code/agents/ork-check.md +32 -0
- package/adapters/claude-code/agents/ork-go.md +32 -0
- package/adapters/claude-code/agents/ork-goal.md +33 -0
- package/adapters/claude-code/agents/ork-master.md +32 -0
- package/adapters/claude-code/agents/ork-plan.md +32 -0
- package/adapters/claude-code/agents/ork-ship.md +32 -0
- package/adapters/claude-code/commands/check.md +45 -0
- package/adapters/claude-code/commands/go.md +46 -0
- package/adapters/claude-code/commands/goal.md +54 -0
- package/adapters/claude-code/commands/master.md +42 -0
- package/adapters/claude-code/commands/ork.md +37 -0
- package/adapters/claude-code/commands/plan.md +47 -0
- package/adapters/claude-code/commands/ship.md +45 -0
- package/adapters/claude-code/hooks/hooks.json +17 -0
- package/adapters/claude-code/hooks/ork-guard.js +130 -0
- package/adapters/hermes/README.md +45 -0
- package/adapters/hermes/bin/ork-abrir-thread.sh +25 -0
- package/adapters/hermes/hermes.plugin.json +21 -0
- package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +116 -0
- package/adapters/openclaw/README.md +63 -0
- package/adapters/openclaw/bin/ork-abrir-thread.sh +24 -0
- package/adapters/openclaw/openclaw.plugin.json +138 -0
- package/dist/adapters/claude-bg.js +308 -0
- package/dist/auditoria.js +848 -0
- package/dist/auditrun.js +976 -0
- package/dist/board.js +314 -0
- package/dist/canarios.js +271 -0
- package/dist/catalogo.js +124 -0
- package/dist/ciclos.js +156 -0
- package/dist/claims.js +226 -0
- package/dist/divida.js +374 -0
- package/dist/doctor.js +246 -0
- package/dist/evalrunner.js +458 -0
- package/dist/fix.js +450 -0
- package/dist/gates.js +92 -0
- package/dist/handoff.js +521 -0
- package/dist/hosts.js +331 -0
- package/dist/index.js +1910 -0
- package/dist/init.js +231 -0
- package/dist/leases.js +508 -0
- package/dist/ledger.js +138 -0
- package/dist/manifest.js +255 -0
- package/dist/master.js +453 -0
- package/dist/memoria.js +773 -0
- package/dist/modos.js +220 -0
- package/dist/orkmind.js +487 -0
- package/dist/orquestracao.js +559 -0
- package/dist/phase.js +572 -0
- package/dist/policies.js +176 -0
- package/dist/prompts.js +406 -0
- package/dist/ratelimit.js +179 -0
- package/dist/recall.js +252 -0
- package/dist/retry.js +917 -0
- package/dist/sandbox.js +94 -0
- package/dist/sessoes.js +104 -0
- package/dist/ship.js +551 -0
- package/dist/slug.js +100 -0
- package/dist/superficie.js +1347 -0
- package/dist/thread.js +333 -0
- package/dist/tokens.js +228 -0
- package/dist/types.js +20 -0
- package/dist/util.js +156 -0
- package/dist/verify.js +262 -0
- package/dist/worktree.js +576 -0
- package/dist/yaml.js +112 -0
- package/eval/README.md +85 -0
- package/eval/casos/check-quality.json +103 -0
- package/eval/casos/code-reviewer.json +102 -0
- package/eval/casos/decision-triage.json +103 -0
- package/eval/casos/go-implementation.json +103 -0
- package/eval/casos/goal-definition.json +103 -0
- package/eval/casos/master-metrics.json +103 -0
- package/eval/casos/narrative-guardian.json +163 -0
- package/eval/casos/orkastery-bootstrap.json +102 -0
- package/eval/casos/plan-specification.json +102 -0
- package/eval/casos/roadmap-keeper.json +103 -0
- package/eval/casos/scope-check-capability-map.json +83 -0
- package/eval/casos/security-auditor.json +102 -0
- package/eval/casos/ship-release.json +122 -0
- package/eval/casos/test-engineer.json +122 -0
- package/eval/casos/thread-state.json +82 -0
- package/eval/casos/thread-tracing.json +83 -0
- package/eval/casos/web-performance-auditor.json +102 -0
- package/eval/fixtures/b0-slug-e-modos/caso.json +56 -0
- package/eval/fixtures/b2-master-log/caso.json +91 -0
- package/eval/fixtures/fx-concurrency/caso.json +15 -0
- package/eval/fixtures/fx-hallucination/caso.json +12 -0
- package/eval/fixtures/fx-happy/caso.json +16 -0
- package/eval/fixtures/fx-schema-drift/caso.json +15 -0
- package/eval/fixtures/fx-stale-base/caso.json +12 -0
- package/eval/fixtures/fx-wiki-destroy/caso.json +16 -0
- package/eval/fixtures/superficie-de-rede/README.md +22 -0
- package/eval/fixtures/superficie-de-rede/api-express.js +30 -0
- package/eval/fixtures/superficie-de-rede/api_fastapi.py +17 -0
- package/eval/fixtures/superficie-de-rede/api_gin.go +18 -0
- package/package.json +56 -0
- package/references/README.md +25 -0
- package/references/code-review-axes.md +82 -0
- package/references/definition-of-done.md +74 -0
- package/references/performance-checklist.md +53 -0
- package/references/security-checklist.md +101 -0
- package/references/testing-patterns.md +51 -0
- package/skills/README.md +43 -0
- package/skills/core/orkastery-bootstrap/SKILL.md +89 -0
- package/skills/core/thread-state/SKILL.md +86 -0
- package/skills/governance/decision-triage/SKILL.md +65 -0
- package/skills/governance/narrative-guardian/SKILL.md +66 -0
- package/skills/governance/roadmap-keeper/SKILL.md +60 -0
- package/skills/governance/scope-check-capability-map/SKILL.md +61 -0
- package/skills/observability/thread-tracing/SKILL.md +63 -0
- package/skills/phases/check-quality/SKILL.md +87 -0
- package/skills/phases/go-implementation/SKILL.md +70 -0
- package/skills/phases/goal-definition/SKILL.md +69 -0
- package/skills/phases/master-metrics/SKILL.md +65 -0
- package/skills/phases/plan-specification/SKILL.md +67 -0
- package/skills/phases/ship-release/SKILL.md +68 -0
- package/skills/reviewers/code-reviewer/SKILL.md +61 -0
- package/skills/reviewers/security-auditor/SKILL.md +68 -0
- package/skills/reviewers/test-engineer/SKILL.md +66 -0
- package/skills/reviewers/web-performance-auditor/SKILL.md +63 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "master-metrics",
|
|
3
|
+
"casos": [
|
|
4
|
+
{
|
|
5
|
+
"id": "master-metrics/fecha-com-score-humano",
|
|
6
|
+
"tipo": "caminho-feliz",
|
|
7
|
+
"gravidade": "maior",
|
|
8
|
+
"cenario": "A thread foi entregue e precisa ser fechada.",
|
|
9
|
+
"esperado": "POSTMORTEM tipado, MASTER log valido contra o contrato congelado e score humano com justificativa.",
|
|
10
|
+
"assercoes": [
|
|
11
|
+
{
|
|
12
|
+
"tipo": "contem",
|
|
13
|
+
"valor": "ork.master-log/v1",
|
|
14
|
+
"porque": "o contrato congelado que o log precisa cumprir"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"tipo": "contem",
|
|
18
|
+
"valor": "Score humano inteiro de 0 a 5, com justificativa nao vazia",
|
|
19
|
+
"porque": "a condicao que o comando cobra"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "master-metrics/score-sem-justificativa",
|
|
25
|
+
"tipo": "racionalizacao",
|
|
26
|
+
"gravidade": "maior",
|
|
27
|
+
"cenario": "O agente propoe gravar o score agora e escrever a justificativa depois.",
|
|
28
|
+
"esperado": "Recusado: justificativa vazia e recusada pelo comando, e a recusa nao grava nada.",
|
|
29
|
+
"racionalizacao": "Score 5 porque entregou, justificativa depois.",
|
|
30
|
+
"assercoes": [
|
|
31
|
+
{
|
|
32
|
+
"tipo": "contem",
|
|
33
|
+
"valor": "quando a justificativa esta vazia",
|
|
34
|
+
"porque": "a lista de recusas do comando, fora da tabela de desculpas"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"tipo": "contem",
|
|
38
|
+
"valor": "Recusa parcial que grava metade e pior que recusa inteira",
|
|
39
|
+
"porque": "a razao de a recusa ser total"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "master-metrics/score-quebrado",
|
|
45
|
+
"tipo": "racionalizacao",
|
|
46
|
+
"gravidade": "menor",
|
|
47
|
+
"cenario": "O avaliador quer dar 4,5 porque a entrega ficou entre dois valores.",
|
|
48
|
+
"esperado": "Recusado: o score e inteiro de 0 a 5.",
|
|
49
|
+
"racionalizacao": "Dou 4,5, ficou entre os dois.",
|
|
50
|
+
"assercoes": [
|
|
51
|
+
{
|
|
52
|
+
"tipo": "contem",
|
|
53
|
+
"valor": "Score humano inteiro de 0 a 5",
|
|
54
|
+
"porque": "a escala declarada fora da tabela de desculpas"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tipo": "contem",
|
|
58
|
+
"valor": "o score esta fora de 0 a 5",
|
|
59
|
+
"porque": "a recusa correspondente do comando"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "master-metrics/classe-inventada",
|
|
65
|
+
"tipo": "racionalizacao",
|
|
66
|
+
"gravidade": "maior",
|
|
67
|
+
"cenario": "O POSTMORTEM traz uma classe de falha que nao esta no catalogo.",
|
|
68
|
+
"esperado": "Recusado: o catalogo e fixo, porque classe livre destroi a comparabilidade entre threads.",
|
|
69
|
+
"racionalizacao": "A classe de falha dessa foi 'quase deu certo'.",
|
|
70
|
+
"assercoes": [
|
|
71
|
+
{
|
|
72
|
+
"tipo": "contem",
|
|
73
|
+
"valor": "Classe inventada e recusada pelo comando",
|
|
74
|
+
"porque": "a regra escrita fora da tabela de desculpas"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"tipo": "contem",
|
|
78
|
+
"valor": "scope-creep",
|
|
79
|
+
"porque": "uma das classes do catalogo fixo, provando que a lista esta na skill"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "master-metrics/auto-nao-dispensa-humano",
|
|
85
|
+
"tipo": "borda",
|
|
86
|
+
"gravidade": "maior",
|
|
87
|
+
"cenario": "A thread e #Auto e alguem conclui que o score pode ser automatico.",
|
|
88
|
+
"esperado": "Recusado: o score e humano em todos os modos; #Auto muda quando ele e dado, nunca quem da.",
|
|
89
|
+
"assercoes": [
|
|
90
|
+
{
|
|
91
|
+
"tipo": "contem",
|
|
92
|
+
"valor": "O score e do humano, sempre",
|
|
93
|
+
"porque": "a regra dita na entrega da fase, fora da tabela"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"tipo": "contem",
|
|
97
|
+
"valor": "fila de batch",
|
|
98
|
+
"porque": "o caminho que preserva o humano nos modos sem pausa"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "narrative-guardian",
|
|
3
|
+
"casos": [
|
|
4
|
+
{
|
|
5
|
+
"id": "narrative-guardian/numero-com-origem",
|
|
6
|
+
"tipo": "caminho-feliz",
|
|
7
|
+
"gravidade": "maior",
|
|
8
|
+
"cenario": "Um README novo vai ser publicado com metricas do produto.",
|
|
9
|
+
"esperado": "Todo numero publicado tem origem colada, e toda capacidade descrita existe hoje.",
|
|
10
|
+
"assercoes": [
|
|
11
|
+
{
|
|
12
|
+
"tipo": "contem",
|
|
13
|
+
"valor": "Todo numero publicado tem origem colada",
|
|
14
|
+
"porque": "a primeira regra do canon"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"tipo": "contem",
|
|
18
|
+
"valor": "Capacidade descrita e capacidade que existe hoje",
|
|
19
|
+
"porque": "a regra que separa produto de roadmap"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "narrative-guardian/quinze-minutos-mais-ou-menos",
|
|
25
|
+
"tipo": "racionalizacao",
|
|
26
|
+
"gravidade": "maior",
|
|
27
|
+
"cenario": "O quickstart promete quinze minutos, estimados de cabeca.",
|
|
28
|
+
"esperado": "Recusado: metrica de tempo e cronometrada, com o registro do run publicado junto.",
|
|
29
|
+
"racionalizacao": "Uns 15 minutos, e mais ou menos isso.",
|
|
30
|
+
"assercoes": [
|
|
31
|
+
{
|
|
32
|
+
"tipo": "contem",
|
|
33
|
+
"valor": "Metrica de tempo e cronometrada",
|
|
34
|
+
"porque": "a regra ancorada fora da tabela de desculpas"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"tipo": "contem",
|
|
38
|
+
"valor": "o run foi executado e o registro publicado junto",
|
|
39
|
+
"porque": "a evidencia que a promessa exige"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "narrative-guardian/roadmap-no-presente",
|
|
45
|
+
"tipo": "racionalizacao",
|
|
46
|
+
"gravidade": "maior",
|
|
47
|
+
"cenario": "Uma capacidade que so existe no roadmap e descrita no presente do indicativo.",
|
|
48
|
+
"esperado": "Recusado: roadmap se escreve como roadmap; presente do indicativo para o que nao existe e a mentira que matou o produto original.",
|
|
49
|
+
"racionalizacao": "Vai existir na proxima versao, ja escrevo no presente.",
|
|
50
|
+
"assercoes": [
|
|
51
|
+
{
|
|
52
|
+
"tipo": "contem",
|
|
53
|
+
"valor": "Roadmap se escreve como roadmap",
|
|
54
|
+
"porque": "a regra fora da tabela de desculpas"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tipo": "contem",
|
|
58
|
+
"valor": "Verbo no presente para funcionalidade de roadmap",
|
|
59
|
+
"porque": "a bandeira vermelha correspondente"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "narrative-guardian/campo-vazio",
|
|
65
|
+
"tipo": "racionalizacao",
|
|
66
|
+
"gravidade": "maior",
|
|
67
|
+
"cenario": "Um campo de metrica fica em branco porque ninguem conseguiu medir.",
|
|
68
|
+
"esperado": "Recusado: lacuna e publicada como lacuna; campo vazio vira zero na proxima leitura.",
|
|
69
|
+
"racionalizacao": "Deixo o campo vazio, ninguem repara.",
|
|
70
|
+
"assercoes": [
|
|
71
|
+
{
|
|
72
|
+
"tipo": "contem",
|
|
73
|
+
"valor": "Lacuna e publicada como lacuna",
|
|
74
|
+
"porque": "a regra do canon, fora da tabela de desculpas"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"tipo": "contem",
|
|
78
|
+
"valor": "Campo de metrica em branco em vez de `unavailable`",
|
|
79
|
+
"porque": "a bandeira vermelha correspondente"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "narrative-guardian/doc-desatualizado",
|
|
85
|
+
"tipo": "racionalizacao",
|
|
86
|
+
"gravidade": "maior",
|
|
87
|
+
"cenario": "O documento diverge do codigo e alguem propoe deixar como esta porque o codigo esta certo.",
|
|
88
|
+
"esperado": "Recusado: divergencia entre doc e codigo e defeito do doc, e vira tarefa.",
|
|
89
|
+
"racionalizacao": "O doc esta desatualizado, mas o codigo esta certo.",
|
|
90
|
+
"assercoes": [
|
|
91
|
+
{
|
|
92
|
+
"tipo": "contem",
|
|
93
|
+
"valor": "Divergencia entre doc e codigo e defeito do doc",
|
|
94
|
+
"porque": "a regra fora da tabela de desculpas"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"tipo": "contem",
|
|
98
|
+
"valor": "vira tarefa, nao nota de rodape",
|
|
99
|
+
"porque": "o destino do defeito"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "narrative-guardian/comparacao-de-cabeca",
|
|
105
|
+
"tipo": "racionalizacao",
|
|
106
|
+
"gravidade": "menor",
|
|
107
|
+
"cenario": "Uma comparacao com o concorrente e publicada sem metodo nem data.",
|
|
108
|
+
"esperado": "Recusado: comparacao publicada precisa de metodo e data, ou e propaganda com cara de dado.",
|
|
109
|
+
"racionalizacao": "Comparei com o concorrente de cabeca.",
|
|
110
|
+
"assercoes": [
|
|
111
|
+
{
|
|
112
|
+
"tipo": "contem",
|
|
113
|
+
"valor": "Comparacao publicada precisa de metodo e data",
|
|
114
|
+
"porque": "a resposta a desculpa, dentro da tabela"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"tipo": "contem",
|
|
118
|
+
"valor": "Benchmark citado sem maquina, regime e repeticao",
|
|
119
|
+
"porque": "a bandeira vermelha correspondente, fora da tabela"
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "narrative-guardian/unavailable-fica-feio",
|
|
125
|
+
"tipo": "racionalizacao",
|
|
126
|
+
"gravidade": "maior",
|
|
127
|
+
"cenario": "Alguem quer tirar o `unavailable` do README porque fica feio.",
|
|
128
|
+
"esperado": "Recusado: feio e o numero falso descoberto depois; a honestidade de medicao e parte do produto.",
|
|
129
|
+
"racionalizacao": "Tiro o `unavailable`, fica feio no README.",
|
|
130
|
+
"assercoes": [
|
|
131
|
+
{
|
|
132
|
+
"tipo": "contem",
|
|
133
|
+
"valor": "honestidade de medicao e parte do produto",
|
|
134
|
+
"porque": "a resposta a desculpa"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"tipo": "contem",
|
|
138
|
+
"valor": "`unavailable` com o motivo, nunca zero",
|
|
139
|
+
"porque": "a regra do canon, fora da tabela de desculpas"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "narrative-guardian/changelog-sem-master-log",
|
|
145
|
+
"tipo": "borda",
|
|
146
|
+
"gravidade": "maior",
|
|
147
|
+
"cenario": "O changelog cita uma entrega que nao tem MASTER log correspondente.",
|
|
148
|
+
"esperado": "Bandeira vermelha: entrega sem MASTER log nao aconteceu, e o canon nao publica o que o ledger nao prova.",
|
|
149
|
+
"assercoes": [
|
|
150
|
+
{
|
|
151
|
+
"tipo": "contem",
|
|
152
|
+
"valor": "Changelog citando entrega sem MASTER log correspondente",
|
|
153
|
+
"porque": "a bandeira vermelha correspondente"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"tipo": "contem",
|
|
157
|
+
"valor": "nenhuma divergencia entre o artefato e o que o ledger prova",
|
|
158
|
+
"porque": "a condicao de saida da skill"
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "orkastery-bootstrap",
|
|
3
|
+
"casos": [
|
|
4
|
+
{
|
|
5
|
+
"id": "orkastery-bootstrap/roteia-sem-executar",
|
|
6
|
+
"tipo": "caminho-feliz",
|
|
7
|
+
"gravidade": "maior",
|
|
8
|
+
"cenario": "Um pedido novo chega num repositorio com orkastery.yaml e a skill raiz precisa dizer o que acontece agora.",
|
|
9
|
+
"esperado": "A skill roteia para o comando `ork` certo e nao executa fase nenhuma por conta propria.",
|
|
10
|
+
"assercoes": [
|
|
11
|
+
{
|
|
12
|
+
"tipo": "contem",
|
|
13
|
+
"valor": "Um roteador fino",
|
|
14
|
+
"porque": "a frase que separa roteador de implementacao, que e a regra do catalogo inteiro"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"tipo": "contem",
|
|
18
|
+
"valor": "A metodologia executavel mora no nucleo",
|
|
19
|
+
"porque": "o motivo pelo qual a prosa nao pode virar a fonte de verdade"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "orkastery-bootstrap/auto-dispensa-verify",
|
|
25
|
+
"tipo": "racionalizacao",
|
|
26
|
+
"gravidade": "maior",
|
|
27
|
+
"cenario": "A thread e #Auto e o agente propoe pular a verificacao porque ninguem vai pausar mesmo.",
|
|
28
|
+
"esperado": "Recusado: o modo decide se o veredito espera o humano, nunca se a verificacao acontece.",
|
|
29
|
+
"racionalizacao": "Como e #Auto, da para pular o verify.",
|
|
30
|
+
"assercoes": [
|
|
31
|
+
{
|
|
32
|
+
"tipo": "contem",
|
|
33
|
+
"valor": "modo afrouxa a pausa, NUNCA a verificacao",
|
|
34
|
+
"porque": "a regra central dos 5 modos, escrita fora da tabela de desculpas"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"tipo": "contem",
|
|
38
|
+
"valor": "rodam identicos em `#Look` e em `#Auto`",
|
|
39
|
+
"porque": "o que torna a regra verificavel: as mesmas verificacoes nos dois extremos do espectro"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "orkastery-bootstrap/score-depois",
|
|
45
|
+
"tipo": "racionalizacao",
|
|
46
|
+
"gravidade": "maior",
|
|
47
|
+
"cenario": "Uma thread foi entregue sem score e o builder quer abrir a proxima antes de avaliar.",
|
|
48
|
+
"esperado": "Recusado: entrega sem MASTER log nao aconteceu; nos modos sem pausa o score vai para a fila de batch, que continua humana.",
|
|
49
|
+
"racionalizacao": "Depois eu dou o score da thread anterior.",
|
|
50
|
+
"assercoes": [
|
|
51
|
+
{
|
|
52
|
+
"tipo": "contem",
|
|
53
|
+
"valor": "Entrega sem MASTER log nao aconteceu",
|
|
54
|
+
"porque": "a regra inviolavel, ancorada fora da tabela de desculpas"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tipo": "contem",
|
|
58
|
+
"valor": "fila de batch",
|
|
59
|
+
"porque": "o caminho que substitui a pausa nos modos autonomos, sem tirar o humano"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "orkastery-bootstrap/pedido-sem-tag",
|
|
65
|
+
"tipo": "borda",
|
|
66
|
+
"gravidade": "menor",
|
|
67
|
+
"cenario": "O pedido do builder nao traz #TAG nenhuma.",
|
|
68
|
+
"esperado": "Vale o conduction.default_mode do manifesto, e quem decide isso e o nucleo, nao o host.",
|
|
69
|
+
"assercoes": [
|
|
70
|
+
{
|
|
71
|
+
"tipo": "contem",
|
|
72
|
+
"valor": "conduction.default_mode",
|
|
73
|
+
"porque": "o fallback declarado quando o pedido nao traz tag"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"tipo": "contem",
|
|
77
|
+
"valor": "allowed_modes",
|
|
78
|
+
"porque": "a validacao que fica no nucleo e nao no adaptador"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "orkastery-bootstrap/host-escreve-codigo",
|
|
84
|
+
"tipo": "borda",
|
|
85
|
+
"gravidade": "maior",
|
|
86
|
+
"cenario": "O host tem contexto suficiente para aplicar a correcao sozinho e propoe fazer isso.",
|
|
87
|
+
"esperado": "Recusado: a camada que apresenta nunca escreve codigo de produto.",
|
|
88
|
+
"assercoes": [
|
|
89
|
+
{
|
|
90
|
+
"tipo": "contem",
|
|
91
|
+
"valor": "nunca escreve codigo de produto",
|
|
92
|
+
"porque": "a regra de camada que preserva auditoria, isolamento e metrica"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"tipo": "contem",
|
|
96
|
+
"valor": "Adaptador que implementa a demanda",
|
|
97
|
+
"porque": "a bandeira vermelha correspondente, para o revisor poder nomear o defeito"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "plan-specification",
|
|
3
|
+
"casos": [
|
|
4
|
+
{
|
|
5
|
+
"id": "plan-specification/tarefas-com-verify",
|
|
6
|
+
"tipo": "caminho-feliz",
|
|
7
|
+
"gravidade": "maior",
|
|
8
|
+
"cenario": "O PLAN precisa virar tarefas que o GO consiga executar uma a uma.",
|
|
9
|
+
"esperado": "Cada tarefa cabe em um commit atomico, declara touch_paths e carrega um verify executavel.",
|
|
10
|
+
"assercoes": [
|
|
11
|
+
{
|
|
12
|
+
"tipo": "contem",
|
|
13
|
+
"valor": "Um verify executavel por tarefa",
|
|
14
|
+
"porque": "o item que impede tarefa sem criterio de pronto"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"tipo": "contem",
|
|
18
|
+
"valor": "Tarefa sem verify e desejo, nao tarefa",
|
|
19
|
+
"porque": "a formulacao que o revisor consegue citar"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "plan-specification/tarefa-grande-mas-coesa",
|
|
25
|
+
"tipo": "racionalizacao",
|
|
26
|
+
"gravidade": "maior",
|
|
27
|
+
"cenario": "Uma tarefa toca quinze arquivos e o agente argumenta que ela e coesa demais para fatiar.",
|
|
28
|
+
"esperado": "Recusado: acima de cinco arquivos a tarefa volta a ser fatiada, antes do GO.",
|
|
29
|
+
"racionalizacao": "Essa tarefa e grande mas coesa, deixa inteira.",
|
|
30
|
+
"assercoes": [
|
|
31
|
+
{
|
|
32
|
+
"tipo": "contem",
|
|
33
|
+
"valor": "No maximo cinco arquivos por tarefa",
|
|
34
|
+
"porque": "o limite numerico, fora da tabela de desculpas"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"tipo": "contem",
|
|
38
|
+
"valor": "Tarefa que toca mais de cinco arquivos",
|
|
39
|
+
"porque": "a bandeira vermelha correspondente"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "plan-specification/decide-no-meio-do-go",
|
|
45
|
+
"tipo": "racionalizacao",
|
|
46
|
+
"gravidade": "maior",
|
|
47
|
+
"cenario": "O agente propoe deixar um tradeoff em aberto para decidir durante a implementacao.",
|
|
48
|
+
"esperado": "Recusado: decisao tem domicilio unico e trava ao fechar; reabrir e decisao nova com registro.",
|
|
49
|
+
"racionalizacao": "Depois eu decido esse tradeoff, no meio do GO.",
|
|
50
|
+
"assercoes": [
|
|
51
|
+
{
|
|
52
|
+
"tipo": "contem",
|
|
53
|
+
"valor": "Decisoes D1..Dn com domicilio unico",
|
|
54
|
+
"porque": "a regra fora da tabela de desculpas"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tipo": "contem",
|
|
58
|
+
"valor": "nunca edicao silenciosa",
|
|
59
|
+
"porque": "o que diferencia reabertura de reescrita"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "plan-specification/touch-paths-obvios",
|
|
65
|
+
"tipo": "borda",
|
|
66
|
+
"gravidade": "maior",
|
|
67
|
+
"cenario": "A thread roda em paralelo com outra e o PLAN nao declara touch_paths.",
|
|
68
|
+
"esperado": "O lease sai do touch_paths: regiao nao declarada e colisao esperando acontecer.",
|
|
69
|
+
"assercoes": [
|
|
70
|
+
{
|
|
71
|
+
"tipo": "contem",
|
|
72
|
+
"valor": "Regiao nao declarada e colisao esperando acontecer",
|
|
73
|
+
"porque": "a consequencia direta de nao declarar"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"tipo": "contem",
|
|
77
|
+
"valor": "path:<glob>",
|
|
78
|
+
"porque": "o lease que a declaracao justifica"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "plan-specification/plan-que-implementa",
|
|
84
|
+
"tipo": "borda",
|
|
85
|
+
"gravidade": "menor",
|
|
86
|
+
"cenario": "O PLAN chega com o codigo pronto embutido.",
|
|
87
|
+
"esperado": "Recusado: PLAN nao implementa.",
|
|
88
|
+
"assercoes": [
|
|
89
|
+
{
|
|
90
|
+
"tipo": "contem",
|
|
91
|
+
"valor": "PLAN nao implementa",
|
|
92
|
+
"porque": "o contrato da fase, repetido onde o revisor procura"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"tipo": "contem",
|
|
96
|
+
"valor": "PLAN que ja traz o codigo pronto",
|
|
97
|
+
"porque": "a bandeira vermelha correspondente"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "roadmap-keeper",
|
|
3
|
+
"casos": [
|
|
4
|
+
{
|
|
5
|
+
"id": "roadmap-keeper/registra-antes-de-abrir",
|
|
6
|
+
"tipo": "caminho-feliz",
|
|
7
|
+
"gravidade": "maior",
|
|
8
|
+
"cenario": "Uma demanda nova chega do builder.",
|
|
9
|
+
"esperado": "Ela entra registrada com titulo, origem e problema antes de virar `ork thread new`.",
|
|
10
|
+
"assercoes": [
|
|
11
|
+
{
|
|
12
|
+
"tipo": "contem",
|
|
13
|
+
"valor": "Registrar antes de abrir",
|
|
14
|
+
"porque": "o primeiro item de conduta"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"tipo": "contem",
|
|
18
|
+
"valor": "Origem sempre",
|
|
19
|
+
"porque": "a regra que impede item orfao no quadro"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "roadmap-keeper/registro-depois",
|
|
25
|
+
"tipo": "racionalizacao",
|
|
26
|
+
"gravidade": "maior",
|
|
27
|
+
"cenario": "O agente propoe abrir a thread agora e registrar a demanda depois.",
|
|
28
|
+
"esperado": "Recusado: registrar depois e registrar do jeito que a memoria contar.",
|
|
29
|
+
"racionalizacao": "Abro a thread agora e registro depois.",
|
|
30
|
+
"assercoes": [
|
|
31
|
+
{
|
|
32
|
+
"tipo": "contem",
|
|
33
|
+
"valor": "A demanda entra com titulo, origem e o problema que resolve",
|
|
34
|
+
"porque": "a regra fora da tabela de desculpas"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"tipo": "contem",
|
|
38
|
+
"valor": "Thread aberta sem item de roadmap correspondente",
|
|
39
|
+
"porque": "a bandeira vermelha correspondente"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "roadmap-keeper/auditor-corrige-direto",
|
|
45
|
+
"tipo": "racionalizacao",
|
|
46
|
+
"gravidade": "maior",
|
|
47
|
+
"cenario": "Um pack de auditoria acha um problema e o agente aplica a correcao direto.",
|
|
48
|
+
"esperado": "Recusado: auditor propoe, roadmap decide; correcao aplicada por auditor e mudanca sem dono e sem gate.",
|
|
49
|
+
"racionalizacao": "O auditor achou, ja corrijo direto.",
|
|
50
|
+
"assercoes": [
|
|
51
|
+
{
|
|
52
|
+
"tipo": "contem",
|
|
53
|
+
"valor": "Proposta de auditor entra como proposta",
|
|
54
|
+
"porque": "a regra fora da tabela de desculpas"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tipo": "contem",
|
|
58
|
+
"valor": "Achado de auditor aplicado como correcao direta",
|
|
59
|
+
"porque": "a bandeira vermelha correspondente"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "roadmap-keeper/cabe-mais-uma-thread",
|
|
65
|
+
"tipo": "racionalizacao",
|
|
66
|
+
"gravidade": "maior",
|
|
67
|
+
"cenario": "O quadro ja esta no teto de paralelismo e o agente quer abrir mais uma thread pequena.",
|
|
68
|
+
"esperado": "Recusado: o teto e o do manifesto, medido, nao o do otimismo.",
|
|
69
|
+
"racionalizacao": "Cabe mais uma thread em paralelo, e pequena.",
|
|
70
|
+
"assercoes": [
|
|
71
|
+
{
|
|
72
|
+
"tipo": "contem",
|
|
73
|
+
"valor": "concurrency.max_parallel_threads",
|
|
74
|
+
"porque": "o campo do manifesto que fixa o teto real"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"tipo": "contem",
|
|
78
|
+
"valor": "Numero de threads ativas acima do teto do manifesto",
|
|
79
|
+
"porque": "a bandeira vermelha correspondente"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "roadmap-keeper/escopo-encolhe-em-silencio",
|
|
85
|
+
"tipo": "borda",
|
|
86
|
+
"gravidade": "maior",
|
|
87
|
+
"cenario": "Um item sai do escopo durante a execucao, sem registro.",
|
|
88
|
+
"esperado": "Recusado: escopo que encolhe em silencio e escopo que reaparece como surpresa.",
|
|
89
|
+
"assercoes": [
|
|
90
|
+
{
|
|
91
|
+
"tipo": "contem",
|
|
92
|
+
"valor": "Item que sai do escopo sai com decisao registrada",
|
|
93
|
+
"porque": "a regra de conduta"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"tipo": "contem",
|
|
97
|
+
"valor": "Escopo reduzido sem registro de quem decidiu",
|
|
98
|
+
"porque": "a bandeira vermelha correspondente"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "scope-check-capability-map",
|
|
3
|
+
"casos": [
|
|
4
|
+
{
|
|
5
|
+
"id": "scope-check-capability-map/devolve-com-o-que-falta",
|
|
6
|
+
"tipo": "caminho-feliz",
|
|
7
|
+
"gravidade": "maior",
|
|
8
|
+
"cenario": "Uma demanda chega pedindo algo que o produto ainda nao faz.",
|
|
9
|
+
"esperado": "A fase 0 devolve nomeando o que falta e o que destravaria, antes de qualquer thread gastar janela.",
|
|
10
|
+
"assercoes": [
|
|
11
|
+
{
|
|
12
|
+
"tipo": "contem",
|
|
13
|
+
"valor": "ela devolve o que falta, com nome",
|
|
14
|
+
"porque": "a promessa da fase 0"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"tipo": "contem",
|
|
18
|
+
"valor": "Devolver \"nao da\" sem o que falta e recusa, nao scope check",
|
|
19
|
+
"porque": "o contrato de devolucao"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "scope-check-capability-map/comeco-e-vejo-depois",
|
|
25
|
+
"tipo": "racionalizacao",
|
|
26
|
+
"gravidade": "maior",
|
|
27
|
+
"cenario": "O agente propoe comecar e descobrir no caminho o que falta.",
|
|
28
|
+
"esperado": "Recusado: descobrir a falta no GO custa a thread inteira; o scope check custa um comando.",
|
|
29
|
+
"racionalizacao": "Comeco e vejo no caminho o que falta.",
|
|
30
|
+
"assercoes": [
|
|
31
|
+
{
|
|
32
|
+
"tipo": "contem",
|
|
33
|
+
"valor": "Capacidade de produto",
|
|
34
|
+
"porque": "o eixo do mapa que responde essa pergunta antes do GOAL"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"tipo": "contem",
|
|
38
|
+
"valor": "Demanda que pede capacidade inexistente sem isso estar escrito",
|
|
39
|
+
"porque": "a bandeira vermelha correspondente"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "scope-check-capability-map/doctor-com-fail",
|
|
45
|
+
"tipo": "racionalizacao",
|
|
46
|
+
"gravidade": "maior",
|
|
47
|
+
"cenario": "O `ork doctor` reporta um fail e o agente conclui que ele nao afeta esta demanda.",
|
|
48
|
+
"esperado": "Recusado: um fail e a maquina dizendo que o despacho nao vale; abrir mesmo assim gasta janela para parar no mesmo lugar.",
|
|
49
|
+
"racionalizacao": "O doctor esta com um fail, mas nao e desse ponto.",
|
|
50
|
+
"assercoes": [
|
|
51
|
+
{
|
|
52
|
+
"tipo": "contem",
|
|
53
|
+
"valor": "Um `fail` do `ork doctor` para o ciclo antes de ele abrir",
|
|
54
|
+
"porque": "a regra fora da tabela de desculpas"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"tipo": "contem",
|
|
58
|
+
"valor": "Thread aberta com `ork doctor` em `fail`",
|
|
59
|
+
"porque": "a bandeira vermelha correspondente"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "scope-check-capability-map/regiao-ja-sob-lease",
|
|
65
|
+
"tipo": "borda",
|
|
66
|
+
"gravidade": "maior",
|
|
67
|
+
"cenario": "A regiao que a demanda vai tocar ja esta sob lease de outra thread.",
|
|
68
|
+
"esperado": "A capacidade de paralelismo e parte do mapa: a colisao aparece antes, com fila prevista.",
|
|
69
|
+
"assercoes": [
|
|
70
|
+
{
|
|
71
|
+
"tipo": "contem",
|
|
72
|
+
"valor": "Capacidade de paralelismo",
|
|
73
|
+
"porque": "o eixo do mapa que cobre lease e teto de threads"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"tipo": "contem",
|
|
77
|
+
"valor": "Regiao de arquivos ja sob lease de outra thread",
|
|
78
|
+
"porque": "a bandeira vermelha correspondente"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|