wendkeep 0.58.1 → 0.59.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/CHANGELOG.md +120 -0
- package/README.en.md +70 -40
- package/README.md +70 -40
- package/bin/wendkeep.mjs +54 -6
- package/docs/en/commands/changes-and-verification.md +85 -0
- package/docs/en/commands/costs-and-observability.md +65 -0
- package/docs/en/commands/getting-started.md +86 -0
- package/docs/en/commands/maintenance-and-diagnostics.md +77 -0
- package/docs/en/commands/memory-migration.md +73 -0
- package/docs/en/commands/memory.md +102 -0
- package/docs/en/commands/notes-and-knowledge.md +70 -0
- package/docs/en/commands/operating-profiles.md +173 -0
- package/docs/en/commands/retroactive-import.md +67 -0
- package/docs/en/commands/sessions-and-import.md +89 -0
- package/docs/en/commands/verify.md +92 -0
- package/docs/pt-BR/commands/changes-and-verification.md +85 -0
- package/docs/pt-BR/commands/costs-and-observability.md +65 -0
- package/docs/pt-BR/commands/getting-started.md +87 -0
- package/docs/pt-BR/commands/maintenance-and-diagnostics.md +77 -0
- package/docs/pt-BR/commands/memory-migration.md +73 -0
- package/docs/pt-BR/commands/memory.md +99 -0
- package/docs/pt-BR/commands/notes-and-knowledge.md +69 -0
- package/docs/pt-BR/commands/operating-profiles.md +171 -0
- package/docs/pt-BR/commands/retroactive-import.md +67 -0
- package/docs/pt-BR/commands/sessions-and-import.md +89 -0
- package/docs/pt-BR/commands/verify.md +93 -0
- package/hooks/brain-core.mjs +159 -159
- package/hooks/brain-inject.mjs +83 -26
- package/hooks/brain-recall.mjs +32 -32
- package/hooks/brain-reindex.mjs +13 -13
- package/hooks/change-context.mjs +24 -10
- package/hooks/change-core.mjs +174 -37
- package/hooks/change-guard.mjs +115 -16
- package/hooks/change-nag.mjs +20 -5
- package/hooks/change-warn.mjs +27 -9
- package/hooks/decision-capture.mjs +1 -1
- package/hooks/derived-sections.mjs +1 -1
- package/hooks/flow-core.mjs +891 -0
- package/hooks/flow-protected-policy.mjs +218 -0
- package/hooks/frontmatter-repair.mjs +3 -1
- package/hooks/git-snapshot.mjs +722 -0
- package/hooks/import-sessions.mjs +10 -5
- package/hooks/memory-mode.mjs +63 -13
- package/hooks/memory-store.mjs +309 -69
- package/hooks/obsidian-common.mjs +119 -84
- package/hooks/operating-profile-runtime.mjs +157 -0
- package/hooks/plan-capture.mjs +14 -3
- package/hooks/sensors-core.mjs +15 -3
- package/hooks/session-backfill.mjs +7 -2
- package/hooks/session-ensure.mjs +21 -12
- package/hooks/session-iteration.mjs +65 -0
- package/hooks/session-memory-lifecycle.mjs +335 -0
- package/hooks/session-note-io.mjs +130 -15
- package/hooks/session-observability.mjs +4 -2
- package/hooks/session-stop.mjs +181 -59
- package/hooks/spec-core.mjs +91 -12
- package/hooks/subagent-stop.mjs +4 -1
- package/hooks/subagent-usage.mjs +2 -2
- package/hooks/task-log.mjs +3 -1
- package/hooks/token-usage.mjs +1 -1
- package/hooks/vault-health.mjs +268 -25
- package/hooks/vault-path-safety.mjs +558 -0
- package/hooks/vault-runtime-store.mjs +558 -0
- package/package.json +5 -3
- package/src/change.mjs +2 -1
- package/src/flow.mjs +232 -0
- package/src/init.mjs +26 -3
- package/src/memory.mjs +785 -35
- package/src/operating-profile.mjs +133 -0
- package/src/profile.mjs +224 -0
- package/src/project-vault.mjs +110 -5
- package/src/rebuild-costs.mjs +11 -4
- package/src/skills-seed.mjs +38 -16
- package/src/sync-defs.mjs +16 -7
- package/src/sync.mjs +9 -1
- package/src/taxonomy.mjs +9 -0
- package/src/validate-memory.mjs +21 -8
- package/src/verify.mjs +12 -2
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Manutenção e diagnóstico
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/maintenance-and-diagnostics.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Inspecionar a saúde do cofre e manter definições, tema e versão alinhados sem usar comandos de
|
|
8
|
+
change como teste global.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
Use depois de instalar/atualizar, diante de warnings dos hooks ou antes de iniciar uma change.
|
|
13
|
+
|
|
14
|
+
## Quando não usar
|
|
15
|
+
|
|
16
|
+
Não use `wendkeep verify` quando nenhuma change estiver ativa. Ele prova tarefas de uma change;
|
|
17
|
+
não substitui o doctor.
|
|
18
|
+
|
|
19
|
+
## Pré-requisitos
|
|
20
|
+
|
|
21
|
+
Execute na raiz do projeto ou informe `--project`/`--vault` explicitamente.
|
|
22
|
+
|
|
23
|
+
## Sintaxe
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx wendkeep doctor [--vault <cofre>]
|
|
27
|
+
npx wendkeep sync-defs [--check|--reseed] --vault <cofre> --project <raiz>
|
|
28
|
+
npx wendkeep theme sync --vault <cofre>
|
|
29
|
+
npx wendkeep --version
|
|
30
|
+
npx wendkeep --help
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Opções e códigos de saída
|
|
34
|
+
|
|
35
|
+
- `doctor` é read-only; exit `0` aceita warnings recuperáveis e exit não zero indica falha.
|
|
36
|
+
- Em v2, `doctor`/`memory status --gate` correlacionam `last_memory_attempt` (mode, disposition,
|
|
37
|
+
event IDs e checkpoint) com outbox, ledger e SHARED; não inferem saúde só pela revision atual.
|
|
38
|
+
- `revision: 0` após migração válida, sem attempt v2, é saudável. Attempt `degraded` cujos eventos
|
|
39
|
+
continuam duráveis na outbox/ledger é warning recuperável.
|
|
40
|
+
- Attempt ambíguo, event ID perdido (ausente de ledger e outbox), estado `projected` apenas na
|
|
41
|
+
outbox ou checkpoint divergente são falhas bloqueantes.
|
|
42
|
+
- `sync-defs --check` detecta drift sem gravar; `--reseed` restaura skills `wk-*` do pacote.
|
|
43
|
+
- `theme sync` reaplica snippet CSS e grupos do grafo sem recriar o cofre.
|
|
44
|
+
- `wendkeep --version` imprime a versão executada; `wendkeep --help` lista a interface pública.
|
|
45
|
+
|
|
46
|
+
## Exemplos
|
|
47
|
+
|
|
48
|
+
Checklist pós-atualização:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npx wendkeep --version
|
|
52
|
+
npx wendkeep sync-defs --check --vault .MeuApp-vault --project .
|
|
53
|
+
npx wendkeep doctor --vault .MeuApp-vault
|
|
54
|
+
npx wendkeep memory status --gate --vault .MeuApp-vault
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Resultado esperado
|
|
58
|
+
|
|
59
|
+
O doctor nomeia sessões, registry, links, notas, preços, derivadas e memória como saudáveis ou
|
|
60
|
+
fornece um comando específico de diagnóstico/reparo. Na memória, ele distingue vazio inicial
|
|
61
|
+
válido, replay pendente recuperável e lifecycle perdido/divergente. Nenhum reparo é aplicado
|
|
62
|
+
implicitamente nem o conteúdo privado do erro do projector é reproduzido no relatório.
|
|
63
|
+
|
|
64
|
+
## Erros comuns e diagnóstico
|
|
65
|
+
|
|
66
|
+
- `no vault`: execute da raiz vinculada ou passe `--vault`.
|
|
67
|
+
- `defs stale`: confirme a versão e rode `sync-defs --reseed`.
|
|
68
|
+
- Vault legado: é warning não bloqueante; planeje `memory migrate --apply` separadamente.
|
|
69
|
+
- `degraded` + outbox íntegra: warning; preserve a outbox e permita replay idempotente.
|
|
70
|
+
- `ambiguous`, publicação perdida ou checkpoint divergente: bloqueante; preserve registry, ledger,
|
|
71
|
+
outbox e SHARED para correlacionar `last_memory_attempt` antes de reparar.
|
|
72
|
+
- Bundle corrompido: preserve a evidência e use `memory status --gate` antes de `memory repair`.
|
|
73
|
+
|
|
74
|
+
## Próximos passos
|
|
75
|
+
|
|
76
|
+
Veja [instalação e primeiro uso](getting-started.md), [memória](memory.md) e
|
|
77
|
+
[verificação de changes](verify.md).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Migração de memória legada para v2
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/memory-migration.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Converter um `SHARED_MEMORY.md` legado em bundle v2 auditável sem sobrescrever CORE nem promover
|
|
8
|
+
relatos antigos silenciosamente.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
Use quando `memory status` retorna `legacy` e a equipe está pronta para curar o conteúdo convertido.
|
|
13
|
+
|
|
14
|
+
## Quando não usar
|
|
15
|
+
|
|
16
|
+
Não migre automaticamente durante `init`, `sync`, SessionStop ou como tentativa de silenciar um
|
|
17
|
+
warning. Não aplique enquanto um backup/estado esperado não estiver claro.
|
|
18
|
+
|
|
19
|
+
## Pré-requisitos
|
|
20
|
+
|
|
21
|
+
- CORE válido e bytes legados preservados.
|
|
22
|
+
- Vault sem corrupção v2 parcial.
|
|
23
|
+
- Revisão humana dos candidates que serão criados.
|
|
24
|
+
|
|
25
|
+
## Sintaxe
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx wendkeep memory status --gate --vault <cofre>
|
|
29
|
+
npx wendkeep memory migrate --vault <cofre>
|
|
30
|
+
npx wendkeep memory migrate --apply --vault <cofre>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Opções e códigos de saída
|
|
34
|
+
|
|
35
|
+
- Sem `--apply`, `wendkeep memory migrate` é dry-run e não grava.
|
|
36
|
+
- `--apply` cria backup, converte conteúdo legado em candidates e publica bundle v2 válido.
|
|
37
|
+
- Um bundle recém-migrado pode começar saudável em `revision: 0`: ainda não houve attempt v2 nem
|
|
38
|
+
evento elegível, portanto zero não significa estagnação.
|
|
39
|
+
- Exit `0` indica prévia/aplicação consistente; exit diferente de zero preserva o estado original
|
|
40
|
+
e informa a falha.
|
|
41
|
+
|
|
42
|
+
## Exemplos
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx wendkeep memory migrate --vault .MeuApp-vault
|
|
46
|
+
# revise a prévia
|
|
47
|
+
npx wendkeep memory migrate --apply --vault .MeuApp-vault
|
|
48
|
+
npx wendkeep memory status --gate --vault .MeuApp-vault
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Resultado esperado
|
|
52
|
+
|
|
53
|
+
O vault recebe ledger/projeção v2 coerentes, backup do SHARED legado e candidates para fatos sem
|
|
54
|
+
evidência. CORE não é editado e conteúdo não verificado não vira estado ativo automaticamente.
|
|
55
|
+
Após a migração, o próximo `UserPromptSubmit` recupera uma única activation se o registry legado
|
|
56
|
+
estava fechado; o primeiro `Stop` cujo turno for comprovado publica uma vez e avança SHARED para
|
|
57
|
+
revision 1. Repetir esse prompt ou Stop não duplica evento/revision.
|
|
58
|
+
|
|
59
|
+
## Erros comuns e diagnóstico
|
|
60
|
+
|
|
61
|
+
- Dry-run mostra vault já v2: não aplique novamente.
|
|
62
|
+
- `revision: 0` imediatamente após apply válido: estado saudável; aguarde um prompt e Stop
|
|
63
|
+
elegíveis, não rode repair nem repita a migração.
|
|
64
|
+
- Bundle v2 parcial/corrompido: use status e repair; migração não é ferramenta de corrupção.
|
|
65
|
+
- Primeiro Stop pós-migração fica `ambiguous`: confirme que o `turn_id` pertence ao transcript e
|
|
66
|
+
que `UserPromptSubmit` abriu/avançou a activation de recuperação.
|
|
67
|
+
- Candidates numerosos: curate gradualmente com `memory promote`/`memory reject`.
|
|
68
|
+
- Warning legado após apply: confirme o vault efetivamente selecionado e o vínculo do projeto.
|
|
69
|
+
|
|
70
|
+
## Próximos passos
|
|
71
|
+
|
|
72
|
+
Volte para [memória e curadoria](memory.md) e execute
|
|
73
|
+
[manutenção e diagnóstico](maintenance-and-diagnostics.md).
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Memória compartilhada e curadoria
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/memory.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Inspecionar e curar CORE, SHARED, ledger, outbox, attempts e candidates sem confundir autoria
|
|
8
|
+
canônica com estado operacional gerado.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
Use no CI, antes de verify/archive, diante de avisos do doctor ou para decidir candidates.
|
|
13
|
+
|
|
14
|
+
## Quando não usar
|
|
15
|
+
|
|
16
|
+
Não edite `SHARED_MEMORY.md` ou `MEMORY_EVENTS.jsonl` à mão. Não use repair em vault legado que
|
|
17
|
+
apenas aguarda migração.
|
|
18
|
+
|
|
19
|
+
## Pré-requisitos
|
|
20
|
+
|
|
21
|
+
Informe o vault explicitamente em automações. Preserve backups e evidências antes de reparar.
|
|
22
|
+
|
|
23
|
+
## Sintaxe
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx wendkeep memory status [--gate] --vault <cofre>
|
|
27
|
+
npx wendkeep memory repair --vault <cofre>
|
|
28
|
+
npx wendkeep memory reconcile <sessão-ambígua> --by-session <sessão-sucessora> --reason <motivo> [--apply] --vault <cofre>
|
|
29
|
+
npx wendkeep memory promote <candidate> --vault <cofre>
|
|
30
|
+
npx wendkeep memory reject <candidate> --vault <cofre>
|
|
31
|
+
npx wendkeep validate-memory [caminho-do-CORE]
|
|
32
|
+
npx wendkeep validate-memory --vault <cofre-v2>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Opções e códigos de saída
|
|
36
|
+
|
|
37
|
+
- `memory status` é read-only; `--gate` retorna exit `1` apenas para estado bloqueante.
|
|
38
|
+
- O `Stop` grava os eventos na outbox antes de reconhecer `last_memory_attempt: enqueued`; depois o
|
|
39
|
+
projector roda fora do lock do registry. Retry do mesmo attempt reutiliza os event IDs congelados
|
|
40
|
+
e pode projetá-los no máximo uma vez.
|
|
41
|
+
- Projector busy/falho persiste `degraded`, preserva a outbox e avisa que há replay. Um Stop/retry
|
|
42
|
+
seguinte reaproveita essa tentativa; não reconstrói o handoff com dados transitórios novos.
|
|
43
|
+
- O outcome só atualiza `memory_status`/checkpoint se activation, epoch, turno e attempt ainda forem
|
|
44
|
+
exatamente os mesmos. Resultado stale/superseded não apaga nem sobrescreve checkpoint mais novo.
|
|
45
|
+
- Vault legado válido gera warning e exit `0`. Em v2, o status correlaciona
|
|
46
|
+
`last_memory_attempt`, disposition, outbox, ledger, SHARED e checkpoint: attempt ambíguo,
|
|
47
|
+
publicação perdida ou checkpoint divergente bloqueiam; `degraded` com outbox íntegra é warning.
|
|
48
|
+
- `memory repair` é exclusivamente estrutural: trabalha sob locks com owner PID/token, salva
|
|
49
|
+
`.bak`, retém eventos válidos e reprojeta. Quando reconhece um checkpoint pré-0.59 válido com
|
|
50
|
+
cursor causal, migra-o por CAS para a fronteira física e registra backup/auditoria; nunca
|
|
51
|
+
reclassifica attempts do registry nem aceita tuple que não seja rederivada integralmente.
|
|
52
|
+
- `memory reconcile` é dry-run por padrão. `--apply` exige duas sessões nomeadas e motivo, faz CAS
|
|
53
|
+
do attempt exato, salva backup do registry e limita a mutação ao attempt ambíguo e à sucessora.
|
|
54
|
+
O replay é CORE-aware, usa cursor físico do ledger no checkpoint e não reescreve ledger, CORE ou
|
|
55
|
+
notas, nem consome a outbox. Repetir a mesma decisão aplicada é idempotente.
|
|
56
|
+
- Toda rota de memória valida a topologia física de `.brain`, ledger, outbox, CORE, SHARED,
|
|
57
|
+
candidates, registry, notas, backups, temporários e sidecars antes de ler ou escrever. Junction,
|
|
58
|
+
symlink, reparse point ou hardlink falham fechados sem tocar bytes externos. Locks publicam owner
|
|
59
|
+
e lease atomicamente, não colhem PID vivo apenas por idade e só liberam a lease adquirida.
|
|
60
|
+
- `promote`/`reject` acrescentam decisão auditável; nunca reescrevem o ledger no lugar.
|
|
61
|
+
- `validate-memory <CORE.md>` valida cap de 25 linhas, seções e segredos.
|
|
62
|
+
- `validate-memory --vault` exige bundle v2 completo; não é o gate correto para vault legado.
|
|
63
|
+
|
|
64
|
+
## Exemplos
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx wendkeep memory status --gate --vault .MeuApp-vault
|
|
68
|
+
npx wendkeep memory reconcile antiga --by-session atual --reason "entrega continuada" --vault .MeuApp-vault
|
|
69
|
+
npx wendkeep memory reconcile antiga --by-session atual --reason "entrega continuada" --apply --vault .MeuApp-vault
|
|
70
|
+
npx wendkeep validate-memory .MeuApp-vault/.brain/CORE.md
|
|
71
|
+
npx wendkeep memory promote candidate-123 --vault .MeuApp-vault
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Resultado esperado
|
|
75
|
+
|
|
76
|
+
O status imprime schema, revision, cursor, hash, eventos, outbox, candidates, conflitos e o estado
|
|
77
|
+
causal do último attempt. CORE permanece canônico e curado à mão; SHARED permanece projeção
|
|
78
|
+
operacional verificável. Depois de uma projeção bem-sucedida, o checkpoint do attempt pode ser um
|
|
79
|
+
prefixo válido de uma projeção global que já avançou com eventos concorrentes.
|
|
80
|
+
|
|
81
|
+
## Erros comuns e diagnóstico
|
|
82
|
+
|
|
83
|
+
- `legacy`: siga o guia de migração; não é corrupção.
|
|
84
|
+
- `revision: 0` logo após migração válida, sem attempt v2, é saudável; não rode repair só para
|
|
85
|
+
fabricar o primeiro evento.
|
|
86
|
+
- `degraded` com todos os event IDs presentes no ledger ou na outbox íntegra é recuperável; deixe o
|
|
87
|
+
replay idempotente concluir. Event ID ausente nos dois lugares indica publicação perdida.
|
|
88
|
+
- Attempt `ambiguous`, attempt `applied` sem event IDs, evento `projected` apenas na outbox ou
|
|
89
|
+
checkpoint divergente são bloqueantes: preserve os artefatos e investigue antes de repair. Se a
|
|
90
|
+
ambiguidade for comprovadamente substituída por uma sessão sucessora, revise o dry-run de
|
|
91
|
+
`memory reconcile` antes de autorizar `--apply`; o comando falha se o attempt ambíguo tiver IDs.
|
|
92
|
+
- Candidate pendente comum: warning recuperável, exige decisão humana quando apropriado.
|
|
93
|
+
- `event_cursor` ausente ou hash divergente em v2: preserve o bundle e avalie `memory repair`.
|
|
94
|
+
- `validate-memory --vault` falha no legado: valide apenas CORE ou migre primeiro.
|
|
95
|
+
|
|
96
|
+
## Próximos passos
|
|
97
|
+
|
|
98
|
+
Leia [migração de memória](memory-migration.md), [manutenção](maintenance-and-diagnostics.md) e
|
|
99
|
+
[verify](verify.md).
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Notas derivadas e grafo de conhecimento
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/notes-and-knowledge.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Criar, reparar, numerar e navegar decisões, bugs e aprendizados mantendo proveniência e wikilinks.
|
|
8
|
+
|
|
9
|
+
## Quando usar
|
|
10
|
+
|
|
11
|
+
Use para registrar conhecimento durável ou reparar notas históricas diagnosticadas pelo doctor.
|
|
12
|
+
|
|
13
|
+
## Quando não usar
|
|
14
|
+
|
|
15
|
+
Não edite numeração e wikilinks em massa à mão. Não use `--apply` sem conferir a prévia.
|
|
16
|
+
|
|
17
|
+
## Pré-requisitos
|
|
18
|
+
|
|
19
|
+
Vault vinculado, sessão de origem identificável e backup antes de renumerações amplas.
|
|
20
|
+
|
|
21
|
+
## Sintaxe
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx wendkeep dashboard [--force]
|
|
25
|
+
npx wendkeep note new --type bug|learning "<título>"
|
|
26
|
+
npx wendkeep note relink [--apply]
|
|
27
|
+
npx wendkeep note repair-frontmatter [--apply]
|
|
28
|
+
npx wendkeep note repair-sections [--apply]
|
|
29
|
+
npx wendkeep renumber-decisions [--apply]
|
|
30
|
+
npx wendkeep renumber-bugs [--apply]
|
|
31
|
+
npx wendkeep renumber-learnings [--apply]
|
|
32
|
+
npx wendkeep lesson add "<título>" "<lição>"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Opções e códigos de saída
|
|
36
|
+
|
|
37
|
+
- `note new` cria `BUG-NNNN` ou `APR-NNNN` no mês e aceita `--date`.
|
|
38
|
+
- `note relink`, `repair-frontmatter`, `repair-sections` e `renumber-*` são dry-run por padrão;
|
|
39
|
+
`--apply` grava e `--json` facilita auditoria.
|
|
40
|
+
- `dashboard --force` regenera Bases/MOC quando necessário.
|
|
41
|
+
- `lesson add` aceita `--change <slug>` e `--vault` para ligar aprendizado local.
|
|
42
|
+
- Exit `0` indica prévia/aplicação consistente; não zero deixa o reparo incompleto explícito.
|
|
43
|
+
|
|
44
|
+
## Exemplos
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx wendkeep note new --type bug "refresh expira durante upload"
|
|
48
|
+
npx wendkeep note relink --json
|
|
49
|
+
npx wendkeep renumber-decisions --json
|
|
50
|
+
# revise antes de repetir com --apply
|
|
51
|
+
npx wendkeep dashboard --force
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Resultado esperado
|
|
55
|
+
|
|
56
|
+
Notas derivadas vivem na pasta do mês, têm numeração global do tipo e backlink para a sessão. Os
|
|
57
|
+
reparos preservam frontmatter válido e reescrevem wikilinks quando arquivos mudam.
|
|
58
|
+
|
|
59
|
+
## Erros comuns e diagnóstico
|
|
60
|
+
|
|
61
|
+
- Nota órfã sem fonte modal: `note relink` informa que não consegue inferir e não inventa vínculo.
|
|
62
|
+
- Frontmatter empilhado: use repair sob o mesmo lock dos hooks.
|
|
63
|
+
- Links cinza após renumber/archive: rode prévia de relink e confirme ambiguidades.
|
|
64
|
+
- Título sensível: remova secrets/PII antes de persistir.
|
|
65
|
+
|
|
66
|
+
## Próximos passos
|
|
67
|
+
|
|
68
|
+
Veja [sessões e importação](sessions-and-import.md),
|
|
69
|
+
[custos e observabilidade](costs-and-observability.md) e [manutenção](maintenance-and-diagnostics.md).
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Perfis de Operação e FLOW
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/operating-profiles.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Escolher quanta governança do Wend Runtime uma execução precisa sem desligar o **Keep Core**.
|
|
8
|
+
O Keep Core permanece sempre ativo: Vault, sessão, identidade, CORE/SHARED, lessons, custos e
|
|
9
|
+
integrações de persistência continuam funcionando em todos os perfis.
|
|
10
|
+
|
|
11
|
+
## Quando usar
|
|
12
|
+
|
|
13
|
+
Use `profile` para consultar ou selecionar explicitamente um Perfil de Operação. Use `FLOW` para
|
|
14
|
+
manutenção local, reversível e com `spec_impact:none` que caiba num microcontrato Executar →
|
|
15
|
+
Validar, sem change.
|
|
16
|
+
|
|
17
|
+
## Quando não usar
|
|
18
|
+
|
|
19
|
+
Não selecione `OFF` para tentar contornar uma política: ele entrega a execução ao harness nativo
|
|
20
|
+
da LLM e só pode ser escolhido explicitamente. Não finalize em FLOW alterações de contrato
|
|
21
|
+
público, segurança/auth, migração/schema, dependências, CI/release, specs ou dos próprios
|
|
22
|
+
gates/policies do WendKeep; promova o trabalho para uma change.
|
|
23
|
+
|
|
24
|
+
## Pré-requisitos
|
|
25
|
+
|
|
26
|
+
- Projeto inicializado, com `.wendkeep.json` vinculado ao Vault correto.
|
|
27
|
+
- Para override de sessão, uma sessão inequívoca no `SESSION_REGISTRY.json`.
|
|
28
|
+
- Para FLOW, repositório Git, allowlist de paths, motivo e ao menos um sensor existente em
|
|
29
|
+
`wendkeep.sensors.json`.
|
|
30
|
+
|
|
31
|
+
## Sintaxe
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx wendkeep profile status [--project <path>] [--vault <path>] [--session <id>] [--json]
|
|
35
|
+
npx wendkeep profile use <perfil> [--project <path>] [--vault <path>] [--session <id>] [--json]
|
|
36
|
+
npx wendkeep flow start <slug> --allow <path> [--allow <path>...] --sensor <id> [--sensor <id>...] --reason <texto> [--session <id>]
|
|
37
|
+
npx wendkeep flow status [<id>]
|
|
38
|
+
npx wendkeep flow show <id> [--session <id>]
|
|
39
|
+
npx wendkeep flow finish <id> [--session <id>]
|
|
40
|
+
npx wendkeep flow promote <id> [--change-slug <slug>] [--session <id>]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Todos os subcomandos FLOW também aceitam `--project <path>`, `--vault <path>` e `--json`.
|
|
44
|
+
Quando informado, `--session` restringe inclusive consultas e mutações por ID à sessão dona do
|
|
45
|
+
FLOW; um ID de outra sessão falha sem mutação.
|
|
46
|
+
|
|
47
|
+
## Opções e códigos de saída
|
|
48
|
+
|
|
49
|
+
| Perfil | Rota | Contrato |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `OFF` | harness nativo da LLM | Wend Runtime desligado; Keep Core integral. |
|
|
52
|
+
| `FLOW` | E → V | Microcontrato com baseline Git, allowlist, sensores e recibo, sem change. |
|
|
53
|
+
| `GUIDE` | P → E → V | Change compacta; política reconhecida para evolução compatível. |
|
|
54
|
+
| `GOVERN` | P → R → E → V | Loop a2 atual e fallback conservador. |
|
|
55
|
+
| `ASSURE` | P → R → E → V → C | Governança acrescida de confirmação e handoff. |
|
|
56
|
+
|
|
57
|
+
- A resolução segue override explícito da sessão → `harness.profile` do projeto → `GOVERN`.
|
|
58
|
+
Heurística, tamanho do diff, texto do prompt, variável de ambiente ou erro de leitura nunca
|
|
59
|
+
selecionam `OFF`.
|
|
60
|
+
- `profile status` mostra perfil efetivo e origem; `--json` produz saída estruturada. Quando um
|
|
61
|
+
Vault explícito preserva a escolha apesar de binding corrompido, a saída inclui `binding_error`
|
|
62
|
+
e o diagnóstico também vai para stderr.
|
|
63
|
+
- `profile use` valida nome e flags estritamente; opção singleton duplicada, incompleta ou com
|
|
64
|
+
valor iniciado por `--` falha antes de I/O. Sem `--session`, altera atomicamente o binding do
|
|
65
|
+
projeto; com `--session`, grava override, origem e timestamp sem trocar a identidade da sessão.
|
|
66
|
+
- `.wendkeep.json` continua em `schemaVersion: 1`; o campo aditivo usa, por exemplo,
|
|
67
|
+
`"harness": { "profile": "GOVERN" }`. Binding legado sem o campo também resolve `GOVERN`.
|
|
68
|
+
- Binding corrompido nunca equivale a `OFF`. Quando o payload ou a integração legada identifica
|
|
69
|
+
um Vault inequívoco, o Keep Core continua ativo sob `GOVERN` e o hook expõe um diagnóstico;
|
|
70
|
+
guards de mutação falham fechados até o binding ser reparado. Configuração local inválida,
|
|
71
|
+
marcador ausente ou identidade divergente nunca herdam silenciosamente o Vault pai/global.
|
|
72
|
+
- `harness.flow.protectedRoots` aceita um array de raízes relativas ao projeto, sem globs ou
|
|
73
|
+
escapes `..`. Cada raiz amplia as superfícies protegidas do FLOW; qualquer alteração sob ela
|
|
74
|
+
exige `flow promote`.
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"harness": {
|
|
79
|
+
"profile": "FLOW",
|
|
80
|
+
"flow": {
|
|
81
|
+
"protectedRoots": ["src/internal-api", "infra/releases"]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- `flow start` captura HEAD, estado Git preexistente, allowlist, sensores, motivo e sessão em
|
|
88
|
+
`.brain/runtime/flows/`; não cria `08-Mudanças`, ADR, verdict, spec ou `CURRENT_CHANGE.md`.
|
|
89
|
+
- `flow finish` compara o diff real ao baseline Git e à allowlist, incluindo troca de commit em
|
|
90
|
+
submodule, metadata/config/flags ocultas do Git e superfícies protegidas ignoradas. O projectRoot
|
|
91
|
+
fica congelado e sensores rodam nesse cwd. Uma descoberta física limitada e no-follow mantém
|
|
92
|
+
visíveis aliases protegidos vazios ou ignorados, sem entrar em `.git`, no Vault efetivo ou em
|
|
93
|
+
caches locais; ambiguidade ou estouro de limite bloqueia. Ele rejeita
|
|
94
|
+
symlink/junction/reparse/hardlink no worktree e nos destinos do Vault, revalida antes/depois dos
|
|
95
|
+
sensores e recaptura o snapshot imediatamente antes do recibo, bloqueando qualquer sensor que
|
|
96
|
+
modifique o repositório. Recibo terminal e iteração
|
|
97
|
+
idempotente na sessão só contam como sucesso juntos;
|
|
98
|
+
uma projeção temporariamente ocupada retorna exit `1` e pode ser repetida com segurança.
|
|
99
|
+
- `flow promote` cria uma change normal preservando sessão, motivo, paths, sensores e evidência.
|
|
100
|
+
Lock cross-process owner+lease por slug, reserva e estado durável `promoting` elegem um único
|
|
101
|
+
dono; contrato, reserva, attempts, recibo e origem permanecem semanticamente vinculados. O
|
|
102
|
+
perdedor permanece ativo e pode repetir com `--change-slug`. Retries retomam idempotentemente a
|
|
103
|
+
mesma promoção em vez de criar outra change. Não existe `--force` no FLOW.
|
|
104
|
+
- Exit `0` indica consulta ou transição concluída; exit `1` indica política/sensor vermelho; exit
|
|
105
|
+
`2` indica perfil, sessão, flow ou argumentos inválidos, sem mutação parcial.
|
|
106
|
+
|
|
107
|
+
## Exemplos
|
|
108
|
+
|
|
109
|
+
Consultar o padrão efetivo e aplicar override somente à sessão atual:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npx wendkeep profile status
|
|
113
|
+
npx wendkeep profile use OFF --session 019abc-session-id --json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Executar uma manutenção FLOW capturando o `flow_id` retornado por `start`:
|
|
117
|
+
|
|
118
|
+
```powershell
|
|
119
|
+
$flow = npx wendkeep flow start corrige-copy --allow README.md --sensor docs-bilingual --reason "Corrige texto sem alterar contrato" --json | ConvertFrom-Json
|
|
120
|
+
$flowId = $flow.contract.flow_id
|
|
121
|
+
npx wendkeep flow status $flowId
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Se o trabalho permanecer local e dentro do microcontrato, finalize com o ID retornado:
|
|
125
|
+
|
|
126
|
+
```powershell
|
|
127
|
+
npx wendkeep flow finish $flowId
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Se o escopo crescer antes do `finish`, promova em vez de finalizar:
|
|
131
|
+
|
|
132
|
+
```powershell
|
|
133
|
+
npx wendkeep flow promote $flowId
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Se outra sessão já reivindicou o slug original, o FLOW continua ativo e pode ser promovido
|
|
137
|
+
novamente com um destino explícito:
|
|
138
|
+
|
|
139
|
+
```powershell
|
|
140
|
+
npx wendkeep flow promote $flowId --change-slug outro-slug
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Resultado esperado
|
|
144
|
+
|
|
145
|
+
Trocar o perfil não cria outra sessão nem interrompe o Vault. Em `OFF`, a memória e as lessons
|
|
146
|
+
continuam injetadas e o Stop continua persistindo sessão/memória, mas router, skill gate,
|
|
147
|
+
change context/warn/nag/guard e captura de plano ficam inativos. Um FLOW concluído deixa recibo
|
|
148
|
+
durável e consultável; um FLOW promovido passa a seguir o lifecycle normal de change.
|
|
149
|
+
|
|
150
|
+
## Erros comuns e diagnóstico
|
|
151
|
+
|
|
152
|
+
- Perfil desconhecido: use exatamente `OFF`, `FLOW`, `GUIDE`, `GOVERN` ou `ASSURE`.
|
|
153
|
+
- `OFF` apareceu sem escolha explícita: trate como erro; leitura ausente/inválida deve cair em
|
|
154
|
+
`GOVERN`.
|
|
155
|
+
- Sessão ausente ou ambígua: confira `session list` e informe `--session <id>` sem tentar de novo
|
|
156
|
+
com um alvo diferente.
|
|
157
|
+
- FLOW sem allowlist, motivo ou sensor: complete o microcontrato antes de editar.
|
|
158
|
+
- Path fora do escopo, superfície protegida ou sensor vermelho: corrija/abandone o FLOW ou use
|
|
159
|
+
`flow promote`; não há bypass.
|
|
160
|
+
- Sensor que alterou o repositório, allowlist atravessando symlink/junction ou superfície sensível
|
|
161
|
+
ignorada: restaure o estado e promova quando a mudança não for estritamente local. Sensores FLOW
|
|
162
|
+
devem ser somente leitura.
|
|
163
|
+
- Projeção da sessão `missing`, `invalid-frontmatter` ou `busy`: restaure/desbloqueie a nota e
|
|
164
|
+
repita `flow finish` ou `flow promote`; o marcador idempotente impede duplicação.
|
|
165
|
+
- Sujeira anterior apareceu no diff: ela deve coincidir com o fingerprint inicial e nunca pode ser
|
|
166
|
+
atribuída silenciosamente ao FLOW.
|
|
167
|
+
|
|
168
|
+
## Próximos passos
|
|
169
|
+
|
|
170
|
+
Leia [changes e verificação](changes-and-verification.md), o guia profundo de
|
|
171
|
+
[verify](verify.md) e [sessões e importação](sessions-and-import.md).
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Importação retroativa segura
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/retroactive-import.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Importar sessões históricas de Claude e Codex com escopo controlado, identidade estável e revisão
|
|
8
|
+
antes da escrita.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
Use ao instalar o WendKeep num projeto existente, recuperar uma faixa de datas ou reprocessar
|
|
13
|
+
decisões sem importar o mundo inteiro.
|
|
14
|
+
|
|
15
|
+
## Quando não usar
|
|
16
|
+
|
|
17
|
+
Não use `--source all` sem dry-run em máquinas com muitos projetos, forks ou rollouts de subagents.
|
|
18
|
+
Não trate transcript importado como evidência de implementação atual.
|
|
19
|
+
|
|
20
|
+
## Pré-requisitos
|
|
21
|
+
|
|
22
|
+
Confirme projeto, vault, provider, diretório fonte e janela temporal. Faça backup se o registry já
|
|
23
|
+
contiver reparos manuais.
|
|
24
|
+
|
|
25
|
+
## Sintaxe
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx wendkeep import --dry-run --json
|
|
29
|
+
npx wendkeep import --source claude|codex|all [--since <data>] [--limit <n>]
|
|
30
|
+
npx wendkeep import --from <claude-dir> --codex-from <codex-dir>
|
|
31
|
+
npx wendkeep import --stamp-ids | --rescan-decisions
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Opções e códigos de saída
|
|
35
|
+
|
|
36
|
+
- `--source` limita provider; `--since` e `--limit` limitam volume.
|
|
37
|
+
- `--from`/`--codex-from` substituem diretórios descobertos.
|
|
38
|
+
- `--dry-run` não grava e `--json` produz relatório auditável.
|
|
39
|
+
- `--stamp-ids` preenche IDs em notas existentes; `--rescan-decisions` reaplica extração de prosa.
|
|
40
|
+
- Exit `0` indica varredura/importação consistente; exit diferente de zero exige resolver fonte,
|
|
41
|
+
parsing ou identidade antes de repetir.
|
|
42
|
+
|
|
43
|
+
## Exemplos
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx wendkeep import --source codex --since 2026-07-20 --limit 20 --dry-run --json
|
|
47
|
+
# confira accepted/skipped/forks
|
|
48
|
+
npx wendkeep import --source codex --since 2026-07-20 --limit 20
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Resultado esperado
|
|
52
|
+
|
|
53
|
+
Sessões aceitas entram uma vez por `session_id`, com provider e transcript corretos. Duplicatas
|
|
54
|
+
canônicas são ignoradas; forks/subagents preservam relação de origem em vez de copiar toda a
|
|
55
|
+
história herdada como uma nova conversa independente.
|
|
56
|
+
|
|
57
|
+
## Erros comuns e diagnóstico
|
|
58
|
+
|
|
59
|
+
- Contaminação entre projetos: pare e confira cwd, binding e filtros antes de limpar qualquer nota.
|
|
60
|
+
- Fork comum importado como sessão cheia: inspecione `forked_from_id` e payload de origem.
|
|
61
|
+
- Nota sem `session_id`: use `--stamp-ids` somente após dry-run.
|
|
62
|
+
- Decisões faltantes em nota já importada: prefira `--rescan-decisions` a duplicar a sessão.
|
|
63
|
+
|
|
64
|
+
## Próximos passos
|
|
65
|
+
|
|
66
|
+
Volte para [sessões e hooks](sessions-and-import.md), gere [custos](costs-and-observability.md) e
|
|
67
|
+
revise [notas derivadas](notes-and-knowledge.md).
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Sessões, hooks e importação
|
|
2
|
+
|
|
3
|
+
**PT-BR** · [English](../../en/commands/sessions-and-import.md)
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Entender como os hooks capturam sessões ao vivo, como activation/turno preservam causalidade no
|
|
8
|
+
registry e quando usar a importação retroativa. No perfil `OFF`, o Vault continua ativo: hooks de
|
|
9
|
+
sessão, identidade, memória, custos e persistência pertencem ao Keep Core, não ao Wend Runtime.
|
|
10
|
+
|
|
11
|
+
## Quando usar
|
|
12
|
+
|
|
13
|
+
Use `session` para inspecionar/focar uma conversa e `import` para recuperar sessões anteriores à
|
|
14
|
+
instalação ou fora do registry atual.
|
|
15
|
+
|
|
16
|
+
## Quando não usar
|
|
17
|
+
|
|
18
|
+
Não invoque hooks manualmente sem o envelope JSON esperado. Não use import amplo antes de uma
|
|
19
|
+
prévia quando existirem forks/subagents possivelmente duplicados.
|
|
20
|
+
|
|
21
|
+
## Pré-requisitos
|
|
22
|
+
|
|
23
|
+
Hooks instalados para captura ao vivo; para import, acesso local aos diretórios de transcripts do
|
|
24
|
+
Claude/Codex e um vault vinculado ao projeto correto.
|
|
25
|
+
|
|
26
|
+
## Sintaxe
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx wendkeep hook <nome>
|
|
30
|
+
npx wendkeep session list
|
|
31
|
+
npx wendkeep session show <id>
|
|
32
|
+
npx wendkeep session use <id>
|
|
33
|
+
npx wendkeep import [opções]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Opções e códigos de saída
|
|
37
|
+
|
|
38
|
+
- `wendkeep hook <name>` lê o payload do agente em stdin; nomes válidos aparecem em `--help`.
|
|
39
|
+
- `SessionStart` abre uma activation, isto é, um epoch que continua ativo por vários `Stop`; só um
|
|
40
|
+
novo `SessionStart` torna o epoch anterior superseded.
|
|
41
|
+
- `UserPromptSubmit` avança o turno nativo da activation ativa. Se encontrar um registry legado
|
|
42
|
+
com o epoch fechado, abre exatamente uma activation de recuperação; repetir o mesmo prompt não
|
|
43
|
+
abre outra.
|
|
44
|
+
- No Codex, `session_id`, o `turn_id` nativo e a ordem observada no transcript bastam para resolver
|
|
45
|
+
o turno. O payload do hook não precisa inventar `activation_id` nem `turn_sequence`.
|
|
46
|
+
- `Stop` aceita somente o turno comprovado pelo transcript e pela activation ativa compatível.
|
|
47
|
+
Duplicatas são no-op; Stops stale/superseded não publicam memória nem sobrescrevem o checkpoint
|
|
48
|
+
de um epoch mais novo.
|
|
49
|
+
- Ao compactar conversas em `## Iterações`, o hook escapa delimitadores de código cortados pelo
|
|
50
|
+
limite de tamanho; backticks inline ou fences nunca ficam abertos para engolir a linha seguinte.
|
|
51
|
+
- `session list` lê `SESSION_REGISTRY`; `show` exibe uma sessão e `use` muda apenas o foco humano
|
|
52
|
+
em `CURRENT_SESSION.md`.
|
|
53
|
+
- `import --source all|claude|codex`, `--since`, `--limit`, `--from` e `--codex-from` limitam escopo.
|
|
54
|
+
- `--dry-run`/`--json` permitem auditar antes de gravar; `--stamp-ids` e `--rescan-decisions`
|
|
55
|
+
corrigem históricos específicos.
|
|
56
|
+
- Exit `0` indica processamento consistente; exit não zero indica configuração, fonte ou escrita
|
|
57
|
+
inválida sem transformar isso em sucesso parcial silencioso.
|
|
58
|
+
|
|
59
|
+
## Exemplos
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npx wendkeep session list
|
|
63
|
+
npx wendkeep session show 019abc-session-id
|
|
64
|
+
npx wendkeep import --source codex --since 2026-07-01 --dry-run --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Resultado esperado
|
|
68
|
+
|
|
69
|
+
Cada sessão canônica aponta para provider, transcript, arquivo de nota e custos correspondentes.
|
|
70
|
+
O registry mantém um epoch de `SessionStart` por activation e o turno nativo mais recente; vários
|
|
71
|
+
`Stop` podem confirmar turnos do mesmo epoch sem fechá-lo. Importações repetidas do mesmo
|
|
72
|
+
`session_id` são deduplicadas; o foco humano não encerra nem altera a identidade dos hooks. Cada
|
|
73
|
+
iteração automática permanece Markdown válido mesmo quando uma fala precisa ser truncada.
|
|
74
|
+
|
|
75
|
+
## Erros comuns e diagnóstico
|
|
76
|
+
|
|
77
|
+
- Sessão ausente: confira provider, path do transcript e registry antes de importar novamente.
|
|
78
|
+
- `Stop ambiguous`: o `turn_id` não foi comprovado pelo transcript ou nenhuma activation ativa
|
|
79
|
+
compatível foi encontrada; o attempt fica observável, mas não publica memória.
|
|
80
|
+
- Stop atrasado aparece como `stale_turn`/`superseded`: o epoch mais novo e seu checkpoint são
|
|
81
|
+
preservados; não force a reaplicação do payload antigo.
|
|
82
|
+
- Duplicatas de forks: limite por fonte/data e revise `forked_from_id`/`source.subagent`.
|
|
83
|
+
- Codex não captura: aprove os hooks e reinicie a sessão após `sync`.
|
|
84
|
+
- Custo contaminado: valide `session_id → session_file → transcript_path → provider`.
|
|
85
|
+
|
|
86
|
+
## Próximos passos
|
|
87
|
+
|
|
88
|
+
Leia [Perfis de Operação](operating-profiles.md), [importação retroativa](retroactive-import.md),
|
|
89
|
+
[custos e observabilidade](costs-and-observability.md) e [notas](notes-and-knowledge.md).
|