auroq-os 2.4.8 → 2.4.10

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.
@@ -22,6 +22,7 @@ const {
22
22
  needsHandoffWarning,
23
23
  } = require('./context/context-tracker');
24
24
  const { buildLayerContext } = require('./context/context-builder');
25
+ const { parseManifest } = require('./domain/domain-loader');
25
26
 
26
27
  const { formatSynapseRules } = require('./output/formatter');
27
28
  const { MemoryBridge } = require('./memory/memory-bridge');
@@ -196,7 +197,22 @@ class SynapseEngine {
196
197
  */
197
198
  constructor(synapsePath, config = {}) {
198
199
  this.synapsePath = synapsePath;
199
- this.config = config;
200
+
201
+ // The manifest is what L2/L5 use to resolve an active agent/squad to its
202
+ // domain file. When the caller does not pass one (the hook never did),
203
+ // parse it here — otherwise those layers silently produce nothing.
204
+ let manifest = config.manifest;
205
+ if (!manifest || Object.keys(manifest).length === 0) {
206
+ try {
207
+ const parsed = parseManifest(path.join(synapsePath, 'manifest'));
208
+ manifest = parsed;
209
+ } catch (err) {
210
+ console.warn(`[synapse:engine] Failed to parse manifest: ${err.message}`);
211
+ manifest = {};
212
+ }
213
+ }
214
+
215
+ this.config = { ...config, manifest };
200
216
 
201
217
  /** @type {Array<import('./layers/layer-processor')>} */
202
218
  this.layers = [];
@@ -120,7 +120,7 @@ function formatAgent(result) {
120
120
  if (result.rules.length > 0) {
121
121
  lines.push(' RULES:');
122
122
  result.rules.forEach((rule, i) => {
123
- lines.push(` ${i}. ${rule}`);
123
+ lines.push(` ${i + 1}. ${rule}`);
124
124
  });
125
125
  }
126
126
 
@@ -146,7 +146,7 @@ function formatWorkflow(result) {
146
146
  if (result.rules.length > 0) {
147
147
  lines.push(' RULES:');
148
148
  result.rules.forEach((rule, i) => {
149
- lines.push(` ${i}. ${rule}`);
149
+ lines.push(` ${i + 1}. ${rule}`);
150
150
  });
151
151
  }
152
152
 
@@ -234,7 +234,7 @@ function formatStarCommands(result) {
234
234
  ];
235
235
 
236
236
  result.rules.forEach((rule, i) => {
237
- lines.push(` ${i}. ${rule}`);
237
+ lines.push(` ${i + 1}. ${rule}`);
238
238
  });
239
239
 
240
240
  lines.push('============================================================');
@@ -366,7 +366,12 @@ function formatSummary(results, _metrics) {
366
366
  for (const result of results) {
367
367
  if (!result || !result.rules || result.rules.length === 0) continue;
368
368
  const meta = result.metadata || {};
369
- const source = (meta.source || meta.domain || 'unknown').toUpperCase();
369
+ // Layers may report a single `source` or a list of `sources` (e.g. L1
370
+ // combines global + context). Accept both so the summary never says UNKNOWN.
371
+ const rawSource = Array.isArray(meta.sources) && meta.sources.length > 0
372
+ ? meta.sources.join('+')
373
+ : (meta.source || meta.domain || 'unknown');
374
+ const source = String(rawSource).toUpperCase();
370
375
  const reason = meta.activationReason || meta.reason || 'active layer';
371
376
  lines.push(` [${source}] ${reason} (${result.rules.length} rules)`);
372
377
  }
@@ -81,12 +81,18 @@ function resolveHookRuntime(input) {
81
81
 
82
82
  /**
83
83
  * Normalize hook output payload shape.
84
+ *
85
+ * `hookEventName` is REQUIRED by Claude Code — without it the whole payload is
86
+ * rejected and `additionalContext` never reaches the model.
87
+ *
84
88
  * @param {string} xml
85
- * @returns {{hookSpecificOutput: {additionalContext: string}}}
89
+ * @param {string} [eventName] - Hook event name (default: 'UserPromptSubmit')
90
+ * @returns {{hookSpecificOutput: {hookEventName: string, additionalContext: string}}}
86
91
  */
87
- function buildHookOutput(xml) {
92
+ function buildHookOutput(xml, eventName) {
88
93
  return {
89
94
  hookSpecificOutput: {
95
+ hookEventName: eventName || 'UserPromptSubmit',
90
96
  additionalContext: xml || '',
91
97
  },
92
98
  };
@@ -1,7 +1,7 @@
1
1
  project:
2
2
  name: "Auroq OS"
3
3
  type: greenfield
4
- version: 2.4.3
4
+ version: 2.4.10
5
5
  installedAt: '2026-03-16'
6
6
 
7
7
  ide:
@@ -33,7 +33,7 @@ concluida, decisao importante tomada, antes de fechar o computador.
33
33
 
34
34
  Leia as secoes `*commit`, `*pre-push` e `*sync` do ops.md e execute os passos como estao. O minimo inegociavel:
35
35
 
36
- - **SALVAR:** revisar o que mudou → conferir tracker/contexto → mensagem em linguagem de negocio → `git add` dos arquivos relevantes (NUNCA `business/vault/`, `.env`, chaves) → commit → confirmar ao expert em 1 linha.
36
+ - **SALVAR:** revisar o que mudou → conferir tracker/contexto → mensagem em linguagem de negocio → **mostrar a lista do que vai entrar e ter o OK do expert** (regra 7) → `git add` SO desses arquivos, um a um (NUNCA `git add -A`/`git add .`, NUNCA `business/vault/`, `.env`, chaves) → commit → confirmar ao expert em 1 linha.
37
37
  - **ENTREGAR:** pre-push OBRIGATORIO (vault/.env fora do staging, `.gitignore` protege, nenhum arquivo gigante, branch certa) → `git push` → confirmar.
38
38
  - **PUXAR:** se ha trabalho local, SALVAR primeiro (commit antes de pull, sempre) → `git fetch` → `git pull` (merge — nunca rebase com o expert) → relatar em portugues o que chegou (autor + o que fez) → conflito: conduzir com o expert, mostrando as duas versoes; em `agents/companion/data/` a resposta quase sempre e juntar as duas.
39
39
 
@@ -45,3 +45,15 @@ Leia as secoes `*commit`, `*pre-push` e `*sync` do ops.md e execute os passos co
45
45
  4. Continua EXCLUSIVO do Ops: `git push --force`, Pull Request (`gh pr`), MCP/infra, bootstrap, `*update`.
46
46
  5. O hook de abertura (`.claude/hooks/auroq-sync.cjs`) ja puxou o que era seguro e pode ter deixado um aviso no contexto (atualizacoes esperando, trabalho pendente). Repasse ao expert em 1-2 linhas, sem drama, e siga.
47
47
  6. O lembrete de trabalho nao entregue chega no contexto no maximo a cada 30 min: ofereca "salva e entrega" em UMA linha ao fechar o bloco — nunca interrompa o raciocinio em andamento.
48
+ 7. **A pasta e compartilhada; a conversa nao.** Outras janelas, agentes e squads escrevem
49
+ na mesma pasta, entao `git status` mostra trabalho que NAO e desta conversa — e um `git
50
+ add -A` publica isso pela metade, dentro de um commit com nome de outro assunto. Antes
51
+ de salvar, SEMPRE:
52
+ - rodar `git status --short` e separar o que ESTA conversa tocou do resto;
53
+ - mostrar ao expert a lista agrupada por assunto, em linguagem comum (nome do arquivo
54
+ nao basta: diga o que e). Ex: *"Vai entrar: a pagina de vendas que a gente fez agora.
55
+ Encontrei tambem 12 arquivos de financas, que nao sao deste assunto — parecem de outra
56
+ conversa sua."*;
57
+ - perguntar em UMA linha: *"salvo so o nosso, ou tudo junto?"* — e obedecer a resposta;
58
+ - na duvida, ou se ele nao responder, salvar SO o que esta conversa tocou. Deixar o resto
59
+ parado nunca perde nada: fica no lugar, esperando a conversa dona dele.
@@ -0,0 +1,9 @@
1
+ # SYNAPSE Agent Domain (L2) — Companion
2
+ # Fonte: agents/companion/agents/companion.md (IDENTIDADE, PERSONALIDADE, ESTILO)
3
+
4
+ COMPANION_RULE_1=Parceiro que manja — nunca guru, nunca servo. Verdade acima de validacao
5
+ COMPANION_RULE_2=Confrontar quando necessario; se o expert esta dispersando, avisar
6
+ COMPANION_RULE_3=Fundamentar em contexto real do projeto — nunca inventar para preencher lacuna
7
+ COMPANION_RULE_4=Opcoes numeradas quando houver mais de um caminho real
8
+ COMPANION_RULE_5=Ser transparente sobre o que sabe e o que nao sabe
9
+ COMPANION_RULE_6=Ciclo operacional: Situar > Priorizar > Executar > Documentar > Refinar
@@ -0,0 +1,10 @@
1
+ # SYNAPSE Agent Domain (L2) — Ops
2
+ # Fonte: .claude/commands/AuroqOS/agents/ops.md (CRITICAL — OPS FAZ, EXPERT APROVA / LINGUAGEM)
3
+
4
+ OPS_RULE_1=O Ops FAZ sozinho sempre que possivel; o expert so aprova, loga no browser e decide
5
+ OPS_RULE_2=O expert e leigo em tecnologia — nunca assumir que ele sabe o que e terminal, CLI ou auth
6
+ OPS_RULE_3=Quando o expert precisar agir, dar receita de bolo: o que fazer, o que colar, o que vai aparecer, como saber que deu certo
7
+ OPS_RULE_4=Uma fase por vez; so avancar quando os checks da fase atual passarem de verdade
8
+ OPS_RULE_5=Detectar o sistema operacional antes de instalar e nunca misturar comandos de Mac e Windows
9
+ OPS_RULE_6=Nunca pedir segredo colado no chat; credencial vai para o 1Password ou para o vault local fora do git
10
+ OPS_RULE_7=O corpo do Bootstrap vem do MCP arcane — se a tool falhar, mostrar a mensagem e parar, nunca improvisar de memoria
@@ -0,0 +1,9 @@
1
+ # SYNAPSE Agent Domain (L2) — Organizer
2
+ # Fonte: agents/organizer/agents/organizer.md (PRINCIPIOS INEGOCIAVEIS)
3
+
4
+ ORGANIZER_RULE_1=Organizacao que nao serve acao e decoracao — se nao ajuda a FAZER, nao tem valor
5
+ ORGANIZER_RULE_2=Quase tudo e ruido, pouquissimo e vital: filtros rigorosos sao inegociaveis
6
+ ORGANIZER_RULE_3=Diagnosticar antes de prescrever — nunca sugerir sem entender primeiro
7
+ ORGANIZER_RULE_4=Sistema previsivel que o expert USA vale mais que sistema perfeito que vira arquivo morto
8
+ ORGANIZER_RULE_5=NUNCA mover ou apagar sem aprovacao explicita do expert
9
+ ORGANIZER_RULE_6=NUNCA mexer no vault sem permissao e NUNCA modificar .auroq-core/
package/.synapse/context CHANGED
@@ -1,7 +1,7 @@
1
1
  # SYNAPSE Context Domain (L1)
2
2
  # Dynamic context loaded on every prompt
3
3
 
4
- CONTEXT_FRAMEWORK=Auroq OS v1.0.0 — Sistema Operacional de IA para Experts
4
+ CONTEXT_FRAMEWORK=Auroq OS — Sistema Operacional de IA para Experts
5
5
  CONTEXT_PHILOSOPHY=Pensar, Fazer e Lembrar com IA. Expert manda e julga, IA executa
6
6
  CONTEXT_FORMULA=Repertorio + IA = Resultado
7
7
  CONTEXT_CYCLE=Situar > Priorizar > Executar > Documentar > Refinar
package/.synapse/manifest CHANGED
@@ -8,29 +8,21 @@ CONSTITUTION_ALWAYS_ON=true
8
8
  CONSTITUTION_NON_NEGOTIABLE=true
9
9
 
10
10
  # Global rules (L1) — always loaded
11
- GLOBAL_RULES_STATE=active
12
- GLOBAL_RULES_ALWAYS_ON=true
11
+ GLOBAL_STATE=active
12
+ GLOBAL_ALWAYS_ON=true
13
13
 
14
14
  # Global context (L1) — always loaded
15
- GLOBAL_CONTEXT_STATE=active
16
- GLOBAL_CONTEXT_ALWAYS_ON=true
15
+ CONTEXT_STATE=active
16
+ CONTEXT_ALWAYS_ON=true
17
17
 
18
18
  # Agent: Companion
19
19
  AGENT_COMPANION_STATE=active
20
20
  AGENT_COMPANION_AGENT_TRIGGER=companion
21
21
 
22
- # Agent: Aurora (auroq-master)
23
- AGENT_AUROQ_MASTER_STATE=active
24
- AGENT_AUROQ_MASTER_AGENT_TRIGGER=auroq-master
25
-
26
22
  # Agent: Ops
27
23
  AGENT_OPS_STATE=active
28
24
  AGENT_OPS_AGENT_TRIGGER=ops
29
25
 
30
- # Agent: Atlas (analyst)
31
- AGENT_ANALYST_STATE=active
32
- AGENT_ANALYST_AGENT_TRIGGER=analyst
33
-
34
26
  # Agent: Organizer
35
27
  AGENT_ORGANIZER_STATE=active
36
28
  AGENT_ORGANIZER_AGENT_TRIGGER=organizer
@@ -0,0 +1,6 @@
1
+ # SYNAPSE Squad Domain (L5) — Clone Forge
2
+ # Fonte: agents/clone-forge/README.md (pipeline, quality gates)
3
+
4
+ CLONE_FORGE_RULE_1=Clonagem cognitiva preserva voz, heuristicas e estilo de decisao do expert — fidelidade acima de fluencia
5
+ CLONE_FORGE_RULE_2=Seguir as fases do pipeline em ordem, respeitando os quality gates de cada uma
6
+ CLONE_FORGE_RULE_3=Modo completo tem 11 fases e modo rapido tem 5 — nunca misturar nem pular fase sem declarar
@@ -0,0 +1,7 @@
1
+ # SYNAPSE Squad Domain (L5) — ETLmaker
2
+ # Fonte: agents/etlmaker/skill.md (activation-instructions)
3
+
4
+ ETLMAKER_RULE_1=SEMPRE responder em portugues brasileiro, casual e direto
5
+ ETLMAKER_RULE_2=Ao executar tasks de dependencias, seguir as instrucoes da task exatamente
6
+ ETLMAKER_RULE_3=Tasks com elicit=true exigem interacao real do expert — nunca preencher por ele
7
+ ETLMAKER_RULE_4=Carregar arquivo de dependencia apenas quando o expert pedir a execucao do comando
@@ -0,0 +1,5 @@
1
+ # SYNAPSE Squad Domain (L5) — Mind Forge
2
+ # Fonte: agents/mind-forge/skill.md
3
+
4
+ MIND_FORGE_RULE_1=Fabrica de mentes sinteticas e consultores — adotar a persona de forge-chief antes de agir
5
+ MIND_FORGE_RULE_2=A persona e a task de start sao a unica fonte de verdade; seguir exatamente como escritas
@@ -0,0 +1,7 @@
1
+ # SYNAPSE Squad Domain (L5) — Squad Forge
2
+ # Fonte: agents/squad-forge/README.md (pipeline, modos, hard gates)
3
+
4
+ SQUAD_FORGE_RULE_1=Extracao profunda com 8 lentes iterativas antes de montar qualquer squad
5
+ SQUAD_FORGE_RULE_2=Playback validation obrigatorio: devolver o processo entendido ao expert antes de construir
6
+ SQUAD_FORGE_RULE_3=Hard gates de profundidade — squad raso nao passa para instalacao
7
+ SQUAD_FORGE_RULE_4=Seguir o pipeline em ordem: Setup > Extracao > Playback > Arquitetura > Montagem > Validacao e Instalacao
@@ -0,0 +1,5 @@
1
+ # SYNAPSE Squad Domain (L5) — Worker Forge
2
+ # Fonte: agents/worker-forge/skill.md
3
+
4
+ WORKER_FORGE_RULE_1=Transforma descricao de cargo em worker operacional com KB viva que cresce a cada missao
5
+ WORKER_FORGE_RULE_2=Adotar a persona de worker-chief e seguir a task de start exatamente como escritas
package/CHANGELOG.md ADDED
@@ -0,0 +1,461 @@
1
+ # Changelog
2
+
3
+ ## [2.4.10] — 2026-09-02
4
+
5
+ ### O Synapse voltou a existir
6
+ Um aluno reportou o aviso `UserPromptSubmit hook error`. A auditoria mostrou que o
7
+ aviso era so o sintoma: o Synapse — a camada que reforca as regras do sistema e do
8
+ agente ativo a cada mensagem — nunca funcionou em nenhuma versao publicada. Eram tres
9
+ falhas em serie.
10
+
11
+ - **O pacote de regras ia sem etiqueta.** Faltava o campo `hookEventName`, obrigatorio,
12
+ e o Claude Code recusava o payload inteiro. Nada chegava ao modelo — a conta era zero,
13
+ nao parcial.
14
+ - **O motor nunca lia o proprio indice.** A engine so usava o manifesto se o chamador
15
+ passasse um, e o hook nunca passou. Com indice vazio, as camadas de agente (L2) e de
16
+ squad (L5) nao resolviam o dominio e produziam zero regras. Sobravam a Constituicao e
17
+ as regras globais, essas por acaso — tinham caminho fixo no codigo.
18
+ - **O indice apontava para o vazio.** 12 dos 13 dominios declarados nao tinham arquivo,
19
+ com nomes descasados dos que existem em disco, mais dois agentes fantasma
20
+ (`auroq-master`, `analyst`) que nao existem no Auroq OS.
21
+
22
+ Agora o indice bate com a realidade (11/11 no diagnostico, era 1/13) e os dominios dos
23
+ tres agentes core e dos cinco meta-squads existem, escritos a partir dos principios que
24
+ ja estavam dentro de cada agente. O resumo tambem parou de rotular tudo como `[UNKNOWN]`.
25
+
26
+ ### O Bootstrap 2 parou de cobrar caro pelo Google Drive
27
+ O passo se chamava "Google Drive conectado" e nao conectava conector nenhum: instalava o
28
+ rclone, que serve a UMA funcao (o `*backup` do Organizer). O aluno passava pelo pedaco
29
+ mais chato da instalacao — terminal separado, configuracao interativa — achando que tinha
30
+ ganhado Drive no dia a dia, e nao tinha.
31
+
32
+ - **Conector oficial virou o padrao.** Clique no navegador, resolve ler, criar, buscar e
33
+ compartilhar arquivo. E agora o Ops pergunta com qual conta Google conectar, em vez de
34
+ pegar a que estiver logada no navegador.
35
+ - **rclone virou opcional declarado**, oferecido so a quem quer espelhar pastas inteiras,
36
+ baixar arquivo grande que o conector recusa ou conferir integridade do backup.
37
+ - **O `*health` parou de contar rclone como pendencia.** Quem nao tem esta correto.
38
+
39
+ ### O aviso de "saiu versao nova" que nunca calava
40
+ `core-config.yaml` estava congelado em 2.4.3 desde a 2.4.7. Como o hook de sync compara
41
+ essa versao com a do npm, todo aluno ja atualizado via o aviso de versao nova todo dia,
42
+ para sempre — e alguns reinstalavam por causa disso. O `prepack` agora sincroniza a
43
+ versao sozinho, entao nao desatualiza de novo.
44
+
45
+ ## [2.4.9] — 2026-09-01
46
+
47
+ ### Salvar nunca mais leva junto o trabalho de outra conversa
48
+ A pasta do negocio e compartilhada entre janelas, agentes e squads, mas o ritual de
49
+ commit so pedia "adicionar os arquivos relevantes" — sem definir relevante e sem nada
50
+ preso ao escopo da conversa. Na pratica virava um `git add -A`: o expert aprovava a
51
+ MENSAGEM do commit e nunca via a LISTA de arquivos, entao trabalho pela metade de outra
52
+ sessao subia dentro de um commit com nome de outro assunto. Reportado por uma aluna e
53
+ reproduzido aqui (60 arquivos de outra frente quase entraram num commit de documentacao).
54
+
55
+ - **Antes de salvar, o agente mostra o que vai entrar.** Ele separa o que a conversa
56
+ atual tocou do resto, apresenta a lista em linguagem comum ("vai entrar a pagina de
57
+ vendas; achei tambem 12 arquivos de financas, que parecem de outra conversa sua") e
58
+ pergunta: "salvo so o nosso, ou tudo junto?". Sem nada de fora, nao pergunta nada.
59
+ - **Na duvida, salva so o da conversa.** Deixar o resto parado nunca perde trabalho —
60
+ fica no lugar, esperando a conversa dona dele. O erro caro e o contrario.
61
+ - **`git add -A` e `git add .` proibidos** no ritual; adicao caminho por caminho,
62
+ conferencia do que ficou preparado antes de fechar e commit por pathspec quando o
63
+ resto e de terceiros (o que outra sessao preparou fica intocado).
64
+ - Vale pra TODOS os agentes, nao so o Ops: a mesma protecao entrou na rule
65
+ `puxar-e-entregar.md`, porque hoje o Companion e os squads tambem atendem
66
+ "salva e entrega".
67
+
68
+
69
+ ## [2.4.8] — 2026-09-01
70
+
71
+ ### Enxugamento das rules — menos instrucao repetida em toda sessao
72
+ Contexto: a Anthropic cortou 80% do system prompt do Claude Code (02/07/2026) e
73
+ publicou o motivo — regra repetida e exemplo pronto estreitam a decisao dos modelos
74
+ novos em vez de melhora-la. As rules do Auroq carregam em TODA sessao, no Claude e no
75
+ Grok (que le `.claude/rules/` do mesmo jeito), entao duplicacao ali custa em toda
76
+ conversa do aluno.
77
+
78
+ - **`commit-inteligente.md` absorvido por `puxar-e-entregar.md`:** os dois ensinavam o
79
+ mesmo ritual de salvar/entregar, e o passo a passo completo ja vive no `ops.md`, que
80
+ e a fonte da verdade. As travas do pre-push (vault, `.env`, chaves) continuam
81
+ intactas — isso e seguranca, nao repeticao.
82
+ - **`agent-handoff.md` removido:** protocolo de compactacao que nada executava; o que
83
+ importa (levar so o resumo, nunca a persona do agente anterior) esta no
84
+ `dna-operacional.md`.
85
+ - **"Salve antes da compactacao de contexto" estava em tres arquivos.** Agora mora so
86
+ no `dna-operacional.md` (Session Management).
87
+ - **`natural-language-first.md` sem os blocos longos de exemplo ERRADO/CERTO:** a regra
88
+ continua inteira, o exemplo que so ocupava espaco saiu.
89
+ - **`agent-authority.md` enxuto:** as exclusividades reais do Ops em duas linhas, no
90
+ lugar de sete tabelas.
91
+ - **O `init` agora apaga rules aposentadas.** Ele sempre sobrescreveu o que estava na
92
+ lista, mas nunca apagava o que saia dela — quem ja tinha instalado ficaria com a
93
+ regra velha convivendo com a nova. Coberto por `tests/rules-aposentadas.test.mjs`.
94
+
95
+ Resultado, medido na maquina (upgrade real 2.4.7 -> 2.4.8): o que carrega em toda
96
+ sessao caiu de 26.982 para 18.792 caracteres (-30%).
97
+ Nenhuma regra de seguranca, de licenciamento (carve-out Arcane) ou do aluno
98
+ (`custom-do-aluno.md`) foi tocada.
99
+
100
+ ## [2.4.7] — 2026-09-01
101
+
102
+ ### Fix
103
+ - Dica da senha corrigida: a tela mostra asteriscos (ou nada, dependendo da janela) — a versao 2.4.6 dizia que nada aparecia.
104
+
105
+ ## [2.4.6] — 2026-09-01
106
+
107
+ ### Fix — semana de campo: /euriler existia na aula, nao no disco
108
+ - **Atalhos do Pack Arcane no disco:** `/euriler`, `/trafegoArcane` e os demais 16 atalhos do Pack agora viajam no pacote e o `init` os instala. O conteudo continua chegando ao vivo pelo MCP — mas sem o arquivo do atalho, o Claude Code respondia "Unknown command" mesmo com MCP conectado e licenca ativa. Copiados SO SE NAO EXISTEM: aluno antigo com a versao completa local (vitalicia) nunca e sobrescrito (EMB-019).
109
+ - **Ops destrava sem atalho:** quando `/euriler` nao existe, o Ops ativa o Clone direto pela tool `squad_ativar` (tabela atalho ↔ recurso_id na secao PACK ARCANE) e so entao oferece o update. Diagnostico do Pack passa SEMPRE por `auroq-os doctor` / MCP `arcane` — nunca por Vercel/Cloudflare/Playwright.
110
+ - **A janela do Windows parava de fechar sozinha:** rodando por `irm | iex`, qualquer `exit` do instalador fechava a janela inteira do PowerShell antes de o aluno ler a mensagem (seis relatos em uma semana — inclusive quem so estava reinstalando e via a janela "cair" ao digitar o nome). Toda parada agora mantem a janela aberta; o `exit` com codigo continua valendo quando o script roda de arquivo (CI e testes).
111
+ - **Nome de pasta com espaco, acento ou maiuscula e ajustado, nao recusado:** "Fevo Ecossistema" vira `fevo-ecossistema`, com aviso na tela. Nos dois instaladores (Mac e Windows).
112
+ - **Reinstalacao virou confirmacao:** quem roda o instalador de novo com o Auroq ja montado recebe "voce ja tinha instalado" + os proximos passos prontos pra colar, em vez de um aviso seco que sumia com a janela.
113
+ - **Senha do login avisada:** a tela do login agora diz que a senha nao aparece enquanto digita — metade dos chamados de "nao estou conseguindo digitar" era so isso.
114
+ - **`*update-auroq` com consentimento pro aluno antigo (EMB-019):** projeto sem conteudo ao vivo so migra depois de um SIM explicito, com a troca explicada em linguagem comum. Nada de empurrar a migracao.
115
+
116
+ ## [2.4.5] — 2026-09-01
117
+
118
+ ### Fix — a travessia do aluno antigo virou caminho único
119
+ - O `*update-auroq` das versões antigas manda ler a lista ATUALIZA no ops.md do pacote novo — que hoje é um ponteiro pro MCP. Um Ops antigo podia tentar a tool (que o projeto dele ainda não tem) e parar no meio. O ponteiro agora traz a instrução de migração explícita: fallback determinístico via `init` do pacote baixado, que preserva os dados e registra o conteúdo ao vivo.
120
+
121
+ ## [2.4.4] — 2026-09-01
122
+
123
+ ### Feat — quem esta em versao antiga descobre e migra sem quebrar nada
124
+ - **Aviso automatico de versao nova:** ao abrir o Claude Code no projeto, o sistema compara a versao instalada com a do npm (1x por dia, silencioso quando esta em dia) e oferece o update. Ninguem mais descobre versao nova por acaso.
125
+ - **`auroq-os register-mcp`:** comando novo que reescreve o registro do conteudo ao vivo (`.mcp.json` + `.codex/config.toml`). E o que faltava pra projeto antigo migrar pelo `*update` sem ficar com Companion mudo: o `*update-auroq` agora registra o MCP como passo obrigatorio e fecha com `auroq-os doctor` — so encerra com o diagnostico limpo.
126
+ - **`*update-auroq` mostra o que mudou:** antes de aplicar, o Ops resume o CHANGELOG da versao nova em linguagem comum.
127
+ - **README ganhou as secoes "Conteudo ao vivo" e "Atualizar o sistema":** o que mora no computador vs o que chega ao vivo pelo MCP `arcane`, como atualizar com uma frase e a garantia de que os dados do expert nunca sao tocados.
128
+
129
+ ## [2.4.3] — 2026-08-27
130
+
131
+ ### Fix — Ops pedia zip do Pack Arcane
132
+ - O Pack da mentoria chega ao vivo. `*install-pack` e `*update-packarcane` nao pedem mais zip, path nem `npx arcane-pack`. A prova e `/euriler` (Codex: `$euriler`) + oi.
133
+ - A casca ganhou a mesma regra, e ela vence se o MCP ainda estiver velho.
134
+ - Catalogo vivo `auroq-core@2.3.3` republicado em 28/08 (EMB-018): o 2.3.2 ainda servia o `*install-pack` antigo.
135
+
136
+ ## [2.4.2] — 2026-08-27
137
+
138
+ ### Fix — piloto Windows real (Marcos)
139
+ - **`npx.ps1` barrado pela politica do Windows.** O PowerShell resolve `.ps1` antes de `.cmd`. Chamado pelado, `npx` vira `npx.ps1` e a politica padrao recusa abrir arquivo de script. A instalacao morria logo depois de baixar o motor. Conserto: chamar `npx.cmd` (funcao `Get-AuroqNpx`). **Nao** se mexe na execution policy (ADR-3).
140
+ - **`claude` nao respondia depois da parada 1.** O Claude Code se instala em `%USERPROFILE%\.local\bin` (e `~/.local/bin` no Mac) e nao publica a pasta. O instalador agora coloca essa pasta no PATH do usuario quando o binario existe.
141
+ - **O fecho pedia "abra a pasta".** Numa janela de texto isso nao quer dizer nada. Agora imprime o `cd` pronto pra colar, depois `claude`/`codex`, depois o Ops.
142
+ - **`core-config.yaml` mentia a versao.** Toda instalacao nova jurava ser 2.2.4, a versao do arquivo modelo. O `init` carimba a versao do pacote e a data de hoje.
143
+
144
+ ## [2.4.0] — 2026-08-27
145
+
146
+ ### Feat — Embarque em 2 passos: instalador proprio
147
+ - **`installer/install.sh` e `installer/install.ps1`:** um endereco (`arka.education/install.sh` / `.ps1`) instala Git, motor do sistema, login da mentoria, pasta do negocio e `init`. Sem `sudo`, sem Administrador, sem `Set-ExecutionPolicy`, sem `mkdir`/`cd` na mao. Bash 3.2 e PowerShell 5.1 — o que vem de fabrica na maquina do aluno.
148
+ - **Catalogo de falhas completo:** maquina velha, disco cheio, sem internet, PowerShell x86, janela da Apple fechada no meio, winget ausente, permissao negada, download corrompido (SHA256 conferido), antivirus, pasta ja ocupada, terminal que nao aceita resposta. Toda falha diz o que aconteceu, o que fazer agora e o contato do suporte.
149
+ - **Motor visivel pra quem abre pelo icone:** o bloco de ambiente vai pros dois perfis (`~/.zshrc` e `~/.zprofile`) no Mac e pro ambiente do usuario no Windows. Era a falha silenciosa do projeto — no terminal funcionava, no app nao, e ninguem via erro.
150
+ - **`auroq-os doctor` mais fundo:** informa a origem do motor (Auroq, Homebrew, nvm, sistema) e responde se o programa aberto pelo icone vai enxergar ele. Nao acusa quem ja tinha Homebrew ou nvm declarado no perfil.
151
+ - **`auroq-os init --pasta <nome>`:** cria a pasta e instala dentro dela, pra quem nao pode depender de um `cd`.
152
+ - **`~/.auroq/install.log`:** registro pro suporte, uma linha por evento. Sem e-mail, sem senha, sem token.
153
+ - **`lib/diagnostico.js`:** as decisoes do doctor viraram funcoes puras e testadas.
154
+
155
+ ### Feat — Bootstrap 1 para de refazer o que o instalador ja fez
156
+ - **FASE 0 nova ("de onde voce veio"):** o Ops le `~/.auroq/install.log` e pula Git e motor quando o instalador ja resolveu. Sem o arquivo (aluno antigo), segue como sempre foi.
157
+ - **FASE 1 emendada:** Homebrew deixa de ser o passo 1 obrigatorio (so entra quando alguma ferramenta pedir); motor minimo sobe de 18 pra 20 e o Ops **nao instala um segundo** quando ja existe um que serve; Python deixa de bloquear quem nao vai rodar transcricao local.
158
+
159
+ ### Fix — o portao de acesso e a conversa com o aluno (auditoria de 27/08)
160
+ - **O passo do login nao gateava nada.** Ele perguntava `auroq-os whoami` e lia o codigo de saida como "ja esta logado" — mas o `whoami` imprimia "Nao autenticado" e saia com **sucesso**. Numa maquina nova de verdade (o unico caso que importa), o instalador dizia "voce ja estava logado" pra quem nunca logou, pulava o portao, criava a pasta do negocio no disco e so entao morria dentro do `init`. O portao virou `check-access`, que confere o contrato online antes de qualquer coisa ser criada.
161
+ - **`whoami` passa a dizer a verdade no codigo de saida:** 0 so com sessao salva e ultimo status `ativo`.
162
+ - **As perguntas voltaram a ser do aluno.** Por `curl | bash`, a entrada padrao do script — e de todo programa que ele chama — e o proprio texto do install.sh. O pedido de e-mail e senha lia uma linha do script como resposta, e a pergunta da segunda maquina era respondida sozinha. `login` e `init` agora rodam ligados no terminal de verdade.
163
+ - **Conta suspensa, cancelada ou finalizada nao deixa mais pasta pra tras** (§10.1 nº 9).
164
+
165
+ ### Testes
166
+ - 4 suites novas (`installer-sh`, `installer-ps1`, `diagnostico`, `cli-embarque`): 88 testes no total. Os do PowerShell rodam de verdade quando ha um `pwsh` na maquina.
167
+ - +11 testes de regressao do portao e da conversa: provados nos dois sentidos (falham com o defeito, passam com a correcao).
168
+
169
+ ## [2.3.0] — 2026-08-25
170
+
171
+ ### Feat — tarball MOTOR+CASCA (ainda NÃO é `latest`)
172
+ - **K9:** esta versão só pode ir pro npm com dist-tag `next`. Não vira `latest` até o T1 do MCP `auroq-core` passar em produção.
173
+ - **Corte do miolo:** `files` deixa de levar `agents/` de conteúdo (Clone Forge, Companion, Consultor, forjas). Organizer (síntese pública) e `seeds/` (memória/docs em branco) ficam.
174
+ - **Casca no pack:** `prepack` sobrepõe CLAUDE.md, AGENTS.md, constitution, DNA, ops.md, shims e rules de MCP. `postpack` restaura o working tree. Tarball medido: 158.7 kB / 121 arquivos (antes ~2.14 MB / 279).
175
+ - **Installer:** não copia forjas; semeia dados do aluno sem sobrescrever; `doctor` falha alto se autoload faltar; patch idempotente de `enableAllProjectMcpServers`.
176
+ - **Login:** fingerprint de device em `~/.arcane/credentials.json`; contrato `finalizado` pode reinstalar (K6). Pack download continua exigindo `ativo`.
177
+
178
+ ## [2.2.4] — 2026-08-21
179
+
180
+ ### Feat — browser nativo, Computer Use e comunicacao direta
181
+ - **Bootstrap 1 atualizado por runtime:** Claude Code configura Claude in Chrome via `/chrome` e Computer Use via `/mcp` no macOS elegivel; o app ChatGPT/Codex instala Browser, Chrome e Computer Use por Plugins; Codex CLI/IDE e Grok sem integracao exposta caem explicitamente no Playwright, sem sucesso falso.
182
+ - **Playwright continua obrigatorio:** Chromium e Firefox permanecem registrados; Chromium ganha smoke test bloqueante e vira fallback/automacao tecnica, nao porta universal pra qualquer tarefa web.
183
+ - **Output style `Direto`:** projeto entrega e ativa um estilo de brevidade inteligente — resultado primeiro, contexto minimo, risco material preservado.
184
+ - **Regra de operacao autonoma:** escopo, persistencia, credenciais, honestidade e ordem de ferramentas passam a valer no Claude (`.claude/rules`) e no Codex (`AGENTS.md`).
185
+ - **Material didatico corrigido:** Consultor passa a ensinar API/CLI/MCP → browser conectado → Playwright → Computer Use.
186
+ - **Gates reais:** recurso nativo so e marcado como pronto depois de status + smoke test; indisponibilidade por plano, OS, politica ou rollout e registrada e coberta pelo fallback.
187
+
188
+ ## [2.2.3] — 2026-08-21
189
+
190
+ ### Feat — O ritual vira invisível: puxar automático + qualquer agente salva e entrega
191
+ - **Hook `auroq-sync.cjs` (SessionStart):** ao abrir o `claude` na pasta do negócio, checa o GitHub e **puxa sozinho quando é seguro** (working tree limpo, nada por enviar), deixando no contexto o que chegou pro agente relatar em português ("Marcos subiu 9 criativos"). Se há trabalho local não entregue, NÃO puxa — avisa e sugere "salva e entrega" primeiro. Sem conexão ou sem GitHub: silêncio. **Nunca entrega sozinho.**
192
+ - **Lembrete (UserPromptSubmit):** quando há trabalho não entregue há 30+ min, injeta um lembrete discreto (no máximo 1 a cada 30 min) pra o agente oferecer "salva e entrega" ao fechar o bloco. Estado fora do repositório (tmpdir) — nunca suja o git do aluno.
193
+ - **Rule `puxar-e-entregar.md` (universal):** "salva", "entrega", "puxa" em linguagem natural são executados pelo agente ATIVO seguindo o ritual do Ops (`*commit`, `*pre-push`, `*sync`) — o expert nunca mais troca de agente pra isso. As travas do pre-push (vault/.env) valem pra todo agente.
194
+ - **Autoridade ajustada** (ops.md, agent-authority, AGENTS.md, Companion): o Ops segue DONO do ritual e exclusivo em `push --force`, PR, MCP/infra, bootstrap e `*update`; commit/push/pull viram ritual compartilhado.
195
+ - Hooks registrados em `.claude/settings.json` (arquivo de framework, versionado — viaja no clone e chega no update); `*update-auroq` passa a atualizar esse arquivo.
196
+
197
+
198
+ ## [2.2.2] — 2026-08-07
199
+
200
+ ### Improve — Grok Build como terceiro runtime
201
+ - `AGENTS.md` e `README` passam a tratar **Claude Code**, **Codex CLI** e **Grok Build** como harnesses oficiais.
202
+ - Grok usa a camada Claude nativa (`.claude/commands`, rules, `AGENTS.md`) — **sem** precisar de `sync:codex`.
203
+ - Ativacao por harness documentada: Codex via `$nome` + skills; Claude/Grok via slash commands / pedido de ativacao.
204
+ - Constitution e higiene de sessao atualizadas pra incluir Grok (um runtime por sessao).
205
+
206
+ ## [2.2.1] — 2026-08-05
207
+
208
+ ### Change — Colaborador não precisa ser aluno (política oficial)
209
+ - `clone` **não pede mais login de aluno** — colaborador do negócio de um aluno clona sem conta na mentoria. O gate real do clone é o convite do GitHub (repo privado); um `git clone` puro já entregaria o mesmo conteúdo. Os gates de aluno seguem onde há valor do framework: `init` (criar negócio do zero) e `*update-auroq` (atualizar o sistema — só o dono atualiza; o colaborador recebe a atualização via `*sync`, porque o update vira commit no repo).
210
+ - Ops (seção MULTI-MAQUINA) e README documentam a política.
211
+
212
+ ## [2.2.0] — 2026-08-05
213
+
214
+ ### Feat — Multi-máquina e colaborador
215
+ - **Novo comando `npx auroq-os clone`** — o caminho oficial da segunda máquina (e do colaborador). Clonar JÁ é a instalação: baixa o negócio inteiro do GitHub (sistema, agentes, memória do Companion, documentos), com o mesmo gate de aluno do init, e completa só o que não viaja — npm install, skills do Codex, proteções de segredo e health check. Aceita `owner/repo`, URL ou caminho; sem argumento, lista os repositórios da conta via GitHub CLI pra escolher.
216
+ - **Guardrail no `init`** — em instalação nova, pergunta se o aluno já usa o Auroq em outra máquina; se sim, aborta e aponta pro `clone`. Mata o erro clássico de criar um segundo Auroq desconectado (históricos que não se cruzam + versões divergentes do framework). Update/reinstall em pasta existente não pergunta. Escape: `AUROQ_INIT_MODE=novo`.
217
+ - **Ops ganha `*sync`** — puxar as atualizações do GitHub no início da sessão, com commit-antes-de-pull automático, condução de conflito pra leigo (memória do Companion = juntar as duas versões) e relatório em português do que chegou. Ritual oficial: sentou → `*sync` · levantou → `*commit` + `*push`.
218
+ - **Ops ganha a seção MULTI-MAQUINA E COLABORADOR** — sabe orientar: clone (nunca init), convite-não-senha (GitHub Collaborators, assinatura Claude própria, cofre "Equipe" no 1Password com escopo), régua do diário (colaborador lê e escreve a memória do Companion), arquivo pesado no Drive.
219
+
220
+ ### Security — Fix do .gitignore (vazamento de Service Key)
221
+ - O `.gitignore` do aluno passa a ser **gerado por código** (`applySecretProtections`), não copiado de arquivo — o tarball do npm não preservava o arquivo de forma confiável e instalações reais ficavam com um .gitignore de 4 linhas **sem `business/vault/`**, onde o Bootstrap salva a Service Key do Supabase em texto plano: o primeiro push do aluno subia segredo pro GitHub.
222
+ - Novo comando `npx auroq-os fix-gitignore` — merge idempotente (adiciona o que falta, preserva linhas do expert) + **destraqueia segredos já versionados** (`git rm --cached` em vault/.env/chaves; os arquivos continuam no disco) e avisa quando podem já ter subido pro remote (conduzir rotação das chaves).
223
+ - Roda automaticamente no `init`, no `clone` e no `*update-auroq` (Passo 5) — aluno existente é migrado no próximo update sem fazer nada.
224
+ - Proteções também para mídia pesada (png/jpg/mp4/mov/mp3/wav) — repo é texto; mídia vai pro Drive.
225
+
226
+ ### Improve
227
+ - Versão dinâmica no banner e rodapé (lida do package.json; acabou o "v2.1.0" hardcoded).
228
+ - Health check extraído (`runHealthChecks`) e compartilhado por init e clone.
229
+
230
+ ## [2.1.6] — 2026-06-26
231
+
232
+ ### Improve
233
+ - Bootstrap 2 (Ops) — seção do Cloudflare reescrita pra leigo. Dois caminhos explícitos: **Caminho A** (já tem domínio → apontar nameservers, guiado por print da tela porque cada registrador é diferente) e **Caminho B** (comprar novo direto no Cloudflare, recomendado — já nasce conectado).
234
+ - Deixa claro que o aluno pode ter **quantos domínios quiser** na conta e adicionar mais a qualquer momento.
235
+ - Documenta o limite real: o Cloudflare Registrar **não vende `.com.br`** (nem ccTLD br) — quem quer `.com.br` compra no Registro.br e cai no Caminho A.
236
+ - Gate de verificação reforçado: confirma que o(s) domínio(s) esperado(s) aparecem nas zonas, não só que o MCP conectou.
237
+
238
+ ## [2.1.5] — 2026-06-24
239
+
240
+ ### Fix
241
+ - O `init` (rodado direto ou via `arcane-pack update`) deixa de sobrescrever customizacoes do aluno. Antes, todo update restaurava os arquivos de framework (`CLAUDE.md`, rules, companion) com `overwrite: true` — quem editava esses arquivos perdia o trabalho no proximo update (so o git checkpoint salvava).
242
+ - Novo lugar oficial pra customizacao: `.claude/rules/custom-do-aluno.md` — semente criada na 1a vez e NUNCA mais sobrescrita. E onde regras de comportamento e overrides do aluno devem morar (o Auroq ja carrega tudo de `.claude/rules/` automaticamente).
243
+ - `.claude/settings.local.json` passa a ser preservado (config local do aluno, nao do framework).
244
+ - `CLAUDE.md` documenta os 2 lugares que sobrevivem a updates; o output do `init` avisa onde eles ficam.
245
+
246
+ ## [2.1.3] — 2026-06-10
247
+
248
+ ### Fix
249
+ - `init` cria o `package.json` ANTES de gerar as skills do Codex — o marcador de ownership nascia com o nome da pasta e todo sync seguinte recusava com "foreign" (quebrava o `arcane-pack update` em instalacoes novas).
250
+ - Ownership das skills do Codex passa a aceitar marcador da MESMA pasta de projeto mesmo que o name do package tenha mudado (repara projetos ja afetados sem intervencao manual).
251
+ - `*update-auroq` (Ops) passa a seguir a lista ATUALIZA do ops.md NOVO do pacote baixado — a lista da versao instalada nao conhecia arquivos novos (ex.: `scripts/sync-codex-skills.mjs` nunca chegava em quem atualizava a partir de <= 2.0.4).
252
+ ## [2.1.2] — 2026-06-10
253
+
254
+ ### Fix
255
+ - Bootstrap 2 deixa de configurar o 1Password, que passa a ser pre-requisito tratado no Step anterior da plataforma.
256
+ - Ops valida o cofre antes das conexoes e oferece duas rotas explicitas: voltar para configurar o 1Password ou continuar com vault local menos seguro.
257
+ - Todas as conexoes do Bootstrap 2 passam a obedecer uma politica unica de armazenamento de credenciais.
258
+
259
+ ## [2.1.1] — 2026-06-09
260
+
261
+ ### Fix
262
+ - Remove command orfao do Squad Edicao do core; squads Arcane pertencem ao `arcane-pack` e so ganham skill quando os arquivos completos sao instalados.
263
+ - Fluxo do Ops passa a exigir confirmacao do sync Codex executado pelo `arcane-pack@1.2.0+`.
264
+
265
+ ## [2.1.0] — 2026-06-09
266
+
267
+ ### Feat — Runtime hibrido oficial
268
+ - Claude Code e Codex CLI passam a ser runtimes oficiais equivalentes do Auroq OS.
269
+ - Installer gera e verifica skills Codex no local oficial `.agents/skills`, isoladas por projeto e sem colisao global entre negocios.
270
+ - Sync Codex com ownership, collision guard, deteccao real de drift, execucao fora da raiz e descoberta automatica de comandos customizados.
271
+ - Ops atualiza `AGENTS.md` e a ponte Codex, regenerando as skills no pos-update.
272
+ - Constitution 2.0.0 torna o projeto Auroq no terminal o centro de comando, sem dependencia conceitual de um fornecedor.
273
+
274
+ ### Quality
275
+ - Quality gates raiz: lint, typecheck estrutural, testes Node e pack dry-run.
276
+ - Testes cobrem determinismo, portabilidade, preservacao de skills externas, drift e colisoes.
277
+
278
+ Histórico de versões do Auroq OS. Formato: data + o que mudou.
279
+
280
+ ## [1.6.1] — 2026-05-08
281
+
282
+ ### Fix — Ops install/update-squad/install-pack
283
+
284
+ - **Slash command file usa agora `slash_prefix:` do `squad.yaml`, não nome da pasta.** Antes: Ops criava `.claude/commands/{nome-da-pasta}.md` cegamente — funciona se `slash_prefix == nome-da-pasta`, mas QUEBRA se o squad declara um slash diferente.
285
+
286
+ Exemplo concreto que motivou o fix: Slide Forge v2 tem pasta `slide-forge` mas `slash_prefix: "slideForgeV2"`. Do jeito antigo, Ops criaria `.claude/commands/slide-forge.md` → aluno ativaria com `/slide-forge` (errado). Agora cria `.claude/commands/slideForgeV2.md` → ativa com `/slideForgeV2` (correto).
287
+
288
+ - **Suporte a `slash_prefix_legacy:`** pra alias backward-compat. Squad pode declarar nome novo + nome antigo no mesmo `squad.yaml`. Ops cria os 2 command files. Útil pra updates que mudam ativação (v1 → v2): aluno que tinha hábito do nome antigo continua funcionando, e o novo está disponível.
289
+
290
+ - **Conteúdo do command file melhorado:** descrição lida de `description:` ou `title:` do squad.yaml. Chief agent detectado de `tiers.orchestrator[0]` automaticamente.
291
+
292
+ - **Aplicado em 3 lugares:** `*install` Passo 4, `*update-squad` Passo 7, `*install-pack` Passo 3.
293
+
294
+ ### Por que isso importa
295
+
296
+ Sem esse fix, qualquer squad da Mentoria Arcane que declara `slash_prefix` diferente do nome da pasta era instalado errado. Aluno ativava `/{nome-pasta}` em vez do nome correto `/slug-real`. Agora é determinístico.
297
+
298
+ ---
299
+
300
+ ## [1.6.0] — 2026-05-08
301
+
302
+ ### Feat — Ops
303
+
304
+ - **`*update-squad`: protocolo dedicado de atualização de squad existente.** Aluno baixa zip da versão nova de um squad (ex: `slide-forge-v2.0.0.zip`) e roda `*update-squad` — Ops faz a operação completa preservando dados:
305
+ - Detecta versão atual instalada vs versão do zip (lendo campo `version:` do `squad.yaml`)
306
+ - Mostra diff de versão pro aluno confirmar
307
+ - Detecta modificações locais do aluno em arquivos do framework (a princípio aluno não deveria modificar) → cria backup em `_backup-tuas-mods/{slug}-v{old}-{timestamp}/` antes de sobrescrever
308
+ - Backup completo do squad antigo em `agents/_archive/{slug}-v{old}-{timestamp}/` (retenção 30 dias)
309
+ - **Preserva sempre runtime do aluno:** `agents/{slug}/minds/` (outputs do expert), `.state.json` (pipeline em andamento), `*-state.json`
310
+ - Substitui só arquivos framework (agents/, tasks/, data/, workflows/, checklists/, templates/, squad.yaml, README)
311
+ - Atualiza slash command em `.claude/commands/{slug}.md` se mudou
312
+ - Validação pós-update + rollback automático se algum check falhar
313
+ - Reporta o que mudou + caminhos dos backups
314
+
315
+ - **`*install` ganhou smart detection.** Antes: se squad já existia, perguntava só "quer sobrescrever?" — apagava `minds/` e tudo. Agora: se squad existe, oferece 3 opções:
316
+ 1. **Atualizar** (recomendado) — reroteia pra `*update-squad` (preserva dados)
317
+ 2. **Reinstalar do zero** — apaga tudo e instala como novo (raro, requer dupla confirmação)
318
+ 3. **Cancelar**
319
+ - Ainda: se aluno usa `*update-squad` num squad que NÃO existe, reroteia automaticamente pro `*install`.
320
+
321
+ - **Greeting do Ops atualizado:** novo item "4. Atualizar squad — substituir squad existente por versao nova (preserva teus dados)".
322
+
323
+ ### Cenários de uso
324
+
325
+ - **Aluno recebe slide-forge v2:** zip nomeado com versão (`slide-forge-v2.0.0.zip`). Roda `*update-squad`, drag-and-drop do zip. Ops detecta v1 instalada, confirma update, faz backup, preserva minds/, instala v2 limpo.
326
+ - **Aluno tenta `*install` num squad já instalado:** Ops oferece atualizar via `*update-squad` antes de apagar dados.
327
+ - **Aluno modificou framework localmente:** Ops detecta divergências, oferece backup-tuas-mods antes de sobrescrever.
328
+
329
+ ### Detalhes técnicos
330
+
331
+ - Backup retenção: 30 dias (squad antigo em `agents/_archive/`)
332
+ - Backup das mods locais: separado em `_backup-tuas-mods/` pra clareza
333
+ - Whitelist de runtime preservado: `minds/`, `.state.json`, `*-state.json`, `.local/`
334
+ - Rollback automático se validação pós-update falhar (`squad.yaml` parseável, `start.md` existe, slash command aponta pra arquivos existentes, runtime preservado intacto)
335
+
336
+ ---
337
+
338
+ ## [1.5.0] — 2026-05-08
339
+
340
+ ### Refactor
341
+ - **Squad Forge reescrito do zero.** Plano de correção em 7 fases aplicado após diagnóstico que revelou squads gerados superficiais (agentes 90-130 linhas, sem Output Examples, sem Immune System, com refs externas a paths privados que quebravam na máquina do aluno). Versão antiga: 1.0.0. Nova: 2.0.0.
342
+
343
+ ### Feat — Squad Forge
344
+
345
+ - **6 tasks novas:** `fix-squad`, `update-squad`, `rebuild-squad` (modos completos do greeting), `generate-prd`, `generate-stories` (Story-Driven — Article III Constitution), `self-test` (auto-validação contínua). Total: 12 tasks (era 6).
346
+ - **Profundidade obrigatória nos squads gerados:** hard gates bloqueiam QG-SF-004 se agente sair com <250 linhas, sem 3+ OUTPUT EXAMPLES concretos, sem 3+ IMMUNE SYSTEM triggers rastreáveis, ou com <5 frases-chave. Self-audit quantitativo via bash + self-healing loop (max 3 tentativas).
347
+ - **REGRA AUTOCONTIDO (NON-NEGOTIABLE):** squads gerados nunca mais saem com refs a `docs/knowledge/...`, `squads/etlmaker/kbs/...`, `business/...`, `~/euriler-brain/`, ou absolute paths. Fontes externas viram build-time inputs — Smith lê, processa, sintetiza, e ESCREVE conteúdo novo dentro de `squads/{name}/data/`. Aluno consegue zipar e rodar em qualquer máquina.
348
+ - **Story-Driven Development:** todo squad gerado vem com PRD em `docs/prd/squad-{slug}.md` (FRs/NFRs/CONs/SCs rastreáveis aos PUs via Trace Matrix), stories em `docs/stories/squad-forge/{slug}/` (1 epic com 5 ACs = 5 QGs + 1 story por fase), e tracker em `business/campanhas/squad-{slug}/tracker.md` (Project Tracker Protocol).
349
+ - **Modos completos no greeting:** `*start` (criar), `*update {squad}` (modificação cirúrgica preservando profundidade), `*fix {squad}` (audit + auto-fix + lista manual), `*rebuild {squad}` (reverse-extract + reconstruir com profundidade nova), `*self-test` (audita o próprio squad-forge).
350
+ - **Instalação automática (Fase 5):** após QG-SF-005 PASS, squad é copiado pra `squads/{name}/`, skill registrada em `.claude/commands/{slashPrefix}.md`, MEMORY.md atualizado, tracker atualizado, validação pós-instalação. Rollback completo se qualquer sub-step falha. Backup automático em `squads/_archive/` se squad já existia.
351
+ - **Template de agente condicional (target_audience):** start.md Step 3 pergunta se squad é `internal` (uso interno do dono — pode ter refs `business/cockpit.md`) ou `distributed` (alunos/clientes — REGRA AUTOCONTIDO ativa). Default seguro: distributed.
352
+ - **State management real:** `.state.json` atualizado por todos os 3 agentes em cada round/fase. `*resume` agora retoma de verdade da última fase incompleta (antes era fingido).
353
+ - **Quality thresholds centralizados:** `data/quality-thresholds.yaml` é single source of truth — extraction, agent_depth, kb_depth (por tipo: operacional 800 / analítico-criativo 600 / dev 400), task_structure, workflow, autocontido, story_driven, installation. Mudar 1 valor propaga pra todos os checks.
354
+
355
+ ### Fix — Squad Forge
356
+
357
+ - Path do schema corrigido em `forge-smith.md` (`.aios-core/schemas/squad-schema.json`)
358
+ - `data/` padronizado em README e templates (era inconsistente com `knowledge/`)
359
+ - Comandos do chief alinhados ao greeting (antes greeting prometia 4 modos, chief tinha só `*start`)
360
+ - Numeração inconsistente em `architect-squad.md` corrigida
361
+ - Smoke tests em `validate-squad.md` sem hardcode de exemplo (era "oferta R$997")
362
+ - `current_phase` documentado como 0..5 (6 fases totais)
363
+
364
+ ### Migration
365
+
366
+ - **Squads existentes contaminados:** quem tinha squads gerados antes desta versão (com refs `business/cockpit.md` ou `business/campanhas/*/tracker.md` em runtime) deve rodar `*fix {squad-name}` pra detectar violações + `*update` ou `*rebuild` pra corrigir. Squads internos do dono (não distribuídos) podem ficar como estão.
367
+ - **Aluno via `*update` do Ops:** pasta `agents/squad-forge/` é sobrescrita (L1/L2/L3 — framework, igual ao fix de 1.4.1). Outputs em `agents/squad-forge/minds/` continuam preservados.
368
+
369
+ ### Detalhes técnicos
370
+
371
+ - Plano completo: `docs/plans/squad-forge-correcao-v2.md` (no AIOS — não distribuído)
372
+ - Backup local pré-sync: `_backup-pre-sync/squad-forge-pre-1.5.0-20260508-125651/`
373
+ - Validator: VALID, 0 errors, 1 warning não-bloqueante (`handoff_prompts` opcional)
374
+
375
+ ---
376
+
377
+ ## [1.4.1] — 2026-04-29
378
+
379
+ ### Fix
380
+ - **`*update` do Ops agora atualiza os meta squads em `agents/`.** Antes só
381
+ atualizava os arquivos `.claude/commands/{meta-squad}.md` (commands), mas
382
+ deixava o conteúdo da pasta `agents/{meta-squad}/` intocado — bug que
383
+ fazia atualizações do Clone Forge (e outros meta squads) não chegarem nos
384
+ alunos via `*update`. Agora `agents/squad-forge/`, `agents/mind-forge/`,
385
+ `agents/worker-forge/`, `agents/clone-forge/`, `agents/etlmaker/` e
386
+ `agents/organizer/` são tratados como L1/L2/L3 (framework) e sobrescritos.
387
+ Outputs em `agents/{meta-squad}/minds/` continuam preservados (L4 — dados
388
+ do expert).
389
+
390
+ ## [1.4.0] — 2026-04-29
391
+
392
+ ### Refactor
393
+ - **Clone Forge agora é self-contained.** Removida dependência do Squad Creator
394
+ Premium e dos agentes externos `@oalanicolas` e `@pedro-valerio` que travavam
395
+ o setup com "Squad Creator Premium nao instalado". Aluno baixa e roda do zero.
396
+
397
+ ### Feat
398
+ - 5 tasks novas no Clone Forge: `extract-voice-dna`, `extract-thinking-dna`,
399
+ `fidelity-score`, `validate-clone`, `clone-review`. Total: 17 tasks.
400
+ - 4 data files novos: `clone-anti-patterns`, `clone-validation`,
401
+ `output-examples`, `source-tiers`. Total: 11 data.
402
+ - Checklist `smoke-test-clone.md` (3 cenários padronizados).
403
+ - `@innerlens` absorve Voice DNA extraction, `@cognitive-motor` absorve
404
+ Thinking DNA, `@clone-forge-chief` absorve coleta + validação completa.
405
+
406
+ ### Fix
407
+ - Quick workflow não valida mais "MIUs >= 80%" no QG-005 quando Fase 2
408
+ (MIU extraction) é skipped — bug que dava comportamento indefinido.
409
+ - Removidas referências personalizadas em exemplos de tasks (paths e nomes
410
+ trocados por genéricos).
411
+
412
+ ## [1.3.2] — 2026-04-29
413
+
414
+ ### Chore
415
+ - Declara `engines.node >=18` no package.json (alinha com o check de runtime
416
+ que o installer já fazia, mas agora o npm avisa antes de instalar).
417
+ - LICENSE proprietário e CHANGELOG adicionados ao repo.
418
+ - `.gitignore` reorganizado: `.npmrc` movido pra seção de Secrets.
419
+
420
+ ## [1.3.1] — 2026-04-25
421
+
422
+ ### Fix
423
+ - CLI agora aponta pra `arcane.arka.education` na tela de login.
424
+ Antes mostrava `mentoria-arcane.vercel.app` (domínio antigo).
425
+
426
+ ## [1.3.0] — 2026-04-14
427
+
428
+ ### Feat
429
+ - Auth gate no CLI: comandos `init`, `login`, `logout`, `whoami`.
430
+ Aluno autentica com email + senha da Mentoria Arcane antes de instalar.
431
+ - Validação de acesso ativo via RPC `check_access_status` no Supabase.
432
+ - Modo offline: usa credencial local quando sem internet.
433
+
434
+ ## [1.2.0] — 2026-04-09
435
+
436
+ ### Fix
437
+ - Installer copia meta squads e scripts como diretórios inteiros
438
+ (antes copiava só arquivos individuais e perdia conteúdo).
439
+ - Installer bloqueia instalação na pasta home do usuário.
440
+ - Preserva companion personalizado (não sobrescreve com o genérico).
441
+ - Limpa commands antigos em camelCase ao atualizar.
442
+ - Migra meta squads de `squads/` pra `agents/` em projetos antigos.
443
+
444
+ ## [1.1.0] — 2026-04-08
445
+
446
+ ### Feat
447
+ - Meta squads incluídos: Squad Forge, Mind Forge, Worker Forge, Clone Forge, ETLmaker.
448
+ - Organizer com comando `*store`.
449
+ - Companion com knowledge completo (foundation, system-guide, modus-operandi,
450
+ arcane-method, expert-essencial).
451
+
452
+ ### Fix
453
+ - Installer sobrescreve framework mas preserva dados do aluno (resolve loop circular de update).
454
+ - Companion varre `agents/` pra descobrir especialistas instalados.
455
+
456
+ ## [1.0.2] — 2026-03-17
457
+
458
+ ### Setup
459
+ - Versão inicial pública: framework completo (constitution, synapse engine,
460
+ hooks, rules, companion, organizer).
461
+ - Bootstrap detecta OS (mac/windows) com mapa de comandos por plataforma.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auroq-os",
3
- "version": "2.4.8",
3
+ "version": "2.4.10",
4
4
  "description": "Auroq OS — Sistema Operacional de IA para Experts",
5
5
  "bin": {
6
6
  "auroq-os": "bin/auroq-os.js"
@@ -47,6 +47,7 @@
47
47
  "agents/organizer/",
48
48
  "AGENTS.md",
49
49
  "README.md",
50
+ "CHANGELOG.md",
50
51
  ".gitignore",
51
52
  ".env.example"
52
53
  ],
@@ -44,4 +44,23 @@ for (const src of files) {
44
44
  fs.copyFileSync(src, dest);
45
45
  }
46
46
 
47
+ // O hook auroq-sync compara a versao lida de .auroq-core/core-config.yaml com a
48
+ // do npm para avisar de update. Se o core-config ficar para tras, TODO aluno ja
49
+ // atualizado ve "saiu versao nova" para sempre. Sincroniza no pack.
50
+ const pkgVersion = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')).version;
51
+ const cfgPath = path.join(root, '.auroq-core', 'core-config.yaml');
52
+ if (fs.existsSync(cfgPath)) {
53
+ const cfg = fs.readFileSync(cfgPath, 'utf8');
54
+ const synced = cfg.replace(/^(\s*version:\s*)["']?\d+\.\d+\.\d+["']?/m, `$1${pkgVersion}`);
55
+ if (synced !== cfg) {
56
+ const bak = path.join(backupRoot, '.auroq-core', 'core-config.yaml');
57
+ if (!fs.existsSync(bak)) {
58
+ fs.mkdirSync(path.dirname(bak), { recursive: true });
59
+ fs.copyFileSync(cfgPath, bak);
60
+ }
61
+ fs.writeFileSync(cfgPath, synced);
62
+ console.log(`prepack-casca: core-config.yaml sincronizado para ${pkgVersion}`);
63
+ }
64
+ }
65
+
47
66
  console.log(`prepack-casca: ${files.length} arquivos sobrepostos`);