mega-brain-ai 1.1.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.

Potentially problematic release.


This version of mega-brain-ai might be problematic. Click here for more details.

Files changed (308) hide show
  1. package/.claude/CLAUDE.md +155 -0
  2. package/.claude/commands/agents.md +161 -0
  3. package/.claude/commands/ask.md +117 -0
  4. package/.claude/commands/benchmark.md +224 -0
  5. package/.claude/commands/chat.md +343 -0
  6. package/.claude/commands/compare.md +116 -0
  7. package/.claude/commands/conclave.md +194 -0
  8. package/.claude/commands/config.md +133 -0
  9. package/.claude/commands/council.md +194 -0
  10. package/.claude/commands/create-agent.md +452 -0
  11. package/.claude/commands/debate.md +157 -0
  12. package/.claude/commands/documentation/create-architecture-documentation.md +175 -0
  13. package/.claude/commands/dossiers.md +180 -0
  14. package/.claude/commands/evolve.md +223 -0
  15. package/.claude/commands/extract-dna.md +170 -0
  16. package/.claude/commands/extract-knowledge.md +507 -0
  17. package/.claude/commands/inbox.md +296 -0
  18. package/.claude/commands/ingest-empresa.md +191 -0
  19. package/.claude/commands/ingest.md +182 -0
  20. package/.claude/commands/jarvis-briefing.md +67 -0
  21. package/.claude/commands/jarvis-control.md +169 -0
  22. package/.claude/commands/jarvis-full.md +181 -0
  23. package/.claude/commands/jarvis.md +212 -0
  24. package/.claude/commands/ler-drive.md +212 -0
  25. package/.claude/commands/log.md +158 -0
  26. package/.claude/commands/loop.md +133 -0
  27. package/.claude/commands/loops.md +73 -0
  28. package/.claude/commands/mission-autopilot.md +538 -0
  29. package/.claude/commands/mission.md +353 -0
  30. package/.claude/commands/process-inbox.md +148 -0
  31. package/.claude/commands/process-jarvis.md +3036 -0
  32. package/.claude/commands/process-video.md +131 -0
  33. package/.claude/commands/rag-search.md +78 -0
  34. package/.claude/commands/resume.md +33 -0
  35. package/.claude/commands/save.md +38 -0
  36. package/.claude/commands/scan-inbox.md +125 -0
  37. package/.claude/commands/setup.md +99 -0
  38. package/.claude/commands/system-digest.md +243 -0
  39. package/.claude/commands/verify.md +182 -0
  40. package/.claude/commands/view-dna.md +169 -0
  41. package/.claude/hooks/agent_doctor.py +433 -0
  42. package/.claude/hooks/agent_memory_persister.py +203 -0
  43. package/.claude/hooks/auto_formatter.py +158 -0
  44. package/.claude/hooks/checkpoint_writer.py +244 -0
  45. package/.claude/hooks/claude_md_guard.py +146 -0
  46. package/.claude/hooks/creation_validator.py +357 -0
  47. package/.claude/hooks/enforce_dual_location.py +501 -0
  48. package/.claude/hooks/enforce_plan_mode.py +220 -0
  49. package/.claude/hooks/inbox_age_alert.py +367 -0
  50. package/.claude/hooks/jarvis_briefing.py +506 -0
  51. package/.claude/hooks/ledger_updater.py +301 -0
  52. package/.claude/hooks/memory_hints_injector.py +251 -0
  53. package/.claude/hooks/memory_updater.py +202 -0
  54. package/.claude/hooks/multi_agent_hook.py +464 -0
  55. package/.claude/hooks/notification_system.py +120 -0
  56. package/.claude/hooks/pattern_analyzer.py +526 -0
  57. package/.claude/hooks/pending_tracker.py +188 -0
  58. package/.claude/hooks/post_batch_cascading.py +1740 -0
  59. package/.claude/hooks/post_output_validator.py +358 -0
  60. package/.claude/hooks/post_tool_use.py +120 -0
  61. package/.claude/hooks/post_write_validator.py +200 -0
  62. package/.claude/hooks/quality_watchdog.py +394 -0
  63. package/.claude/hooks/ralph_wiggum.py +277 -0
  64. package/.claude/hooks/session-source-sync.py +218 -0
  65. package/.claude/hooks/session_autosave_v2.py +1135 -0
  66. package/.claude/hooks/session_end.py +203 -0
  67. package/.claude/hooks/session_start.py +939 -0
  68. package/.claude/hooks/skill_indexer.py +48 -0
  69. package/.claude/hooks/skill_router.py +358 -0
  70. package/.claude/hooks/stop_hook_completeness.py +178 -0
  71. package/.claude/hooks/subagent_tracker.py +163 -0
  72. package/.claude/hooks/token_checkpoint.py +584 -0
  73. package/.claude/hooks/user_prompt_submit.py +125 -0
  74. package/.claude/rules/ANTHROPIC-STANDARDS.md +384 -0
  75. package/.claude/rules/CLAUDE-LITE.md +201 -0
  76. package/.claude/rules/RULE-GROUP-1.md +320 -0
  77. package/.claude/rules/RULE-GROUP-2.md +307 -0
  78. package/.claude/rules/RULE-GROUP-3.md +248 -0
  79. package/.claude/rules/RULE-GROUP-4.md +427 -0
  80. package/.claude/rules/RULE-GROUP-5.md +388 -0
  81. package/.claude/rules/RULE-GROUP-6.md +387 -0
  82. package/.claude/rules/logging.md +53 -0
  83. package/.claude/rules/mcp-governance.md +128 -0
  84. package/.claude/rules/pipeline.md +60 -0
  85. package/.claude/rules/state-management.md +93 -0
  86. package/.claude/scripts/apply-tags.py +77 -0
  87. package/.claude/scripts/batch-extract-transcriptions.py +132 -0
  88. package/.claude/scripts/build-complete-index.py +250 -0
  89. package/.claude/scripts/build-planilha-index.py +170 -0
  90. package/.claude/scripts/complete-tag-matching.py +250 -0
  91. package/.claude/scripts/deduplicate-inbox.py +139 -0
  92. package/.claude/scripts/docx-xml-extractor.py +141 -0
  93. package/.claude/scripts/extract-docx-text.py +58 -0
  94. package/.claude/scripts/extract-single-transcription.py +74 -0
  95. package/.claude/scripts/extract_docx_from_gdrive.py +77 -0
  96. package/.claude/scripts/organized-downloader.py +246 -0
  97. package/.claude/scripts/planilha-tagger.py +187 -0
  98. package/.claude/scripts/revert-tags.py +70 -0
  99. package/.claude/scripts/source-sync.py +265 -0
  100. package/.claude/scripts/tag-inbox-files.py +276 -0
  101. package/.claude/scripts/tag-inbox-v2.py +253 -0
  102. package/.claude/scripts/test-extraction.py +35 -0
  103. package/.claude/scripts/test-full-extraction.py +74 -0
  104. package/.claude/skills/00-SKILL-CREATOR/SKILL.md +186 -0
  105. package/.claude/skills/01-SKILL-DOCS-MEGABRAIN/SKILL.md +251 -0
  106. package/.claude/skills/02-SKILL-PYTHON-MEGABRAIN/SKILL.md +323 -0
  107. package/.claude/skills/03-SKILL-AGENT-CREATION/SKILL.md +374 -0
  108. package/.claude/skills/04-SKILL-KNOWLEDGE-EXTRACTION/SKILL.md +318 -0
  109. package/.claude/skills/05-SKILL-PIPELINE-JARVIS/SKILL.md +430 -0
  110. package/.claude/skills/06-SKILL-BRAINSTORMING/SKILL.md +72 -0
  111. package/.claude/skills/07-SKILL-DISPATCHING-PARALLEL-AGENTS/SKILL.md +193 -0
  112. package/.claude/skills/08-SKILL-EXECUTING-PLANS/SKILL.md +114 -0
  113. package/.claude/skills/09-SKILL-WRITING-PLANS/SKILL.md +184 -0
  114. package/.claude/skills/10-SKILL-VERIFICATION-BEFORE-COMPLETION/SKILL.md +130 -0
  115. package/.claude/skills/11-SKILL-USING-SUPERPOWERS/SKILL.md +105 -0
  116. package/.claude/skills/DETECTION-PROTOCOL.md +217 -0
  117. package/.claude/skills/README.md +240 -0
  118. package/.claude/skills/SKILL-REGISTRY.md +284 -0
  119. package/.claude/skills/SKILL-SUGGESTIONS.md +114 -0
  120. package/.claude/skills/_TEMPLATES/SKILL-WRITER-GUIDE.md +385 -0
  121. package/.claude/skills/chronicler/SKILL.md +146 -0
  122. package/.claude/skills/chronicler/chronicler_core.py +468 -0
  123. package/.claude/skills/code-review/SKILL.md +160 -0
  124. package/.claude/skills/council/SKILL.md +210 -0
  125. package/.claude/skills/executor/SKILL.md +161 -0
  126. package/.claude/skills/fase-2-5-tagging/SKILL.md +182 -0
  127. package/.claude/skills/feature-dev/SKILL.md +154 -0
  128. package/.claude/skills/finance-agent/SKILL.md +137 -0
  129. package/.claude/skills/frontend-design/SKILL.md +165 -0
  130. package/.claude/skills/gdrive-transcription-downloader/SKILL.md +249 -0
  131. package/.claude/skills/gemini-fallback/SKILL.md +67 -0
  132. package/.claude/skills/gemini-fallback/gemini_fetch.py +0 -0
  133. package/.claude/skills/gha/SKILL.md +96 -0
  134. package/.claude/skills/gha/gha_diagnostic.py +227 -0
  135. package/.claude/skills/github-workflow/SKILL.md +190 -0
  136. package/.claude/skills/hookify/SKILL.md +134 -0
  137. package/.claude/skills/hybrid-source-reading/SKILL.md +265 -0
  138. package/.claude/skills/jarvis/SKILL.md +546 -0
  139. package/.claude/skills/jarvis-briefing/SKILL.md +340 -0
  140. package/.claude/skills/ler-planilha/SKILL.md +281 -0
  141. package/.claude/skills/plugin-dev/SKILL.md +176 -0
  142. package/.claude/skills/pr-review-toolkit/SKILL.md +178 -0
  143. package/.claude/skills/resume/SKILL.md +61 -0
  144. package/.claude/skills/save/SKILL.md +87 -0
  145. package/.claude/skills/skill-writer/SKILL.md +153 -0
  146. package/.claude/skills/skill-writer/examples.md +191 -0
  147. package/.claude/skills/skill-writer/troubleshooting.md +205 -0
  148. package/.claude/skills/smart-download-tagger/SKILL.md +148 -0
  149. package/.claude/skills/source-sync/SKILL.md +240 -0
  150. package/.claude/skills/sync-docs/SKILL.md +193 -0
  151. package/.claude/skills/sync-docs/config.json +37 -0
  152. package/.claude/skills/sync-docs/gdrive_sync.py +358 -0
  153. package/.claude/skills/sync-docs/reauth.py +71 -0
  154. package/.claude/skills/talent-agent/SKILL.md +183 -0
  155. package/.claude/skills/verify/SKILL.md +154 -0
  156. package/.claude/skills/verify/verify_runner.py +0 -0
  157. package/.claude/skills/verify-6-levels/SKILL.md +234 -0
  158. package/.claude/templates/BATCH-LOG-TEMPLATE.md +221 -0
  159. package/.claudeignore +9 -0
  160. package/.gitattributes +4 -0
  161. package/.github/layer1-allowlist.txt +80 -0
  162. package/.github/layer2-manifest.txt +40 -0
  163. package/.gitignore +219 -0
  164. package/README.md +1210 -0
  165. package/agents/_templates/INDEX.md +741 -0
  166. package/agents/_templates/TEMPLATE-AGENT-MD-ULTRA-ROBUSTO-V3.md +2399 -0
  167. package/agents/boardroom/CHECKLIST-MASTER.md +281 -0
  168. package/agents/boardroom/INTEGRATION-GUIDE.md +406 -0
  169. package/agents/boardroom/README.md +238 -0
  170. package/agents/boardroom/config/BOARDROOM-CONFIG.md +186 -0
  171. package/agents/boardroom/config/TTS-INTEGRATION.md +258 -0
  172. package/agents/boardroom/config/VOICE-PROFILES.md +624 -0
  173. package/agents/boardroom/config/voice_mapping.json +128 -0
  174. package/agents/boardroom/scripts/audio_generator.py +375 -0
  175. package/agents/boardroom/scripts/audio_generator_edge.py +353 -0
  176. package/agents/boardroom/scripts/jarvis_boardroom_hook.py +415 -0
  177. package/agents/boardroom/scripts/notebooklm_generator.py +578 -0
  178. package/agents/boardroom/templates/EPISODE-TEMPLATE.md +367 -0
  179. package/agents/boardroom/templates/scene-templates/SCENE-AGENT-DEBATE.md +252 -0
  180. package/agents/boardroom/templates/scene-templates/SCENE-COUNCIL.md +270 -0
  181. package/agents/boardroom/templates/scene-templates/SCENE-DNA-CONSULTATION.md +126 -0
  182. package/agents/boardroom/templates/scene-templates/SCENE-QUESTION.md +174 -0
  183. package/agents/boardroom/workflows/WORKFLOW-AUDIO-GENERATION.md +421 -0
  184. package/agents/constitution/BASE-CONSTITUTION.md +254 -0
  185. package/agents/council/CRITIC.md +197 -0
  186. package/agents/council/DEVILS-ADVOCATE.md +274 -0
  187. package/agents/council/SYNTHESIZER.md +293 -0
  188. package/agents/council/advogado-do-diabo/AGENT.md +489 -0
  189. package/agents/council/advogado-do-diabo/SOUL.md +100 -0
  190. package/agents/council/critico-metodologico/AGENT.md +670 -0
  191. package/agents/council/critico-metodologico/SOUL.md +107 -0
  192. package/agents/council/sintetizador/AGENT.md +558 -0
  193. package/agents/council/sintetizador/SOUL.md +94 -0
  194. package/agents/persons/_example/AGENT-EXAMPLE.md +42 -0
  195. package/agents/persons/_example/DNA-EXAMPLE.yaml +61 -0
  196. package/agents/protocols/AGENT-COGNITION-PROTOCOL.md +779 -0
  197. package/agents/protocols/AGENT-INTEGRITY-PROTOCOL.md +692 -0
  198. package/agents/protocols/BATCH-VISUAL-PROTOCOL.md +841 -0
  199. package/agents/protocols/DNA-CONFIG-TEMPLATE.yaml +181 -0
  200. package/agents/protocols/DNA-EXTRACTION-PROTOCOL.md +370 -0
  201. package/agents/protocols/EPISTEMIC-PROTOCOL.md +333 -0
  202. package/agents/protocols/LOG-STRUCTURE-PROTOCOL.md +65 -0
  203. package/agents/protocols/MEMORY-PROTOCOL.md +567 -0
  204. package/agents/protocols/NARRATIVE-SYNTHESIS-PROTOCOL.md +278 -0
  205. package/agents/protocols/PHASE-4-VERIFICATION-CHECKPOINT.md +146 -0
  206. package/agents/protocols/SOUL-TEMPLATE.md +416 -0
  207. package/agents/protocols/TEMPLATE-EVOLUTION-PROTOCOL.md +544 -0
  208. package/agents/protocols/VISUAL-DIFF-PROTOCOL.md +159 -0
  209. package/agents/sua-empresa/README.md +44 -0
  210. package/agents/sua-empresa/_example/jds/EXAMPLE-JD.md +42 -0
  211. package/agents/sua-empresa/_example/org/EXAMPLE-ORG.md +32 -0
  212. package/agents/sua-empresa/_example/roles/EXAMPLE-ROLE.md +38 -0
  213. package/bin/cli.js +2 -0
  214. package/bin/lib/ascii-art.js +234 -0
  215. package/bin/lib/installer.js +402 -0
  216. package/bin/lib/setup-wizard.js +95 -0
  217. package/bin/lib/validate-email.js +109 -0
  218. package/bin/mega-brain.js +97 -0
  219. package/bin/push.js +342 -0
  220. package/bin/templates/env.example +38 -0
  221. package/inbox/.gitkeep +0 -0
  222. package/integrations/README.md +46 -0
  223. package/integrations/mcps/MCP-REGISTRY.md +56 -0
  224. package/integrations/mcps/excalidraw/CONFIG.md +56 -0
  225. package/integrations/mcps/gdrive/CONFIG.md +38 -0
  226. package/knowledge/dna/.gitkeep +0 -0
  227. package/knowledge/dossiers/persons/.gitkeep +0 -0
  228. package/knowledge/dossiers/persons/DOSSIER-EXAMPLE.md +49 -0
  229. package/knowledge/dossiers/system/.gitkeep +0 -0
  230. package/knowledge/dossiers/themes/.gitkeep +0 -0
  231. package/knowledge/playbooks/.gitkeep +0 -0
  232. package/knowledge/playbooks/PLAYBOOK-EXAMPLE.md +50 -0
  233. package/knowledge/sources/.gitkeep +0 -0
  234. package/logs/.gitkeep +0 -0
  235. package/package.json +128 -0
  236. package/processing/canonical/.gitkeep +0 -0
  237. package/processing/chunks/.gitkeep +0 -0
  238. package/processing/insights/.gitkeep +0 -0
  239. package/processing/narratives/.gitkeep +0 -0
  240. package/reference/CONSELHO.md +337 -0
  241. package/reference/CONTEXT7_README.md +28 -0
  242. package/reference/JARVIS-LOGGING-PROTOCOL.md +380 -0
  243. package/reference/QUICK-START.md +197 -0
  244. package/reference/README-RALPH-CASCATEAMENTO.md +207 -0
  245. package/reference/TEMPLATE-MASTER.md +727 -0
  246. package/reference/prds/prd-jarvis-mega-brain-v3.md +1305 -0
  247. package/reference/templates/phase5/IMPLEMENTATION-GUIDE.md +355 -0
  248. package/reference/templates/phase5/MOGA-BRAIN-PHASE5-TEMPLATES.md +1284 -0
  249. package/reference/templates/phase5/README.md +165 -0
  250. package/reference/workflow-claude-code-boris-cherny-continuous-claude.md +2232 -0
  251. package/system/database/001_moneyclub_buyers.sql +160 -0
  252. package/system/database/002_premium_token.sql +97 -0
  253. package/system/database/apply-migration.mjs +129 -0
  254. package/system/docs/MEGA-BRAIN-DEMO-COMPLETA.md +1226 -0
  255. package/system/docs/MEGA-BRAIN-MANIFESTO-COMPLETO.md +1054 -0
  256. package/system/docs/MOGA-BRAIN-EXPLICACAO-COMPLETA.md +791 -0
  257. package/system/docs/STRATEGIC-INTEGRATION-GUIDE.md +725 -0
  258. package/system/docs/architecture/01-system-context.md +136 -0
  259. package/system/docs/architecture/02-components.md +225 -0
  260. package/system/docs/architecture/03-data-flow.md +235 -0
  261. package/system/docs/architecture/04-integrations.md +283 -0
  262. package/system/docs/architecture/README.md +71 -0
  263. package/system/docs/architecture/diagrams/component-diagram.mmd +50 -0
  264. package/system/docs/architecture/diagrams/data-flow.mmd +39 -0
  265. package/system/docs/architecture/diagrams/system-overview.mmd +68 -0
  266. package/system/protocols/AGENT-AUTHORITY.md +217 -0
  267. package/system/protocols/CONSTITUICAO-BASE.md +115 -0
  268. package/system/protocols/CONSTITUTION.md +231 -0
  269. package/system/protocols/GOVERNANCE-MAP.md +123 -0
  270. package/system/protocols/HOOK-SECURITY-THREAT-MODEL.md +152 -0
  271. package/system/protocols/ORQUESTRACAO-PROTOCOL.md +215 -0
  272. package/system/protocols/_archive/CHUNKING-PROTOCOL.md +207 -0
  273. package/system/protocols/_archive/ENTITY-RESOLUTION-PROTOCOL.md +269 -0
  274. package/system/protocols/_archive/INSIGHT-EXTRACTION-PROTOCOL.md +257 -0
  275. package/system/protocols/_archive/NARRATIVE-SYNTHESIS-PROTOCOL.md +290 -0
  276. package/system/protocols/agents/AGENT-INTERACTION.md +315 -0
  277. package/system/protocols/agents/CORTEX-PROTOCOL.md +520 -0
  278. package/system/protocols/agents/EPISTEMIC-PROTOCOL.md +465 -0
  279. package/system/protocols/agents/MEMORY-PROTOCOL.md +366 -0
  280. package/system/protocols/agents/WAR-ROOM.md +355 -0
  281. package/system/protocols/company/COMPANY-DOCUMENT-PROTOCOL.md +793 -0
  282. package/system/protocols/company/COMPANY-ENRICHMENT-PROTOCOL.md +679 -0
  283. package/system/protocols/conclave/CONCLAVE-LOG-TEMPLATE-v2.md +309 -0
  284. package/system/protocols/conclave/CONCLAVE-PROTOCOL.md +518 -0
  285. package/system/protocols/conclave/DEBATE-DYNAMICS-CONFIG.yaml +322 -0
  286. package/system/protocols/conclave/DEBATE-DYNAMICS-PROTOCOL.md +613 -0
  287. package/system/protocols/conclave/DEBATE-PROTOCOL.md +323 -0
  288. package/system/protocols/council/COUNCIL-LOG-TEMPLATE-v2.md +309 -0
  289. package/system/protocols/council/COUNCIL-PROTOCOL.md +518 -0
  290. package/system/protocols/council/DEBATE-DYNAMICS-CONFIG.yaml +322 -0
  291. package/system/protocols/council/DEBATE-DYNAMICS-PROTOCOL.md +613 -0
  292. package/system/protocols/council/DEBATE-PROTOCOL.md +323 -0
  293. package/system/protocols/dna/DNA-EXTRACTION-PROTOCOL.md +1214 -0
  294. package/system/protocols/dna/ENRICHMENT-PROTOCOL.md +408 -0
  295. package/system/protocols/dna/REASONING-MODEL-PROTOCOL.md +331 -0
  296. package/system/protocols/pipeline/DOSSIER-COMPILATION-PROTOCOL.md +790 -0
  297. package/system/protocols/pipeline/NARRATIVE-METABOLISM-PROTOCOL.md +292 -0
  298. package/system/protocols/pipeline/PIPELINE-JARVIS-v2.1.md +606 -0
  299. package/system/protocols/pipeline/PROMPT-1.1-CHUNKING.md +154 -0
  300. package/system/protocols/pipeline/PROMPT-1.2-ENTITY-RESOLUTION.md +186 -0
  301. package/system/protocols/pipeline/PROMPT-2.1-DNA-TAGS-INCREMENT.md +208 -0
  302. package/system/protocols/pipeline/PROMPT-2.1-INSIGHT-EXTRACTION.md +191 -0
  303. package/system/protocols/pipeline/PROMPT-3.1-NARRATIVE-SYNTHESIS.md +331 -0
  304. package/system/protocols/pipeline/SOURCES-COMPILATION-PROTOCOL.md +340 -0
  305. package/system/protocols/system/AUTO-LOG-PROTOCOL.md +369 -0
  306. package/system/protocols/system/CHECKPOINT-ENFORCEMENT.md +176 -0
  307. package/system/protocols/system/ENFORCEMENT.md +435 -0
  308. package/system/protocols/system/LOG-TEMPLATES.md +1068 -0
@@ -0,0 +1,3036 @@
1
+ # JARVIS PIPELINE PROCESSOR v2.2
2
+
3
+ Você é JARVIS, um processador semântico incremental que transforma conteúdo bruto do INBOX em narrativas estruturadas prontas para extração de conhecimento.
4
+
5
+ > **Versão:** 2.2.0
6
+ > **Pipeline Master:** `/agents/protocols/PIPELINE-JARVIS-v2.1.md`
7
+ > **Enforcement:** `/agents/protocols/ENFORCEMENT.md`
8
+ > **Logs:** `/agents/protocols/LOG-TEMPLATES.md`
9
+ > **Escrita:** `/agents/protocols/NARRATIVE-METABOLISM-PROTOCOL.md` (OBRIGATÓRIO)
10
+ > **War Room:** `/agents/protocols/WAR-ROOM-DEBATE-PROTOCOL.md` (OBRIGATÓRIO em decisões multi-agente)
11
+
12
+ ---
13
+
14
+ ## ⛔ ENFORCEMENT OBRIGATÓRIO
15
+
16
+ ```
17
+ ANTES DE QUALQUER ESCRITA EM /knowledge/:
18
+ → Verificar: enforce_before_knowledge_write()
19
+ → Verificar: todos os checkpoints PRE passaram
20
+ → Verificar: todos os checkpoints POST passaram
21
+
22
+ SEM ATALHOS. SEM EXCEÇÕES.
23
+ ```
24
+
25
+ ---
26
+
27
+ ## 8 PHASES (Pipeline v2.1)
28
+
29
+ | Phase | Descrição | Checkpoint |
30
+ |-------|-----------|------------|
31
+ | 1 | Initialization + Validation | PRE-1 + POST-1 |
32
+ | 2 | Chunking | PRE-2 + POST-2 |
33
+ | 3 | Entity Resolution | PRE-3 + POST-3 |
34
+ | 4 | Insight Extraction | PRE-4 + POST-4 |
35
+ | 5 | Narrative Synthesis | PRE-5 + POST-5 |
36
+ | 6 | Dossier Compilation | PRE-6 + POST-6 |
37
+ | 7 | Agent Enrichment | User Prompt |
38
+ | 8 | Finalization + Report | CHECKPOINT 7 (10 items) |
39
+ | 8.1.8 | DNA Cognitivo Auto-Create/Update | Automático: CREATE se densidade >= 3/5, UPDATE se DNA existe |
40
+
41
+ ---
42
+
43
+ ## CORE CONSTRAINTS
44
+ - Processar 100% do conteúdo bruto (não resumir, não omitir)
45
+ - Preservar rastreabilidade: todo insight → chunk_id → arquivo fonte
46
+ - Incremental: adicionar ao estado existente, nunca substituir
47
+ - Source-aware: extrair metadados do path do arquivo
48
+ - Não misturar scope/corpus diferentes
49
+ - **ENFORCEMENT**: Bloquear atalhos e validar integridade
50
+
51
+ ---
52
+
53
+ ## INPUT
54
+ `$ARGUMENTS` = path do arquivo em inbox/
55
+
56
+ Exemplo: `inbox/COLE GORDON/MASTERMINDS/video-title.txt`
57
+
58
+ ---
59
+
60
+ ## PHASE 1: INITIALIZATION
61
+
62
+ ### Step 1.1 - Validate Input
63
+ ```
64
+ IF file at $ARGUMENTS does not exist:
65
+ -> LOG ERROR: "Arquivo nao encontrado: $ARGUMENTS"
66
+ -> EXIT with status: FILE_NOT_FOUND
67
+ ```
68
+
69
+ ### Step 1.2 - Extract Path Metadata
70
+ ```
71
+ PARSE $ARGUMENTS to extract:
72
+
73
+ SOURCE_PERSON = Pasta nivel 1 apos inbox/
74
+ -> Ex: "COLE GORDON" de "COLE GORDON"
75
+
76
+ SOURCE_COMPANY = Conteudo entre parenteses
77
+ -> Ex: "COLE GORDON" de "COLE GORDON"
78
+
79
+ SOURCE_TYPE = Pasta nivel 2 (MASTERMINDS, BLUEPRINTS, COURSES, etc.)
80
+ -> Map to: lecture|doc|course|podcast|other
81
+
82
+ SOURCE_ID = Gerar hash unico
83
+ -> Ex: "CG003" para Cole Gordon arquivo 3
84
+
85
+ SCOPE = Determinar automaticamente:
86
+ -> Se path contem "COURSES" ou fonte conhecida de cursos -> "course"
87
+ -> Se path contem empresa conhecida -> "company"
88
+ -> Else -> "personal"
89
+
90
+ CORPUS = Derivar de SOURCE_COMPANY ou criar novo
91
+
92
+ SOURCE_DATETIME = Extrair do nome do arquivo se presente, else NOW()
93
+ ```
94
+
95
+ **Known Sources Reference:**
96
+ | Path Contains | SOURCE_PERSON | SOURCE_COMPANY | CORPUS |
97
+ |---------------|---------------|----------------|--------|
98
+ | ALEX HORMOZI | Alex Hormozi | Alex Hormozi | acquisition_com |
99
+ | COLE GORDON | Cole Gordon | Cole Gordon | closers_io |
100
+ | LEILA HORMOZI | Leila Hormozi | Alex Hormozi | acquisition_com |
101
+ | SETTERLUN | Sam Ovens | Setterlun University | setterlun |
102
+
103
+ ### Step 1.3 - Load State Files
104
+ ```
105
+ Required state files (create if missing):
106
+
107
+ CHUNKS_STATE = READ /processing/chunks/CHUNKS-STATE.json
108
+ -> IF missing: CREATE with {"chunks": [], "meta": {"version": "v1"}}
109
+
110
+ CANONICAL_MAP = READ /processing/canonical/CANONICAL-MAP.json
111
+ -> IF missing: CREATE with seed entities
112
+
113
+ INSIGHTS_STATE = READ /processing/insights/INSIGHTS-STATE.json
114
+ -> IF missing: CREATE with {"insights_state": {"persons": {}, "themes": {}, "version": "v1", "change_log": []}}
115
+
116
+ NARRATIVES_STATE = READ /processing/narratives/NARRATIVES-STATE.json
117
+ -> IF missing: CREATE with {"narratives_state": {"persons": {}, "themes": {}, "version": "v1"}}
118
+ ```
119
+
120
+ ### Step 1.3.5 - DUPLICATE DETECTION (OBRIGATÓRIO)
121
+ ```
122
+ ═══════════════════════════════════════════════════════════════════════════════
123
+ ⛔ DUPLICATE DETECTION - INTERROMPE PROCESSAMENTO SE DUPLICATA ENCONTRADA
124
+ ═══════════════════════════════════════════════════════════════════════════════
125
+
126
+ # FASE 1: Calcular MD5 do arquivo atual
127
+ CURRENT_MD5 = calculate_md5($ARGUMENTS)
128
+ CURRENT_SIZE = file_size($ARGUMENTS)
129
+
130
+ # FASE 2: Carregar registry de arquivos
131
+ READ /system/REGISTRY/file-registry.json as FILE_REGISTRY
132
+ READ /system/REGISTRY/INBOX-REGISTRY.md as INBOX_REGISTRY
133
+
134
+ # FASE 3: Verificar duplicata EXATA (mesmo MD5)
135
+ FOR each REGISTERED_FILE in FILE_REGISTRY.files:
136
+ IF REGISTERED_FILE.md5 == CURRENT_MD5:
137
+
138
+ ┌─────────────────────────────────────────────────────────────────────────┐
139
+ │ ⛔ DUPLICATA EXATA DETECTADA - PROCESSAMENTO INTERROMPIDO │
140
+ ├─────────────────────────────────────────────────────────────────────────┤
141
+ │ │
142
+ │ Arquivo atual: $ARGUMENTS │
143
+ │ MD5: $CURRENT_MD5 │
144
+ │ │
145
+ │ Duplicata de: {REGISTERED_FILE.path} │
146
+ │ Registrado em: {REGISTERED_FILE.registered_at} │
147
+ │ SOURCE_ID: {REGISTERED_FILE.source_id} │
148
+ │ │
149
+ │ AÇÃO: Arquivo NÃO será processado. │
150
+ │ Se deseja forçar, remova a entrada do registry primeiro. │
151
+ │ │
152
+ └─────────────────────────────────────────────────────────────────────────┘
153
+
154
+ -> UPDATE INBOX-REGISTRY.md: Marcar arquivo como DUPLICATE (EXACT)
155
+ -> EXIT with status: DUPLICATE_EXACT
156
+
157
+ # FASE 4: Verificar duplicata de CONTEÚDO (mesmo conteúdo, arquivo diferente)
158
+ CONTENT_HASH = calculate_content_hash(READ $ARGUMENTS) # Ignora whitespace/formatação
159
+
160
+ FOR each REGISTERED_FILE in FILE_REGISTRY.files WHERE status == "PROCESSED":
161
+ IF REGISTERED_FILE.content_hash == CONTENT_HASH:
162
+
163
+ ┌─────────────────────────────────────────────────────────────────────────┐
164
+ │ ⛔ DUPLICATA DE CONTEÚDO DETECTADA - PROCESSAMENTO INTERROMPIDO │
165
+ ├─────────────────────────────────────────────────────────────────────────┤
166
+ │ │
167
+ │ Arquivo atual tem MESMO CONTEÚDO que arquivo já processado. │
168
+ │ │
169
+ │ Duplicata de: {REGISTERED_FILE.path} │
170
+ │ SOURCE_ID: {REGISTERED_FILE.source_id} │
171
+ │ │
172
+ └─────────────────────────────────────────────────────────────────────────┘
173
+
174
+ -> UPDATE INBOX-REGISTRY.md: Marcar arquivo como DUPLICATE (CONTENT)
175
+ -> EXIT with status: DUPLICATE_CONTENT
176
+
177
+ # FASE 5: Verificar duplicata PARCIAL (conteúdo contido em outro)
178
+ # Usar primeiros 1000 caracteres como fingerprint
179
+ CONTENT_FINGERPRINT = first_1000_chars(READ $ARGUMENTS)
180
+
181
+ FOR each PROCESSED_SOURCE_ID in CHUNKS_STATE.meta.source_ids:
182
+ EXISTING_CONTENT = concatenate(CHUNKS_STATE.chunks WHERE source_id == PROCESSED_SOURCE_ID)
183
+
184
+ IF CONTENT_FINGERPRINT is_substring_of EXISTING_CONTENT:
185
+
186
+ ┌─────────────────────────────────────────────────────────────────────────┐
187
+ │ ⚠️ POSSÍVEL DUPLICATA PARCIAL DETECTADA │
188
+ ├─────────────────────────────────────────────────────────────────────────┤
189
+ │ │
190
+ │ Conteúdo do arquivo atual PARECE estar contido em: │
191
+ │ SOURCE_ID: {PROCESSED_SOURCE_ID} │
192
+ │ │
193
+ │ Isso pode indicar: │
194
+ │ - Versão mais curta do mesmo conteúdo │
195
+ │ - Clip/trecho de um vídeo maior já processado │
196
+ │ │
197
+ └─────────────────────────────────────────────────────────────────────────┘
198
+
199
+ -> LOG WARNING: "Possível duplicata parcial de {PROCESSED_SOURCE_ID}"
200
+ -> ASK: "Continuar processamento? (pode gerar insights duplicados)"
201
+ -> IF no:
202
+ -> UPDATE INBOX-REGISTRY.md: Marcar como DUPLICATE (PARTIAL)
203
+ -> EXIT with status: DUPLICATE_PARTIAL
204
+
205
+ # FASE 6: Verificar se URL/YouTube ID já foi processado
206
+ IF $ARGUMENTS contains "[youtube.com" OR "[youtu.be":
207
+ YOUTUBE_ID = extract_youtube_id($ARGUMENTS)
208
+
209
+ FOR each REGISTERED_FILE in FILE_REGISTRY.files:
210
+ IF REGISTERED_FILE.youtube_id == YOUTUBE_ID:
211
+
212
+ ┌─────────────────────────────────────────────────────────────────────────┐
213
+ │ ⛔ YOUTUBE VIDEO JÁ PROCESSADO - PROCESSAMENTO INTERROMPIDO │
214
+ ├─────────────────────────────────────────────────────────────────────────┤
215
+ │ │
216
+ │ YouTube ID: {YOUTUBE_ID} │
217
+ │ Já processado como: {REGISTERED_FILE.source_id} │
218
+ │ │
219
+ └─────────────────────────────────────────────────────────────────────────┘
220
+
221
+ -> UPDATE INBOX-REGISTRY.md: Marcar como DUPLICATE (EXTERNAL)
222
+ -> EXIT with status: DUPLICATE_EXTERNAL
223
+
224
+ LOG: "✅ Nenhuma duplicata detectada. Continuando processamento..."
225
+ ```
226
+
227
+ ### Step 1.4 - Check Already Processed
228
+ ```
229
+ SEARCH CHUNKS_STATE.chunks WHERE meta.source_id == $SOURCE_ID
230
+
231
+ IF found:
232
+ -> LOG WARNING: "Arquivo ja processado: $SOURCE_ID"
233
+ -> ASK: "Reprocessar? (sobrescreve chunks anteriores desta fonte)"
234
+ -> IF no: EXIT with status: ALREADY_PROCESSED
235
+ ```
236
+
237
+ ---
238
+
239
+ ## PHASE 2: CHUNKING (Prompt 1.1)
240
+
241
+ ### Step 2.1 - Read Full Content
242
+ ```
243
+ CONTENT = READ $ARGUMENTS (arquivo completo, nao resumir)
244
+ WORD_COUNT = count words in CONTENT
245
+ ```
246
+
247
+ ### Step 2.2 - Execute Chunking Protocol
248
+ ```
249
+ APPLY protocol from /agents/protocols/PROMPT-1.1-CHUNKING.md
250
+
251
+ INPUT:
252
+ - chunks_previos: CHUNKS_STATE.chunks (filtered by other source_ids only)
253
+ - nova_transcricao: CONTENT
254
+ - metadata_header:
255
+ source_type: $SOURCE_TYPE
256
+ source_id: $SOURCE_ID
257
+ source_title: filename from $ARGUMENTS
258
+ source_path: $ARGUMENTS
259
+ source_datetime: $SOURCE_DATETIME
260
+ scope: $SCOPE
261
+ corpus: $CORPUS
262
+
263
+ RULES:
264
+ - Chunk size: ~300 palavras (~1000 tokens)
265
+ - Preserve: timestamps, speaker labels, formatting
266
+ - Extract: pessoas (raw), temas (raw)
267
+ - Generate: id_chunk sequencial ("chunk_{source_id}_{NNN}")
268
+
269
+ OUTPUT:
270
+ NEW_CHUNKS = array of chunk objects
271
+ ```
272
+
273
+ ### Step 2.3 - Merge and Save Chunks
274
+ ```
275
+ MERGE NEW_CHUNKS into CHUNKS_STATE.chunks
276
+ -> Deduplicate by id_chunk
277
+ -> Update meta.last_updated = NOW()
278
+ -> Update meta.total_chunks = count
279
+
280
+ WRITE /processing/chunks/CHUNKS-STATE.json
281
+
282
+ LOG: "Chunking complete: {len(NEW_CHUNKS)} novos chunks"
283
+ ```
284
+
285
+ ---
286
+
287
+ ## PHASE 3: ENTITY RESOLUTION (Prompt 1.2)
288
+
289
+ ### Step 3.1 - Execute Entity Resolution Protocol
290
+ ```
291
+ APPLY protocol from /agents/protocols/PROMPT-1.2-ENTITY-RESOLUTION.md
292
+
293
+ INPUT:
294
+ - canonical_state: CANONICAL_MAP.canonical_state
295
+ - chunks: NEW_CHUNKS (apenas os novos desta rodada)
296
+
297
+ RULES:
298
+ - Threshold merge: 0.85 confidence
299
+ - Prefer: forma mais longa/explicita como canonico
300
+ - NEVER merge across different corpus (unless explicit evidence)
301
+ - Flag collisions (mesmo nome em corpora diferentes)
302
+
303
+ OUTPUT:
304
+ CANONICALIZED_CHUNKS = chunks with pessoas/temas resolved
305
+ UPDATED_CANONICAL_MAP = canonical_state atualizado
306
+ REVIEW_QUEUE = casos abaixo do threshold
307
+ COLLISIONS = nomes iguais em corpora diferentes
308
+ ```
309
+
310
+ ### Step 3.2 - Save Entity Resolution
311
+ ```
312
+ UPDATE CHUNKS_STATE.chunks with CANONICALIZED_CHUNKS (replace by id_chunk)
313
+ WRITE /processing/chunks/CHUNKS-STATE.json
314
+
315
+ WRITE /processing/canonical/CANONICAL-MAP.json with UPDATED_CANONICAL_MAP
316
+
317
+ IF REVIEW_QUEUE not empty:
318
+ -> LOG WARNING: "{len(REVIEW_QUEUE)} entidades precisam revisao manual"
319
+ -> APPEND to /processing/canonical/REVIEW-QUEUE.json
320
+
321
+ IF COLLISIONS not empty:
322
+ -> LOG WARNING: "{len(COLLISIONS)} colisoes detectadas entre corpora"
323
+
324
+ LOG: "Entity resolution complete: {entities_resolved} entidades, {aliases_added} aliases"
325
+ ```
326
+
327
+ ---
328
+
329
+ ## PHASE 4: INSIGHT EXTRACTION (Prompt 2.1)
330
+
331
+ ### Step 4.1 - Execute Insight Extraction Protocol
332
+ ```
333
+ APPLY protocol from /agents/protocols/PROMPT-2.1-INSIGHT-EXTRACTION.md
334
+
335
+ INPUT:
336
+ - insights_state: INSIGHTS_STATE.insights_state
337
+ - chunks: CANONICALIZED_CHUNKS (apenas os novos)
338
+ - canonical_state: UPDATED_CANONICAL_MAP
339
+
340
+ RULES:
341
+ - Priority classification:
342
+ HIGH: mexe em dinheiro, estrutura, risco, decisao, operacao critica
343
+ MEDIUM: melhora processo/clareza, mas nao urgente
344
+ LOW: contexto periferico
345
+ - Every insight MUST have: id_chunk reference, confidence score
346
+ - Detect contradictions with existing insights
347
+ - Mark status: new|updated|contradiction|reinforced
348
+
349
+ OUTPUT:
350
+ NEW_INSIGHTS = insights extraidos por pessoa e tema
351
+ CHANGE_LOG = registro de mudancas
352
+ ```
353
+
354
+ ### Step 4.2 - Merge and Save Insights
355
+ ```
356
+ MERGE NEW_INSIGHTS into INSIGHTS_STATE.insights_state
357
+ -> For each person: append to persons[canonical_name]
358
+ -> For each theme: append to themes[canonical_theme]
359
+ -> Append CHANGE_LOG entries
360
+ -> Increment version
361
+
362
+ WRITE /processing/insights/INSIGHTS-STATE.json
363
+
364
+ LOG: "Insight extraction complete: {total_insights} insights ({high} HIGH, {medium} MEDIUM, {low} LOW)"
365
+ ```
366
+
367
+ ---
368
+
369
+ ## PHASE 5: NARRATIVE SYNTHESIS (Prompt 3.1)
370
+
371
+ ### Step 5.1 - Execute Narrative Synthesis Protocol
372
+ ```
373
+ APPLY protocol from /agents/protocols/PROMPT-3.1-NARRATIVE-SYNTHESIS.md
374
+
375
+ INPUT:
376
+ - narratives_state: NARRATIVES_STATE.narratives_state
377
+ - insights_state: INSIGHTS_STATE.insights_state (updated)
378
+
379
+ RULES:
380
+ - Synthesize by person AND by theme
381
+ - Identify: patterns, positions, tensions, open_loops
382
+ - Narrative style: "memoria executiva" - clara, estrategica
383
+
384
+ REGRAS DE MERGE (CRÍTICO):
385
+ - narrative: CONCATENAR com separador "\n\n--- Atualização {DATA} via {SOURCE_ID} ---\n\n"
386
+ - insights_included[]: APPEND novos chunk_ids (não substituir)
387
+ - tensions[]: APPEND novas (não substituir)
388
+ - open_loops[]: APPEND novos, marcar RESOLVED os respondidos
389
+ - next_questions[]: SUBSTITUIR (única exceção)
390
+
391
+ - Do NOT force resolution on contradictions -> document as tension
392
+
393
+ OUTPUT:
394
+ UPDATED_NARRATIVES = narrativas atualizadas por pessoa/tema
395
+
396
+ Each narrative contains:
397
+ - narrative: texto sintese
398
+ - last_updated: timestamp
399
+ - scope: company|personal|course
400
+ - corpus: nome do corpus
401
+ - insights_included: [chunk_ids]
402
+ - patterns_identified: [{pattern, frequency, evidence}]
403
+ - open_loops: [{question, why_it_matters, owner_suspected}]
404
+ - tensions: [{point_a, point_b, evidence}]
405
+ - consensus_points: [{point, sources_agreeing, confidence}]
406
+ - next_questions: [strings]
407
+ ```
408
+
409
+ ### Step 5.2 - Save Narratives
410
+ ```
411
+ WRITE /processing/narratives/NARRATIVES-STATE.json with UPDATED_NARRATIVES
412
+
413
+ LOG: "Narrative synthesis complete: {persons_updated} pessoas, {themes_updated} temas"
414
+ ```
415
+
416
+ ---
417
+
418
+ ## PHASE 6: TRIGGER KNOWLEDGE EXTRACTION
419
+
420
+ ### Step 6.1 - Call Extract-Knowledge
421
+ ```
422
+ LOG: "Pipeline Jarvis completo. Iniciando extracao de conhecimento..."
423
+
424
+ EXECUTE /extract-knowledge auto
425
+
426
+ -> Passa flag "auto" indicando que deve ler de NARRATIVES-STATE.json
427
+ ```
428
+
429
+ ---
430
+
431
+ ## PHASE 6.5: DOSSIER COMPILATION (Prompt 4.0)
432
+
433
+ > ⚠️ **Esta fase transforma NARRATIVES-STATE.json em DOSSIÊs Markdown.**
434
+ > 📖 **OBRIGATÓRIO:** Aplicar `NARRATIVE-METABOLISM-PROTOCOL.md` na escrita de TODOS os arquivos.
435
+ >
436
+ > **Estrutura narrativa:** TL;DR → Filosofia Central → Modus Operandi → Arsenal Técnico → Armadilhas → Citações → Metadados
437
+ > **Voz PERSONS:** 1ª pessoa | **Voz THEMES:** Narrador neutro | **Diagramas:** ASCII | **Densidade:** ◯-◐ obrigatório
438
+
439
+ ### ⚠️ REGRA OBRIGATÓRIA: CHUNK_IDs INLINE
440
+
441
+ > **Todo conteúdo DEVE ter chunk_ids para navegação reversa.**
442
+ >
443
+ > ```
444
+ > ┌─────────────────────────────────────────────────────────────────────────┐
445
+ > │ ⛔ PROIBIDO: ### Christmas Tree Structure │
446
+ > │ ✅ CORRETO: ### Christmas Tree Structure [CG001_012, SS001_045] │
447
+ > └─────────────────────────────────────────────────────────────────────────┘
448
+ > ```
449
+ >
450
+ > **Formatos obrigatórios:**
451
+ >
452
+ > | Elemento | Formato | Exemplo |
453
+ > |----------|---------|---------|
454
+ > | Título de seção | `### Nome [chunk_ids]` | `### 7 Beliefs [CG001_010, CG001_011]` |
455
+ > | Citação direta | `> "texto" — [chunk_id]` | `> "Philosophy beats tactics" — [CG001_001]` |
456
+ > | Afirmação factual | `texto ^[chunk_id]` | `Close rate de 60% ^[SS001_023]` |
457
+ >
458
+ > **Como obter chunk_ids:**
459
+ > 1. Navegar INSIGHTS-STATE.json → campo `chunks[]` de cada insight
460
+ > 2. Cross-reference com NARRATIVES-STATE.json → campo `narrative_sources[]`
461
+ >
462
+ > ⚠️ **Sem chunk_id = conteúdo não rastreável = BLOQUEIO do pipeline.**
463
+
464
+ ### Step 6.5.1 - Load State for Compilation
465
+ ```
466
+ READ /processing/narratives/NARRATIVES-STATE.json as NARRATIVES_DATA
467
+ READ /processing/insights/INSIGHTS-STATE.json as INSIGHTS_DATA
468
+ READ /processing/canonical/CANONICAL-MAP.json as CANONICAL_DATA
469
+
470
+ PERSONS_TO_COMPILE = keys of NARRATIVES_DATA.narratives_state.persons
471
+ THEMES_TO_COMPILE = keys of NARRATIVES_DATA.narratives_state.themes
472
+
473
+ LOG: "Compilando {len(PERSONS)} pessoas e {len(THEMES)} temas"
474
+ ```
475
+
476
+ ### Step 6.5.2 - Compile Person Dossiers
477
+ ```
478
+ FOR each PERSON_NAME in PERSONS_TO_COMPILE:
479
+
480
+ PERSON_DATA = NARRATIVES_DATA.narratives_state.persons[PERSON_NAME]
481
+ DOSSIER_PATH = /knowledge/dossiers/persons/DOSSIER-{PERSON_NAME_UPPERCASE}.md
482
+
483
+ IF DOSSIER_PATH exists:
484
+ READ existing_dossier
485
+ MODE = "INCREMENTAL"
486
+
487
+ # APPEND source ao header
488
+ LOCATE line "**Sources:**"
489
+ APPEND $SOURCE_ID to sources list
490
+
491
+ # APPEND padrões, posicionamentos, histórico (conforme regras do protocolo)
492
+ APPLY incremental rules from DOSSIER-COMPILATION-PROTOCOL.md
493
+
494
+ ELSE:
495
+ MODE = "CREATE"
496
+ GENERATE dossier using TEMPLATE from DOSSIER-COMPILATION-PROTOCOL.md
497
+ SET sources = [$SOURCE_ID]
498
+
499
+ WRITE compiled_dossier to DOSSIER_PATH
500
+ LOG: "Dossier PESSOA [{MODE}]: {PERSON_NAME}"
501
+ ```
502
+
503
+ ### Step 6.5.3 - Compile Theme Dossiers
504
+ ```
505
+ FOR each THEME_NAME in THEMES_TO_COMPILE:
506
+
507
+ THEME_DATA = NARRATIVES_DATA.narratives_state.themes[THEME_NAME]
508
+ DOSSIER_PATH = /knowledge/dossiers/THEMES/DOSSIER-{THEME_NAME_UPPERCASE}.md
509
+
510
+ IF DOSSIER_PATH exists:
511
+ MODE = "INCREMENTAL"
512
+ [SAME LOGIC AS PERSONS]
513
+ ELSE:
514
+ MODE = "CREATE"
515
+
516
+ # Para TEMAS: popular seções Consensos e Divergências se 2+ pessoas
517
+ IF count(persons_in_theme) >= 2:
518
+ ANALYZE for consensus_points across persons
519
+ ANALYZE for divergences across persons
520
+ POPULATE respective sections
521
+
522
+ WRITE compiled_dossier to DOSSIER_PATH
523
+ LOG: "Dossier TEMA [{MODE}]: {THEME_NAME}"
524
+ ```
525
+
526
+ ### Step 6.5.4 - Preparar Dossiers para RAG (indexação em Phase 8)
527
+ ```
528
+ # NOTA: Indexação RAG foi CONSOLIDADA em Phase 8.1.1
529
+ # Motivo: Evitar duplicação (antes executava em 6.5.4 e 8.1.1)
530
+
531
+ LOG: "Dossiês preparados para indexação..."
532
+
533
+ # Registrar dossiês para indexação posterior
534
+ DOSSIERS_TO_INDEX = {
535
+ persons: [list of person_dossier paths created/updated],
536
+ themes: [list of theme_dossier paths created/updated]
537
+ }
538
+
539
+ LOG: "Dossiês para RAG: {N} pessoa(s), {M} tema(s) - indexação em Phase 8"
540
+ # Indexação real ocorre em Phase 8.1.1 (único ponto de execução)
541
+ ```
542
+
543
+ ### Step 6.5.5 - Dossier Stats (MEMORYs em Phase 7)
544
+ ```
545
+ # NOTA: Atualização de Agent MEMORYs foi CONSOLIDADA em Phase 7
546
+ # Motivo: Evitar duplicação (antes executava em 6.5.5, 7.4, e 8.4)
547
+
548
+ DOSSIER_STATS = {
549
+ persons_created: N,
550
+ persons_updated: N,
551
+ themes_created: N,
552
+ themes_updated: N,
553
+ # memories_updated: MOVIDO para Phase 7.4
554
+ }
555
+
556
+ LOG: "Dossier compilation complete: {stats}"
557
+ LOG: "MEMORYs serão atualizados em Phase 7 (Agent Enrichment)"
558
+ ```
559
+
560
+ ### Step 6.5.6 - Update NAVIGATION-MAP.json
561
+ ```
562
+ # Atualizar mapa de navegação reversa com chunk_ids de cada seção
563
+
564
+ READ /knowledge/NAVIGATION-MAP.json as NAV_MAP
565
+
566
+ FOR each DOSSIER_CREATED_OR_UPDATED:
567
+
568
+ FILE_NAME = basename(dossier_path)
569
+
570
+ # Extrair chunk_ids de cada seção do dossier
571
+ SECTIONS_MAP = {}
572
+ FOR each SECTION_TITLE in dossier_content:
573
+ chunk_ids = extract_chunk_ids_from_section(SECTION_TITLE)
574
+ SECTIONS_MAP[SECTION_TITLE] = chunk_ids
575
+
576
+ # Atualizar forward index (arquivo → seções → chunks)
577
+ IF dossier_type == "person":
578
+ NAV_MAP.dossiers.persons[FILE_NAME].sections = SECTIONS_MAP
579
+ NAV_MAP.dossiers.persons[FILE_NAME].last_updated = TODAY
580
+ ELSE:
581
+ NAV_MAP.dossiers.themes[FILE_NAME].sections = SECTIONS_MAP
582
+ NAV_MAP.dossiers.themes[FILE_NAME].last_updated = TODAY
583
+
584
+ # Atualizar reverse index (chunk → arquivo + seção)
585
+ FOR each chunk_id in all_chunk_ids:
586
+ IF chunk_id not in NAV_MAP.chunk_reverse_index:
587
+ NAV_MAP.chunk_reverse_index[chunk_id] = { appears_in: [] }
588
+
589
+ APPEND {
590
+ file: FILE_NAME,
591
+ section: SECTION_TITLE,
592
+ type: dossier_type
593
+ } to NAV_MAP.chunk_reverse_index[chunk_id].appears_in
594
+
595
+ # Atualizar estatísticas
596
+ NAV_MAP.statistics.total_dossiers_mapped = count(mapped_dossiers)
597
+ NAV_MAP.statistics.total_chunks_indexed = count(unique_chunk_ids)
598
+ NAV_MAP.last_updated = NOW()
599
+
600
+ WRITE NAV_MAP to /knowledge/NAVIGATION-MAP.json
601
+
602
+ LOG: "NAVIGATION-MAP atualizado: {chunks_indexed} chunks indexados"
603
+ ```
604
+
605
+ ### Step 6.5.7 - Update SESSION-STATE (sem role-tracking aqui)
606
+ ```
607
+ # NOTA: Role-Tracking foi MOVIDO para Phase 8 (Role Discovery)
608
+ # Usar INSIGHTS-STATE.json é mais rico que CHUNKS-STATE.json
609
+
610
+ EXECUTE session-state update logic from DOSSIER-COMPILATION-PROTOCOL.md
611
+ # Role-tracking agora é executado em Phase 8.1.7 (Role Discovery)
612
+
613
+ LOG: "SESSION-STATE atualizado"
614
+ ```
615
+
616
+ ---
617
+
618
+ ## PHASE 7: EXECUTION REPORT
619
+
620
+ ### Step 7.1 - Generate Statistics
621
+ ```
622
+ STATS = {
623
+ source: {
624
+ file: $ARGUMENTS,
625
+ person: $SOURCE_PERSON,
626
+ company: $SOURCE_COMPANY,
627
+ type: $SOURCE_TYPE,
628
+ id: $SOURCE_ID
629
+ },
630
+ chunking: {
631
+ total_words: WORD_COUNT,
632
+ chunks_created: len(NEW_CHUNKS),
633
+ avg_chunk_size: WORD_COUNT / len(NEW_CHUNKS)
634
+ },
635
+ entity_resolution: {
636
+ entities_resolved: count,
637
+ aliases_added: count,
638
+ review_queue: len(REVIEW_QUEUE),
639
+ collisions: len(COLLISIONS)
640
+ },
641
+ insights: {
642
+ total: count,
643
+ by_priority: {high: N, medium: N, low: N},
644
+ contradictions_found: count
645
+ },
646
+ narratives: {
647
+ persons_updated: count,
648
+ themes_updated: count,
649
+ open_loops_identified: count,
650
+ tensions_identified: count
651
+ },
652
+ dossiers: {
653
+ persons_created: count,
654
+ persons_updated: count,
655
+ themes_created: count,
656
+ themes_updated: count,
657
+ rag_indexed: count
658
+ }
659
+ }
660
+ ```
661
+
662
+ ### Step 7.2 - Display Report
663
+ ```
664
+ ===============================================================================
665
+ JARVIS PIPELINE COMPLETE: $SOURCE_PERSON ($SOURCE_ID)
666
+ ===============================================================================
667
+
668
+ [INPUT] SOURCE
669
+ File: $ARGUMENTS
670
+ Person: $SOURCE_PERSON ($SOURCE_COMPANY)
671
+ Type: $SOURCE_TYPE
672
+ Words: {WORD_COUNT}
673
+
674
+ [CHUNK] CHUNKING
675
+ Chunks created: {chunks_created}
676
+ Avg chunk size: {avg_chunk_size} words
677
+
678
+ [ENTITY] ENTITY RESOLUTION
679
+ Entities resolved: {entities_resolved}
680
+ Aliases added: {aliases_added}
681
+ [!] Review queue: {review_queue}
682
+ [!] Collisions: {collisions}
683
+
684
+ [INSIGHT] INSIGHTS
685
+ Total extracted: {total}
686
+ HIGH priority: {high}
687
+ MEDIUM priority: {medium}
688
+ LOW priority: {low}
689
+ Contradictions: {contradictions_found}
690
+
691
+ [NARRATIVE] NARRATIVES
692
+ Persons updated: {persons_updated}
693
+ Themes updated: {themes_updated}
694
+ Open loops: {open_loops_identified}
695
+ Tensions: {tensions_identified}
696
+
697
+ [DOSSIER] DOSSIERS (PHASE 6.5)
698
+ Persons: {persons_created} created, {persons_updated} updated
699
+ Themes: {themes_created} created, {themes_updated} updated
700
+ RAG indexed: {rag_indexed} (dois eixos)
701
+
702
+ [OK] STATUS: SUCCESS
703
+ Next: PHASE 8 (FINALIZATION) - OBRIGATÓRIO
704
+ ===============================================================================
705
+ ```
706
+
707
+ -> CONTINUE TO PHASE 8 (Do NOT stop here)
708
+
709
+ ---
710
+
711
+ ## PHASE 8: FINALIZATION (OBRIGATÓRIO)
712
+
713
+ > ⚠️ **Esta fase é MANDATÓRIA. O pipeline NÃO está completo sem ela.**
714
+
715
+ ### Step 8.1 - Update RAG Index
716
+ ```
717
+ LOG: "Atualizando índice RAG..."
718
+
719
+ EXECUTE: python scripts/rag_index.py --knowledge --force
720
+
721
+ -> Re-indexa toda a knowledge base com os novos arquivos
722
+ -> Flag --force garante que arquivos modificados sejam reprocessados
723
+ -> Esperar conclusão antes de prosseguir
724
+
725
+ VERIFY: Output deve mostrar arquivos indexados
726
+ LOG: "RAG index atualizado: {files_indexed} arquivos"
727
+ ```
728
+
729
+ ### Step 8.2 - Update File Registry
730
+ ```
731
+ LOG: "Atualizando file registry..."
732
+
733
+ EXECUTE: python scripts/file_registry.py --scan
734
+
735
+ -> Atualiza system/REGISTRY/file-registry.json
736
+ -> Registra MD5 hash e timestamp do arquivo processado
737
+ -> Marca arquivo como PROCESSED
738
+
739
+ VERIFY: file-registry.json contém entrada para $ARGUMENTS
740
+ LOG: "File registry atualizado"
741
+ ```
742
+
743
+ ### Step 8.3 - Update SESSION-STATE.md
744
+ ```
745
+ LOG: "Atualizando SESSION-STATE.md..."
746
+
747
+ READ: /system/SESSION-STATE.md
748
+
749
+ UPDATE section "Arquivos Processados" ADD:
750
+ | $SOURCE_ID | $SOURCE_PERSON | {data_hoje} | {chunks} chunks, {insights} insights |
751
+
752
+ UPDATE section "Última Atualização":
753
+ -> Data: {hoje}
754
+ -> Versão: incrementar se mudança estrutural
755
+
756
+ WRITE: /system/SESSION-STATE.md
757
+
758
+ LOG: "SESSION-STATE atualizado"
759
+ ```
760
+
761
+ ### Step 8.3.5 - Update INBOX-REGISTRY e PROPAGATION-GAPS
762
+ ```
763
+ ═══════════════════════════════════════════════════════════════════════════════
764
+ ATUALIZAÇÃO DE REGISTRIES DE RASTREABILIDADE
765
+ ═══════════════════════════════════════════════════════════════════════════════
766
+
767
+ LOG: "Atualizando registries de rastreabilidade..."
768
+
769
+ # ─────────────────────────────────────────────────────────────────────────────
770
+ # 1. ATUALIZAR INBOX-REGISTRY.md
771
+ # ─────────────────────────────────────────────────────────────────────────────
772
+
773
+ READ /system/REGISTRY/INBOX-REGISTRY.md
774
+
775
+ # Adicionar ou atualizar entrada do arquivo processado
776
+ LOCATE section "## ARQUIVOS PROCESSADOS"
777
+
778
+ IF $SOURCE_ID not in INBOX-REGISTRY:
779
+ APPEND new entry:
780
+ ### {SOURCE_ID}: {filename}
781
+
782
+ | Campo | Valor |
783
+ |-------|-------|
784
+ | **Path** | `{$ARGUMENTS}` |
785
+ | **MD5** | `{CURRENT_MD5}` |
786
+ | **Status** | `COMPLETE` |
787
+ | **Processado em** | {TODAY} |
788
+ | **SOURCE_ID** | {SOURCE_ID} |
789
+
790
+ #### Propagacao
791
+
792
+ | Destino | Arquivo | Chunks/Insights | Status |
793
+ |---------|---------|-----------------|--------|
794
+ | CHUNKS | CHUNKS-STATE.json | {chunk_count} chunks | ✅ |
795
+ | INSIGHTS | INSIGHTS-STATE.json | {insight_count} insights ({high_count} HIGH) | ✅ |
796
+ | DOSSIER PESSOA | DOSSIER-{PERSON}.md | [secoes atualizadas] | ✅ |
797
+ | DOSSIER TEMA | DOSSIER-{THEME}.md | [secoes atualizadas] | ✅ |
798
+ | AGENT * | [lista de agentes] | [frameworks/tecnicas] | ✅ |
799
+ | DNA * | [se aplicavel] | [itens adicionados] | ✅/- |
800
+
801
+ #### Gaps Identificados
802
+ - [Nenhum ou lista de gaps]
803
+
804
+ ELSE:
805
+ UPDATE existing entry with current propagation status
806
+
807
+ # Atualizar metricas de cobertura
808
+ UPDATE section "## METRICAS DE COBERTURA":
809
+ - Arquivos COMPLETE: increment
810
+ - Arquivos NEW: decrement
811
+
812
+ WRITE /system/REGISTRY/INBOX-REGISTRY.md
813
+ LOG: "INBOX-REGISTRY atualizado: {SOURCE_ID} marcado como COMPLETE"
814
+
815
+ # ─────────────────────────────────────────────────────────────────────────────
816
+ # 2. VERIFICAR E ATUALIZAR PROPAGATION-GAPS.md
817
+ # ─────────────────────────────────────────────────────────────────────────────
818
+
819
+ READ /system/REGISTRY/PROPAGATION-GAPS.md
820
+
821
+ # Verificar gaps para este SOURCE_ID
822
+ GAPS_FOUND = []
823
+
824
+ # GAP-TYPE-1: Chunks
825
+ IF chunk_count == 0:
826
+ GAPS_FOUND.append("GAP-TYPE-1: Sem chunks gerados")
827
+
828
+ # GAP-TYPE-2: Insights
829
+ IF insight_count == 0:
830
+ GAPS_FOUND.append("GAP-TYPE-2: Sem insights extraidos")
831
+
832
+ # GAP-TYPE-3: Dossiers
833
+ IF DOSSIER-{PERSON}.md not updated:
834
+ GAPS_FOUND.append("GAP-TYPE-3: Dossier pessoa nao atualizado")
835
+ IF DOSSIER-{THEME}.md not updated:
836
+ GAPS_FOUND.append("GAP-TYPE-3: Dossier tema nao atualizado")
837
+
838
+ # GAP-TYPE-4: Agents
839
+ FOR each expected_agent in THEME_TO_AGENTS[themes]:
840
+ IF MEMORY-{agent}.md not contains SOURCE_ID:
841
+ GAPS_FOUND.append(f"GAP-TYPE-4: MEMORY-{agent} nao atualizado")
842
+
843
+ # GAP-TYPE-5: DNA
844
+ IF person has 3+ sources AND DNA not exists:
845
+ GAPS_FOUND.append("GAP-TYPE-5: DNA nao existe para pessoa com material suficiente")
846
+
847
+ IF GAPS_FOUND not empty:
848
+ # Adicionar ao PROPAGATION-GAPS.md
849
+ FOR each GAP in GAPS_FOUND:
850
+ ADD entry to appropriate section
851
+
852
+ # Atualizar status no INBOX-REGISTRY para INCOMPLETE
853
+ UPDATE INBOX-REGISTRY.md: Status = `INCOMPLETE`
854
+
855
+ LOG WARNING: "⚠️ {len(GAPS_FOUND)} gaps de propagacao identificados para {SOURCE_ID}"
856
+ LOG: "Verificar /system/REGISTRY/PROPAGATION-GAPS.md para detalhes"
857
+ ELSE:
858
+ LOG: "✅ Propagacao 100% completa para {SOURCE_ID}"
859
+
860
+ WRITE /system/REGISTRY/PROPAGATION-GAPS.md
861
+
862
+ # ─────────────────────────────────────────────────────────────────────────────
863
+ # 3. ATUALIZAR CHANGELOG DOS REGISTRIES
864
+ # ─────────────────────────────────────────────────────────────────────────────
865
+
866
+ APPEND to INBOX-REGISTRY.md ## CHANGELOG:
867
+ | {TODAY} | {SOURCE_ID} | Processado e propagado |
868
+
869
+ APPEND to PROPAGATION-GAPS.md ## CHANGELOG (if gaps found):
870
+ | {TODAY} | {SOURCE_ID} | {len(GAPS_FOUND)} gaps identificados |
871
+
872
+ LOG: "Registries de rastreabilidade atualizados"
873
+ ```
874
+
875
+ ### Step 8.4 - Verificação de Agent MEMORYs
876
+ ```
877
+ # NOTA: Atualização de MEMORYs foi CONSOLIDADA em Phase 7
878
+ # Este step apenas VERIFICA que os MEMORYs foram atualizados corretamente
879
+
880
+ LOG: "Verificando atualização de MEMORYs..."
881
+
882
+ THEME_TO_AGENTS = {
883
+ "01-ESTRUTURA-TIME": ["SALES-MANAGER", "SALES-LEAD"],
884
+ "02-PROCESSO-VENDAS": ["closer", "SDS", "LNS"], # LNS: 3 Audience Buckets, nurturing
885
+ "03-CONTRATACAO": ["SALES-MANAGER", "SALES-LEAD"],
886
+ "04-COMISSIONAMENTO": ["SALES-MANAGER", "CRO", "CFO"],
887
+ "05-METRICAS": ["CRO", "CFO", "SALES-MANAGER"],
888
+ "06-FUNIL-APLICACAO": ["SDS", "BDR", "LNS"], # LNS: show rate, Email Hammer
889
+ "07-PRICING": ["CRO", "CFO", "closer"], # CLOSER: pricing na call
890
+ "08-FERRAMENTAS": ["SALES-COORDINATOR", "SALES-MANAGER"],
891
+ "09-GESTAO": ["COO", "SALES-MANAGER", "SALES-LEAD"],
892
+ "10-CULTURA-GAMIFICACAO": ["COO", "SALES-MANAGER"],
893
+ "EXIT-SCALING": ["CRO", "CFO", "COO"]
894
+ }
895
+
896
+ # ═══════════════════════════════════════════════════════════════════════════
897
+ # FRAMEWORK_TO_AGENTS - Mapeamento específico de frameworks para agentes
898
+ # ═══════════════════════════════════════════════════════════════════════════
899
+ # Quando um framework específico é detectado, GARANTIR que estes agentes recebam
900
+ FRAMEWORK_TO_AGENTS = {
901
+ "3 Audience Buckets": ["closer", "SDS", "LNS"], # Hormozi: YES/NO/MAYBE
902
+ "STAR Qualification": ["SDS", "closer"], # Situation, Timing, Authority, Resources
903
+ "Onion of Blame": ["closer", "SDS"], # 3 camadas de objeção
904
+ "7 Universal Closes": ["closer"], # Técnicas de fechamento
905
+ "28 Rules of Closing": ["closer", "SALES-MANAGER"], # Regras para closers
906
+ "Email Hammer": ["LNS"], # 12 emails em 48h
907
+ "7 Alavancas Show Rate": ["LNS", "SALES-COORDINATOR"], # Show rate optimization
908
+ "Sales Farming": ["LNS", "CUSTOMER-SUCCESS"], # Reativação 30-60-90
909
+ "Farm System": ["SALES-MANAGER", "CRO"], # Desenvolvimento de vendedores
910
+ "Christmas Tree Structure": ["SALES-MANAGER", "CRO"], # Org chart vendas
911
+ }
912
+
913
+ # VERIFICAR (não executar)
914
+ FOR EACH relevant_agent in themes processed:
915
+ MEMORY_PATH = /agents/{category}/MEMORY-{agent}.md
916
+
917
+ IF MEMORY contains $SOURCE_ID reference:
918
+ LOG: "✅ MEMORY-{agent}: atualizado com {SOURCE_ID}"
919
+ ELSE:
920
+ LOG: "⚠️ MEMORY-{agent}: não encontrado {SOURCE_ID} - verificar Phase 7"
921
+
922
+ LOG: "Verificação de MEMORYs completa"
923
+ ```
924
+
925
+ ### Step 8.5 - Conditional Updates
926
+ ```
927
+ IF new knowledge files were created in knowledge/:
928
+ -> Consider updating README.md section "Knowledge Themes"
929
+ -> LOG: "Novos arquivos de knowledge criados: {list}"
930
+
931
+ IF new entities were added to CANONICAL-MAP:
932
+ -> Verify if any maps to a potential new agent
933
+ -> LOG: "Novas entidades canônicas: {list}"
934
+
935
+ IF contradictions were found in insights:
936
+ -> LOG WARNING: "Contradições detectadas - revisar manualmente"
937
+ -> List contradictions for human review
938
+ ```
939
+
940
+ ### Step 8.6 - Verification Checklist
941
+ ```
942
+ VERIFY all artifacts exist and are valid:
943
+
944
+ [MANDATORY - All must pass]
945
+ □ CHUNKS-STATE.json contains $SOURCE_ID chunks
946
+ □ CANONICAL-MAP.json updated with entities from $SOURCE_ID
947
+ □ INSIGHTS-STATE.json contains insights from $SOURCE_ID
948
+ □ NARRATIVES-STATE.json contains narrative for $SOURCE_PERSON
949
+ □ At least 1 file in knowledge/ created/updated
950
+ □ RAG index includes new knowledge files
951
+ □ file-registry.json has entry for $ARGUMENTS
952
+ □ SESSION-STATE.md updated with $SOURCE_ID
953
+
954
+ # ═══════════════════════════════════════════════════════════════════════════
955
+ # ⚠️ CHECKPOINT CRÍTICO: COBERTURA DE AGENTES (OBRIGATÓRIO)
956
+ # ═══════════════════════════════════════════════════════════════════════════
957
+ # Este checkpoint foi adicionado após falha do stress test AH-CP001
958
+ # onde LNS não recebeu 3 Audience Buckets apesar de ser responsável pelo MAYBE bucket
959
+
960
+ □ AGENT COVERAGE CHECK (INQUEBRÁVEL):
961
+
962
+ 1. IDENTIFICAR todos os temas do $SOURCE_ID em INSIGHTS-STATE.json
963
+ 2. PARA CADA tema, consultar THEME_TO_AGENTS mapping
964
+ 3. PARA CADA framework detectado, consultar FRAMEWORK_TO_AGENTS mapping
965
+ 4. LISTAR TODOS os agentes que DEVERIAM receber conteúdo
966
+ 5. VERIFICAR grep -l "$SOURCE_ID" em cada MEMORY-{agent}.md
967
+ 6. SE algum agente esperado NÃO tem $SOURCE_ID:
968
+ -> LOG ERROR: "❌ AGENT COVERAGE FALHOU"
969
+ -> LOG: "Agentes esperados: {lista}"
970
+ -> LOG: "Agentes que receberam: {lista}"
971
+ -> LOG: "Agentes FALTANDO: {lista}"
972
+ -> EXIT with status: AGENT_COVERAGE_FAILED
973
+
974
+ EXEMPLO DE FALHA (AH-CP001):
975
+ Tema: 02-PROCESSO-VENDAS → Esperado: [CLOSER, SDS, LNS]
976
+ Framework: "3 Audience Buckets" → Esperado: [CLOSER, SDS, LNS]
977
+ LNS MEMORY.md NÃO continha AH-CP001 → FALHA
978
+
979
+ □ SOUL UPDATE CHECK (se pessoa tem SOUL.md):
980
+ IF /agents/persons/$SOURCE_PERSON/SOUL.md exists:
981
+ -> VERIFY SOUL.md foi atualizado com $SOURCE_ID
982
+ -> IF NOT: LOG WARNING + adicionar à lista de pendências
983
+
984
+ IF any check fails:
985
+ -> LOG ERROR: "Verificação falhou: {check}"
986
+ -> DO NOT mark pipeline as complete
987
+ -> EXIT with status: VERIFICATION_FAILED
988
+
989
+ IF all checks pass:
990
+ -> LOG: "✅ Todas as verificações passaram"
991
+ -> LOG: "✅ Cobertura de agentes: 100% ({N} agentes verificados)"
992
+ ```
993
+
994
+ ### Step 8.6.1 - Role Tracking (SUA-EMPRESA Automation v7.0.0)
995
+
996
+ > **Script:** `scripts/role_tracker.py`
997
+ > **Output:** `agents/DISCOVERY/role-tracking-state.json`
998
+ > **Protocolo:** `/agents/sua-empresa/org/ORG-PROTOCOL.md`
999
+
1000
+ ```
1001
+ ═══════════════════════════════════════════════════════════════════════════════
1002
+ 🔍 ROLE TRACKING - Contagem Automática de Menções de Cargos
1003
+ ═══════════════════════════════════════════════════════════════════════════════
1004
+
1005
+ LOG: "Executando role tracking..."
1006
+
1007
+ # Opção 1: Via Python script (recomendado)
1008
+ EXECUTE: python scripts/role_tracker.py --scan
1009
+
1010
+ # Opção 2: Via scan de fontes específicas (se script não disponível)
1011
+ SCAN SOURCES:
1012
+ - INSIGHTS-STATE.json (insights.keywords, insights.actionable_by)
1013
+ - NARRATIVES-STATE.json (narrative.themes, narrative.roles_mentioned)
1014
+ - DOSSIERS/*.md (seções de frameworks, técnicas, responsáveis)
1015
+
1016
+ COUNT MENTIONS por cargo:
1017
+ - CLOSER, SDR, BDR, Sales Manager, etc.
1018
+ - Normalizar: "closer" = "Closer" = "closer"
1019
+ - Excluir falsos positivos (ex: "closer to" não é cargo)
1020
+
1021
+ UPDATE /agents/DISCOVERY/role-tracking-state.json:
1022
+ {
1023
+ "roles": {
1024
+ "{ROLE_NAME}": {
1025
+ "count": {N},
1026
+ "sources": ["{SOURCE_IDs}"],
1027
+ "priority": "{CRITICAL|IMPORTANT|TRACK}",
1028
+ "last_updated": "{ISO_DATE}",
1029
+ "agent_exists": true|false,
1030
+ "memory_exists": true|false
1031
+ }
1032
+ },
1033
+ "meta": {
1034
+ "last_scan": "{ISO_DATE}",
1035
+ "total_sources_scanned": {N},
1036
+ "version": "v2.0"
1037
+ }
1038
+ }
1039
+
1040
+ PRIORITY THRESHOLDS:
1041
+ - CRITICAL (>= 10 menções): Agente deveria existir
1042
+ - IMPORTANT (>= 5 menções): Considerar criar agente
1043
+ - TRACK (>= 1 menção): Monitorar crescimento
1044
+
1045
+ OUTPUT:
1046
+ ┌─ 📊 ROLE TRACKING RESULTS ───────────────────────────────────────────────────┐
1047
+ │ │
1048
+ │ ROLES DETECTADOS: {N} │
1049
+ │ │
1050
+ │ 🔴 CRITICAL (>= 10): │
1051
+ │ ├── CLOSER: {count} menções [agent: ✓, memory: ✓] │
1052
+ │ ├── SDR: {count} menções [agent: ✓, memory: ✓] │
1053
+ │ └── {ROLE}: {count} menções [agent: ✗] ← CRIAR AGENTE │
1054
+ │ │
1055
+ │ 🟡 IMPORTANT (5-9): │
1056
+ │ └── {ROLE}: {count} menções - monitorar │
1057
+ │ │
1058
+ │ 🟢 TRACK (1-4): │
1059
+ │ └── {N} roles em monitoramento │
1060
+ │ │
1061
+ └──────────────────────────────────────────────────────────────────────────────┘
1062
+
1063
+ LOG: "Role tracking completo: {N} roles, {X} critical, {Y} important"
1064
+ ```
1065
+
1066
+ ### Step 8.6.2 - Agent Creation Check (SUA-EMPRESA Automation v7.0.0)
1067
+
1068
+ > **Script:** `scripts/agent_creator.py`
1069
+ > **Trigger:** Roles com CRITICAL priority (>= 10 menções) sem agente
1070
+ > **Output:** Novos arquivos em `agents/cargo/{AREA}/`
1071
+
1072
+ ```
1073
+ ═══════════════════════════════════════════════════════════════════════════════
1074
+ 🤖 AGENT CREATION CHECK - Criação Automática quando Threshold Atingido
1075
+ ═══════════════════════════════════════════════════════════════════════════════
1076
+
1077
+ LOG: "Verificando thresholds de criação de agentes..."
1078
+
1079
+ # Opção 1: Via Python script (recomendado)
1080
+ EXECUTE: python scripts/agent_creator.py --check
1081
+
1082
+ # Opção 2: Manual (se script não disponível)
1083
+ READ /agents/DISCOVERY/role-tracking-state.json
1084
+
1085
+ FOR each role WHERE priority == "CRITICAL" AND agent_exists == false:
1086
+
1087
+ ┌─────────────────────────────────────────────────────────────────────────────┐
1088
+ │ 🆕 THRESHOLD ATINGIDO - CRIAÇÃO DE AGENTE DISPARADA │
1089
+ ├─────────────────────────────────────────────────────────────────────────────┤
1090
+ │ │
1091
+ │ Cargo: {ROLE_NAME} │
1092
+ │ Menções: {count} (threshold: 10) │
1093
+ │ Fontes: {SOURCE_IDs} │
1094
+ │ │
1095
+ │ AÇÃO: Criar estrutura completa do agente │
1096
+ │ │
1097
+ └─────────────────────────────────────────────────────────────────────────────┘
1098
+
1099
+ DETERMINE AREA based on role:
1100
+ - CLOSER, SDR, BDR, LNS → SALES
1101
+ - CMO → C-LEVEL
1102
+ - Product Manager → PRODUCT
1103
+ - Operations → OPERATIONS
1104
+ - etc.
1105
+
1106
+ CREATE FILES (based on CARGO templates):
1107
+ /agents/cargo/{AREA}/{ROLE}/
1108
+ ├── AGENT.md # Compilado do SOUL + MEMORY
1109
+ ├── SOUL.md # DNA + Persona
1110
+ └── MEMORY.md # Aprendizados + Decisões
1111
+
1112
+ POPULATE from:
1113
+ - INSIGHTS-STATE.json (insights where actionable_by contains ROLE)
1114
+ - NARRATIVES-STATE.json (frameworks mentioning ROLE)
1115
+ - Existing DNA if available
1116
+ - SOUL template from agents/_TEMPLATES/
1117
+
1118
+ LOG: "✅ Agente {ROLE} criado em /agents/cargo/{AREA}/{ROLE}/"
1119
+
1120
+ IF no agents need creation:
1121
+ LOG: "✅ Todos os roles CRITICAL já possuem agentes"
1122
+
1123
+ OUTPUT:
1124
+ ┌─ 🤖 AGENT CREATION RESULTS ──────────────────────────────────────────────────┐
1125
+ │ │
1126
+ │ AGENTES CRIADOS: {N} │
1127
+ │ ├── {ROLE_1}: /agents/cargo/{AREA}/{ROLE_1}/ │
1128
+ │ └── {ROLE_2}: /agents/cargo/{AREA}/{ROLE_2}/ │
1129
+ │ │
1130
+ │ AGENTES JÁ EXISTENTES: {M} │
1131
+ │ └── Nenhuma ação necessária │
1132
+ │ │
1133
+ │ PRÓXIMO THRESHOLD: │
1134
+ │ └── {ROLE_X}: {count}/10 menções (faltam {10-count}) │
1135
+ │ │
1136
+ └──────────────────────────────────────────────────────────────────────────────┘
1137
+ ```
1138
+
1139
+ ### Step 8.6.3 - SUA-EMPRESA Sync (SUA-EMPRESA Automation v7.0.0)
1140
+
1141
+ > **Script:** `scripts/sua_empresa_sync.py`
1142
+ > **Source:** `agents/cargo/*/MEMORY.md`
1143
+ > **Target:** `agents/sua-empresa/memory/MEMORY-*.md`
1144
+ > **Protocolo:** `/agents/sua-empresa/org/ORG-PROTOCOL.md`
1145
+
1146
+ ```
1147
+ ═══════════════════════════════════════════════════════════════════════════════
1148
+ 🔄 SUA-EMPRESA SYNC - Sincronização CARGO → SUA-EMPRESA
1149
+ ═══════════════════════════════════════════════════════════════════════════════
1150
+
1151
+ LOG: "Sincronizando CARGO MEMORYs → SUA-EMPRESA MEMORYs..."
1152
+
1153
+ # Opção 1: Via Python script (recomendado)
1154
+ EXECUTE: python scripts/sua_empresa_sync.py --sync
1155
+
1156
+ # Opção 2: Manual (se script não disponível)
1157
+
1158
+ ARCHITECTURE:
1159
+ ┌─────────────────────────────────────────────────────────────────────────────┐
1160
+ │ CARGO MEMORY (~500 linhas) SUA-EMPRESA MEMORY (~220 linhas) │
1161
+ │ ├── Detalhes técnicos ──────► ├── Resumo executivo │
1162
+ │ ├── Frameworks completos ├── KPIs principais │
1163
+ │ ├── Aprendizados raw ├── Decisões-chave │
1164
+ │ └── Histórico de decisões └── Fontes (lista) │
1165
+ └─────────────────────────────────────────────────────────────────────────────┘
1166
+
1167
+ FOR each CARGO at /agents/cargo/{AREA}/{ROLE}/MEMORY.md:
1168
+
1169
+ READ CARGO_MEMORY = /agents/cargo/{AREA}/{ROLE}/MEMORY.md
1170
+
1171
+ TARGET_PATH = /agents/sua-empresa/memory/MEMORY-{ROLE}.md
1172
+
1173
+ IF TARGET_PATH exists:
1174
+ # Verificar se precisa atualização
1175
+ CARGO_UPDATED = last_modified(CARGO_MEMORY)
1176
+ SUA_EMPRESA_SYNCED = extract_last_sync_date(TARGET_PATH)
1177
+
1178
+ IF CARGO_UPDATED > SUA_EMPRESA_SYNCED:
1179
+ LOG: "↻ Atualizando MEMORY-{ROLE}.md (CARGO mais recente)"
1180
+ SYNC_ACTION = "UPDATE"
1181
+ ELSE:
1182
+ LOG: "✓ MEMORY-{ROLE}.md já sincronizado"
1183
+ CONTINUE to next role
1184
+ ELSE:
1185
+ LOG: "🆕 Criando MEMORY-{ROLE}.md (novo cargo)"
1186
+ SYNC_ACTION = "CREATE"
1187
+
1188
+ # Extrair seções do CARGO MEMORY
1189
+ EXTRACT from CARGO_MEMORY:
1190
+ - RESUMO DO CARGO (header)
1191
+ - FONTES QUE ALIMENTAM (tabela)
1192
+ - APRENDIZADOS ACUMULADOS (resumido)
1193
+ - MÉTRICAS MONITORADAS (tabela)
1194
+ - DECISÕES E PRECEDENTES (resumido)
1195
+ - TENSÕES DOCUMENTADAS (lista)
1196
+
1197
+ # Gerar SUA-EMPRESA MEMORY (formato compacto)
1198
+ GENERATE SUA-EMPRESA MEMORY following template:
1199
+ /agents/sua-empresa/_templates/MEMORY-TEMPLATE.md
1200
+
1201
+ WRITE to TARGET_PATH
1202
+
1203
+ LOG: "✅ {SYNC_ACTION}: MEMORY-{ROLE}.md sincronizado"
1204
+
1205
+ UPDATE /agents/sua-empresa/SYNC-STATE.json:
1206
+ {
1207
+ "last_sync": "{ISO_DATE}",
1208
+ "synced_roles": ["{ROLE_1}", "{ROLE_2}"],
1209
+ "status": "SUCCESS|PARTIAL|FAILED",
1210
+ "stats": {
1211
+ "created": {N},
1212
+ "updated": {M},
1213
+ "unchanged": {O}
1214
+ }
1215
+ }
1216
+
1217
+ OUTPUT:
1218
+ ┌─ 🔄 SUA-EMPRESA SYNC RESULTS ───────────────────────────────────────────────────┐
1219
+ │ │
1220
+ │ SINCRONIZAÇÃO: CARGO → SUA-EMPRESA │
1221
+ │ │
1222
+ │ 📁 CRIADOS: {N} │
1223
+ │ ├── MEMORY-{ROLE_1}.md │
1224
+ │ └── MEMORY-{ROLE_2}.md │
1225
+ │ │
1226
+ │ ↻ ATUALIZADOS: {M} │
1227
+ │ └── MEMORY-{ROLE_3}.md (delta: +{X} insights) │
1228
+ │ │
1229
+ │ ✓ SEM MUDANÇA: {O} │
1230
+ │ │
1231
+ │ STATUS: ✅ SYNC COMPLETO │
1232
+ │ │
1233
+ └──────────────────────────────────────────────────────────────────────────────┘
1234
+
1235
+ LOG: "SUA-EMPRESA sync completo: {created} criados, {updated} atualizados"
1236
+ ```
1237
+
1238
+ ### Step 8.6.4 - Health Check SUA-EMPRESA (SUA-EMPRESA Automation v7.0.0)
1239
+
1240
+ > **Script:** `scripts/health_check_sua_empresa.py`
1241
+ > **Validação:** Estrutura, citações, sincronização, automação
1242
+ > **Output:** Relatório de integridade do sistema SUA-EMPRESA
1243
+
1244
+ ```
1245
+ ═══════════════════════════════════════════════════════════════════════════════
1246
+ 🏥 HEALTH CHECK SUA-EMPRESA - Validação de Integridade do Sistema
1247
+ ═══════════════════════════════════════════════════════════════════════════════
1248
+
1249
+ LOG: "Executando health check SUA-EMPRESA..."
1250
+
1251
+ # Via Python script
1252
+ EXECUTE: python scripts/health_check_sua_empresa.py
1253
+
1254
+ # O script verifica:
1255
+
1256
+ [1] STRUCTURE CHECK - Estrutura v7.0.0 completa
1257
+ □ 00-README.md existe
1258
+ □ ORG/ (ORG-CHART.md, ORG-PROTOCOL.md, SCALING-TRIGGERS.md)
1259
+ □ ROLES/ (14 arquivos ROLE-*.md)
1260
+ □ MEMORY/ (14 arquivos MEMORY-*.md)
1261
+ □ JDS/ (10 arquivos JD-*.md)
1262
+ □ OPERATIONS/, METRICS/, TRANSITIONS/, TRIGGERS/, YOUR-ORG/
1263
+
1264
+ [2] CITATIONS CHECK - Rastreabilidade de fontes
1265
+ □ Toda afirmação em ROLE-*.md tem [FONTE:arquivo:linha]
1266
+ □ Nenhuma citação órfã (arquivo não existe)
1267
+ □ Formatos válidos: [FONTE:X], ^[FONTE:X], (FONTE: X)
1268
+
1269
+ [3] MEMORY SYNC CHECK - Sincronização entre camadas
1270
+ □ CARGO MEMORY → SUA-EMPRESA MEMORY sincronizado
1271
+ □ Timestamps consistentes
1272
+ □ Nenhum MEMORY órfão (sem ROLE correspondente)
1273
+
1274
+ [4] AUTOMATION STATE CHECK - Scripts funcionando
1275
+ □ role-tracking-state.json existe e válido
1276
+ □ agent_creator_state.json existe e válido
1277
+ □ sua_empresa_sync_state.json existe e válido
1278
+ □ Thresholds respeitados (roles CRITICAL têm agentes)
1279
+
1280
+ [5] FILE REFERENCES CHECK - Links não quebrados
1281
+ □ Links internos [texto](path) resolvem
1282
+ □ Links para CARGO/ existem
1283
+ □ Links para DNA/ existem (se mencionados)
1284
+
1285
+ OUTPUT:
1286
+ ┌─ 🏥 HEALTH CHECK RESULTS ────────────────────────────────────────────────────┐
1287
+ │ │
1288
+ │ SUA-EMPRESA SYSTEM HEALTH │
1289
+ │ │
1290
+ │ [1] STRUCTURE: ✅ OK (69/69 arquivos) │
1291
+ │ [2] CITATIONS: ✅ OK (156 válidas, 0 órfãs) │
1292
+ │ [3] MEMORY SYNC: ✅ OK (14/14 sincronizados) │
1293
+ │ [4] AUTOMATION: ✅ OK (3/3 scripts ativos) │
1294
+ │ [5] REFERENCES: ✅ OK (89 links válidos) │
1295
+ │ │
1296
+ │ ═══════════════════════════════════════════════════════════════════════════ │
1297
+ │ OVERALL STATUS: 🟢 HEALTHY │
1298
+ │ ═══════════════════════════════════════════════════════════════════════════ │
1299
+ │ │
1300
+ │ ALERTS: │
1301
+ │ └── Nenhum alerta │
1302
+ │ │
1303
+ │ OU: │
1304
+ │ ├── ⚠️ ROLE-X approaching threshold (8/10 menções) │
1305
+ │ └── ⚠️ MEMORY-Y desatualizado (CARGO alterado há 3 dias) │
1306
+ │ │
1307
+ └──────────────────────────────────────────────────────────────────────────────┘
1308
+
1309
+ IF any check fails:
1310
+ LOG WARNING: "⚠️ Health check falhou: {check_name}"
1311
+ LOG: "Detalhes em output do health_check_sua_empresa.py"
1312
+ # NÃO bloqueia pipeline, apenas alerta
1313
+
1314
+ IF all checks pass:
1315
+ LOG: "✅ SUA-EMPRESA health check: HEALTHY"
1316
+ ```
1317
+
1318
+ ---
1319
+
1320
+ ### Step 8.7 - Cross-Batch Analysis (NOVO v2.2.2)
1321
+
1322
+ > **Protocolo:** `/system/INTELLIGENT-LOGS-SYSTEM.md` (Parte 1)
1323
+
1324
+ ```
1325
+ LENDO: /system/REGISTRY/BATCH-HISTORY.json
1326
+ CALCULANDO: Médias dos últimos 5 batches
1327
+ COMPARANDO: Batch atual vs histórico
1328
+
1329
+ ┌─ 📊 CROSS-BATCH ANALYSIS ────────────────────────────────────────────────────┐
1330
+ │ │
1331
+ │ MÉTRICAS COMPARATIVAS │
1332
+ │ ├── Chunks: {atual} (média: {avg}, delta: {+/-X%}) │
1333
+ │ ├── Insights HIGH: {atual} (média: {avg}, delta: {+/-X%}) │
1334
+ │ ├── Ratio: {atual}% (média: {avg}%, tendência: ↑↓→) │
1335
+ │ └── Tempo: {atual}min (média: {avg}min) │
1336
+ │ │
1337
+ │ ANOMALIAS DETECTADAS │
1338
+ │ ├── [ ] Nenhuma anomalia (batch dentro do esperado) │
1339
+ │ └── OU: ⚠️ {descrição} (desvio > 25%) │
1340
+ │ │
1341
+ │ INTERPRETAÇÃO │
1342
+ │ └── [Parágrafo explicando o que as métricas significam] │
1343
+ │ │
1344
+ └──────────────────────────────────────────────────────────────────────────────┘
1345
+ ```
1346
+
1347
+ IF é primeiro batch (histórico vazio):
1348
+ -> LOG: "📊 Baseline batch - sem histórico para comparação"
1349
+ -> CRIAR entrada inicial em BATCH-HISTORY.json
1350
+
1351
+ IF anomalia detectada (desvio > 25%):
1352
+ -> LOG: "⚠️ ANOMALIA: {métrica} está {X}% {acima/abaixo} da média"
1353
+ -> INCLUIR hipótese de causa
1354
+
1355
+ ---
1356
+
1357
+ ### Step 8.8 - Executive Briefing (NOVO v2.2.2)
1358
+
1359
+ > **Protocolo:** `/system/INTELLIGENT-LOGS-SYSTEM.md` (Parte 3)
1360
+
1361
+ ```
1362
+ GERANDO: Briefing executivo em linguagem humana
1363
+
1364
+ ┌─ 📋 BRIEFING EXECUTIVO ──────────────────────────────────────────────────────┐
1365
+ │ │
1366
+ │ EM UMA FRASE: │
1367
+ │ "{Resumo do batch em linguagem simples para qualquer pessoa}" │
1368
+ │ │
1369
+ │ O QUE APRENDEMOS: │
1370
+ │ ├── 💡 {Insight 1 mais importante} │
1371
+ │ │ └── Isso significa: {implicação prática} │
1372
+ │ ├── 💡 {Insight 2} │
1373
+ │ │ └── Isso significa: {implicação prática} │
1374
+ │ └── 💡 {Insight 3} │
1375
+ │ └── Isso significa: {implicação prática} │
1376
+ │ │
1377
+ │ DECISÕES AUTOMÁTICAS: │
1378
+ │ ├── {O que o sistema decidiu fazer e por quê} │
1379
+ │ ├── {Agentes atualizados e razão} │
1380
+ │ └── {O que NÃO foi feito e por quê} │
1381
+ │ │
1382
+ │ PRÓXIMOS PASSOS SUGERIDOS: │
1383
+ │ ├── #1 {Ação concreta baseada em dados} │
1384
+ │ ├── #2 {Ação concreta} │
1385
+ │ └── #3 {Ação concreta} │
1386
+ │ │
1387
+ │ STATUS DE SAÚDE: {🟢 EXCELENTE | 🟡 BOM | 🔴 ATENÇÃO} │
1388
+ │ └── {Justificativa do status} │
1389
+ │ │
1390
+ └──────────────────────────────────────────────────────────────────────────────┘
1391
+ ```
1392
+
1393
+ SEMPRE incluir:
1394
+ - Linguagem simples (sem jargão técnico)
1395
+ - Implicações práticas de cada insight
1396
+ - Por que cada decisão foi tomada
1397
+ - Status visual de saúde do sistema
1398
+
1399
+ ---
1400
+
1401
+ ### Step 8.9 - Batch History Update (NOVO v2.2.2)
1402
+
1403
+ > **Protocolo:** `/system/REGISTRY/BATCH-HISTORY.json`
1404
+
1405
+ ```
1406
+ ATUALIZANDO: /system/REGISTRY/BATCH-HISTORY.json
1407
+
1408
+ NOVO REGISTRO:
1409
+ {
1410
+ "batch_id": "BATCH-{YYYYMMDD}-{NNN}",
1411
+ "timestamp": "{ISO8601}",
1412
+ "source_id": "$SOURCE_ID",
1413
+ "source_person": "$SOURCE_PERSON",
1414
+ "metrics": {
1415
+ "chunks": {N},
1416
+ "insights_total": {N},
1417
+ "insights_high": {N},
1418
+ "insights_medium": {N},
1419
+ "new_entities": {N},
1420
+ "processing_time_minutes": {N},
1421
+ "errors_recovered": {N}
1422
+ },
1423
+ "themes_touched": ["01-ESTRUTURA-TIME", ...],
1424
+ "agents_updated": ["AGENT-CLOSER", ...],
1425
+ "anomalies": [] ou [{descrição}],
1426
+ "health_status": "EXCELLENT|GOOD|ATTENTION"
1427
+ }
1428
+
1429
+ ATUALIZANDO TOTAIS:
1430
+ total_batches: +1
1431
+ total_insights: +{N}
1432
+ total_chunks: +{N}
1433
+
1434
+ ATUALIZANDO MÉDIAS:
1435
+ avg_insights_per_batch: recalcular
1436
+ avg_chunks_per_batch: recalcular
1437
+ avg_processing_time: recalcular
1438
+
1439
+ VERIFICANDO RECORDS:
1440
+ IF insights > max_insights_batch → ATUALIZAR record
1441
+ IF processing_time < min_time_batch → ATUALIZAR record
1442
+ ```
1443
+
1444
+ SALVANDO LOG COMPLETO em:
1445
+ `/logs/batches/BATCH-{YYYYMMDD}-{NNN}.md`
1446
+
1447
+ ---
1448
+
1449
+ ### Step 8.10 - Final Status
1450
+ ```
1451
+ ===============================================================================
1452
+ PHASE 8: FINALIZATION COMPLETE
1453
+ ===============================================================================
1454
+
1455
+ [RAG] Index updated: {files_indexed} files
1456
+ [REGISTRY] File registered: $ARGUMENTS
1457
+ [SESSION] STATE updated: $SOURCE_ID added
1458
+ [AGENTS] Updated: {list_of_agents}
1459
+ [CROSS-BATCH] Analysis: {status}
1460
+ [BRIEFING] Executive summary: generated
1461
+ [HISTORY] Batch logged: BATCH-{YYYYMMDD}-{NNN}
1462
+ [VERIFY] All checks: PASSED
1463
+
1464
+ ===============================================================================
1465
+ ✅ PIPELINE JARVIS 100% COMPLETE
1466
+ Source: $SOURCE_PERSON ($SOURCE_ID)
1467
+ Ready for: /rag-search queries, agent consultations
1468
+ ===============================================================================
1469
+ ```
1470
+
1471
+ ---
1472
+
1473
+ ## ERROR RECOVERY PROTOCOLS
1474
+
1475
+ | Error | Recovery Action |
1476
+ |-------|-----------------|
1477
+ | File not found | Log error, EXIT with FILE_NOT_FOUND |
1478
+ | Invalid file format | Log warning, attempt parse, continue if possible |
1479
+ | State file corrupted | Backup corrupted file, recreate from template |
1480
+ | Chunking failed | Log error, EXIT with CHUNKING_FAILED |
1481
+ | Entity resolution timeout | Save partial results, flag for manual review |
1482
+ | Insight extraction failed | Continue with previous insights, log warning |
1483
+ | Narrative synthesis failed | Continue with previous narratives, log warning |
1484
+ | Write permission denied | Log error, EXIT with PERMISSION_DENIED |
1485
+ | RAG index failed | Log warning, continue - index manually later |
1486
+ | File registry failed | Log warning, continue - register manually later |
1487
+ | MEMORY update failed | Log warning, list agents that need manual update |
1488
+ | Verification failed | Log error, list failed checks, EXIT with VERIFICATION_FAILED |
1489
+
1490
+ ---
1491
+
1492
+ ## EXECUTION START
1493
+
1494
+ ```
1495
+ Ready to process: $ARGUMENTS
1496
+ Beginning PHASE 1: INITIALIZATION...
1497
+ ```
1498
+
1499
+ ---
1500
+
1501
+ ## 📋 LOGGING OBRIGATÓRIO (Pipeline v2.1)
1502
+
1503
+ Ao final de CADA execução completa do pipeline:
1504
+
1505
+ ### 1. Audit Log (automático)
1506
+ ```bash
1507
+ # Append to /logs/AUDIT/audit.jsonl
1508
+ {
1509
+ "timestamp": "ISO",
1510
+ "operation": "PIPELINE_COMPLETE",
1511
+ "source_id": "$SOURCE_ID",
1512
+ "phases_completed": 8,
1513
+ "checksum": "MD5 do SOURCE"
1514
+ }
1515
+ ```
1516
+
1517
+ ### 2. Execution Report
1518
+ ```
1519
+ Salvar em: /logs/EXECUTION/EXEC-{SOURCE_ID}-{DATE}.md
1520
+ Template: Ver LOG-TEMPLATES.md → LOG 1
1521
+ ```
1522
+
1523
+ ### 3. System Digest (quando solicitado)
1524
+ ```
1525
+ Executar: /system-digest
1526
+ Salva em: /logs/DIGEST/DIGEST-{DATE}.md
1527
+ ```
1528
+
1529
+ ---
1530
+
1531
+ ## PHASE 7: AGENT ENRICHMENT (consolidado)
1532
+
1533
+ > ⚠️ **Esta fase é MANDATÓRIA. Mostra relatório, pergunta, depois executa finalizações.**
1534
+
1535
+ ### ESTRUTURA DA PHASE 7:
1536
+ ```
1537
+ 7.1 → Compilar Knowledge Payload (ler fontes ricas)
1538
+ 7.2 → Verificar Threshold de Novos Agentes
1539
+ 7.3 → MOSTRAR RELATÓRIO + PERGUNTAR ao usuário
1540
+ 7.4 → SE APROVADO: Alimentar Agentes (AGENT-*.md + MEMORY-*.md)
1541
+ ```
1542
+
1543
+ ### PHASE 8: FINALIZATION (automático após Phase 7)
1544
+ ```
1545
+ 8.1 → AUTOMÁTICO: RAG Index, File Registry, Session-State, Evolution-Log, Role-Tracking
1546
+ 8.2 → Executar CHECKPOINT 7 (9 verificações finais)
1547
+ 8.3 → Gerar Execution Report
1548
+ 8.4 → Append Audit Log
1549
+ 8.5 → MOSTRAR LOG FINAL de tudo atualizado
1550
+ 8.6 → Perguntar sobre próxima sessão
1551
+ ```
1552
+
1553
+ ### Step 7.1 - Compile Knowledge Summary for Agents
1554
+ ```
1555
+ LOG: "Compilando conhecimento para alimentação de agentes..."
1556
+
1557
+ FROM INSIGHTS_STATE and NARRATIVES_STATE, extract:
1558
+
1559
+ KNOWLEDGE_PAYLOAD = {
1560
+ "source_id": $SOURCE_ID,
1561
+ "source_person": $SOURCE_PERSON,
1562
+ "date_processed": TODAY,
1563
+
1564
+ "frameworks_discovered": [
1565
+ // Listar frameworks HIGH priority encontrados
1566
+ // Ex: "7 Beliefs Framework", "4 Pillars Pitch", "Call Flow 6 Fases"
1567
+ ],
1568
+
1569
+ "techniques_discovered": [
1570
+ // Listar técnicas específicas
1571
+ // Ex: "Double Tie Down", "Buying Pocket", "Tonality 3 Levels"
1572
+ ],
1573
+
1574
+ "metrics_discovered": [
1575
+ // Listar métricas/benchmarks com valores
1576
+ // Ex: "Check-in interval: 45 segundos", "Neutral tonality: 80-90%"
1577
+ ],
1578
+
1579
+ "insights_high_priority": [
1580
+ // Lista dos insights HIGH com chunk_ref
1581
+ ],
1582
+
1583
+ "quotes_key": [
1584
+ // Citações importantes para incluir nos agentes
1585
+ ],
1586
+
1587
+ "agents_impacted": [
1588
+ // Lista de agentes que devem receber este conhecimento
1589
+ // Baseado no mapeamento THEME_TO_AGENTS
1590
+ ]
1591
+ }
1592
+
1593
+ LOG: "Knowledge payload compilado:"
1594
+ LOG: " Frameworks: {count}"
1595
+ LOG: " Técnicas: {count}"
1596
+ LOG: " Métricas: {count}"
1597
+ LOG: " Insights HIGH: {count}"
1598
+ LOG: " Agentes impactados: {list}"
1599
+ ```
1600
+
1601
+ ### Step 7.2 - Check Role Threshold for New Agents
1602
+ ```
1603
+ LOG: "Verificando threshold para criação de novos agentes..."
1604
+
1605
+ READ /agents/DISCOVERY/role-tracking.md
1606
+
1607
+ SCAN INSIGHTS_STATE for new roles/functions mentioned:
1608
+ COUNT mentions per role
1609
+
1610
+ FOR each ROLE found:
1611
+ IF mentions >= 10 AND NOT already has agent:
1612
+ -> FLAG as "🔴 CRÍTICO - CRIAR AGENTE"
1613
+ -> ADD to NEW_AGENTS_QUEUE
1614
+
1615
+ IF mentions >= 5 AND mentions < 10:
1616
+ -> FLAG as "🟡 IMPORTANTE - MONITORAR"
1617
+
1618
+ IF mentions < 5:
1619
+ -> FLAG as "RASTREAR"
1620
+
1621
+ UPDATE /agents/DISCOVERY/role-tracking.md with new counts
1622
+
1623
+ NEW_AGENTS_REPORT = {
1624
+ "critical": [roles with 10+],
1625
+ "important": [roles with 5-9],
1626
+ "tracking": [roles with <5]
1627
+ }
1628
+
1629
+ LOG: "Threshold check completo:"
1630
+ LOG: " 🔴 CRÍTICO (criar agente): {list or 'nenhum'}"
1631
+ LOG: " 🟡 IMPORTANTE (monitorar): {list or 'nenhum'}"
1632
+ ```
1633
+
1634
+ ### Step 7.3 - Agent Enrichment (MEMORY auto + AGENT prompt)
1635
+ ```
1636
+ # CORREÇÃO ARQUITETURAL: Separação clara de responsabilidades
1637
+ # MEMORY-*.md → AUTOMÁTICO (dados históricos, não muda comportamento)
1638
+ # AGENT-*.md → VIA PROMPT (altera expertise/comportamento, requer aprovação)
1639
+
1640
+ ===============================================================================
1641
+ 🧠 ALIMENTAÇÃO DE AGENTES
1642
+ ===============================================================================
1643
+
1644
+ O conhecimento extraído de $SOURCE_PERSON ($SOURCE_ID) será processado:
1645
+
1646
+ ┌─────────────────────────────────────────────────────────────────────────────┐
1647
+ │ ATUALIZAÇÃO AUTOMÁTICA (sem prompt) │
1648
+ ├─────────────────────────────────────────────────────────────────────────────┤
1649
+ │ │
1650
+ │ MEMORY-*.md (Memória/Experiência) │
1651
+ │ └─ ✅ AUTOMÁTICO: Registrar insights, decisões, precedentes │
1652
+ │ Não altera comportamento do agente, apenas adiciona referências │
1653
+ │ │
1654
+ │ Motivo: MEMORYs são dados históricos - seguros para auto-update │
1655
+ │ │
1656
+ └─────────────────────────────────────────────────────────────────────────────┘
1657
+
1658
+ ┌─────────────────────────────────────────────────────────────────────────────┐
1659
+ │ ATUALIZAÇÃO VIA PROMPT (requer aprovação) │
1660
+ ├─────────────────────────────────────────────────────────────────────────────┤
1661
+ │ │
1662
+ │ AGENT-*.md (Instruções Principais) │
1663
+ │ └─ ⚠️ PROMPT: Adicionar frameworks e técnicas à expertise │
1664
+ │ ALTERA comportamento do agente - requer revisão humana │
1665
+ │ │
1666
+ │ Motivo: AGENTs definem comportamento - mudanças devem ser intencionais │
1667
+ │ │
1668
+ └─────────────────────────────────────────────────────────────────────────────┘
1669
+
1670
+ 📦 PAYLOAD DISPONÍVEL:
1671
+ • {count} Frameworks (ex: {example})
1672
+ • {count} Técnicas (ex: {example})
1673
+ • {count} Métricas com valores
1674
+ • {count} Insights HIGH priority
1675
+ • {count} Citações-chave
1676
+
1677
+ 🔴 NOVOS AGENTES (threshold 10+ atingido):
1678
+ {list or "Nenhum novo agente necessário"}
1679
+
1680
+ 🟡 MONITORAR (5-9 menções):
1681
+ {list or "Nenhum"}
1682
+
1683
+ ===============================================================================
1684
+
1685
+ MEMORYs serão atualizados AUTOMATICAMENTE.
1686
+
1687
+ Deseja também atualizar AGENT-*.md (expertise/comportamento)?
1688
+
1689
+ 1. ✅ SIM - Atualizar AGENT-*.md com novos frameworks e técnicas
1690
+ 2. ⏭️ NÃO - Manter AGENTs como estão (MEMORYs já foram atualizados)
1691
+
1692
+ ===============================================================================
1693
+ ```
1694
+
1695
+ ### Step 7.4 - Execute Agent Enrichment (MEMORY auto, AGENT condicional)
1696
+ ```
1697
+ # CORREÇÃO ARQUITETURAL: MEMORY sempre atualiza, AGENT depende de aprovação
1698
+ # NAVEGAÇÃO RICA 5 NÍVEIS: Mesmo padrão usado em Role Discovery (8.1.7)
1699
+
1700
+ ═══════════════════════════════════════════════════════════════════════════════
1701
+ STEP 7.4.0 - CARREGAR TODOS OS 5 NÍVEIS PARA ENRIQUECIMENTO RICO
1702
+ ═══════════════════════════════════════════════════════════════════════════════
1703
+ # PRINCÍPIO: EXTRAÇÃO RICA > ECONOMIA DE TOKENS
1704
+ # Agentes devem ser alimentados com a MÁXIMA profundidade disponível
1705
+
1706
+ # NÍVEL 5 - DOSSIERS (mais consolidado)
1707
+ READ /knowledge/dossiers/persons/DOSSIER-{SOURCE_PERSON}.md as DOSSIER_DATA
1708
+ READ /knowledge/dossiers/THEMES/DOSSIER-{RELEVANT_THEMES}.md as THEME_DOSSIERS
1709
+
1710
+ # NÍVEL 4 - NARRATIVES
1711
+ READ /processing/narratives/NARRATIVES-STATE.json as NARRATIVES_DATA
1712
+
1713
+ # NÍVEL 3 - INSIGHTS
1714
+ READ /processing/insights/INSIGHTS-STATE.json as INSIGHTS_DATA
1715
+
1716
+ # NÍVEL 2 - CANONICAL (entidades)
1717
+ READ /processing/canonical/CANONICAL-MAP.json as CANONICAL_DATA
1718
+
1719
+ # NÍVEL 1 - CHUNKS (texto bruto)
1720
+ READ /processing/chunks/CHUNKS-STATE.json as CHUNKS_DATA
1721
+
1722
+ # Para cada agente, compilar RICH_AGENT_PAYLOAD navegando todos os níveis
1723
+ FOR each AGENT in agents_impacted:
1724
+ RICH_AGENT_PAYLOAD = compile_rich_payload(
1725
+ agent: AGENT,
1726
+ dossier: DOSSIER_DATA,
1727
+ narratives: NARRATIVES_DATA,
1728
+ insights: INSIGHTS_DATA,
1729
+ canonical: CANONICAL_DATA,
1730
+ chunks: CHUNKS_DATA
1731
+ )
1732
+ # RICH_AGENT_PAYLOAD contém:
1733
+ # - Contexto consolidado (do DOSSIER)
1734
+ # - Padrões e tensões (do NARRATIVES)
1735
+ # - Insights priorizados com confiança (do INSIGHTS)
1736
+ # - Entidades normalizadas (do CANONICAL)
1737
+ # - Citações exatas com timestamp (dos CHUNKS)
1738
+
1739
+ ═══════════════════════════════════════════════════════════════════════════════
1740
+ STEP 7.4.1 - ATUALIZAR MEMORY-*.md (AUTOMÁTICO)
1741
+ ═══════════════════════════════════════════════════════════════════════════════
1742
+
1743
+ FOR each AGENT in agents_impacted:
1744
+
1745
+ MEMORY_PATH = /agents/{category}/MEMORY-{agent}.md
1746
+ AGENT_PATH = /agents/{category}/AGENT-{agent}.md
1747
+
1748
+ ═══════════════════════════════════════════════════════════════════════════
1749
+ ATUALIZAR MEMORY-{agent}.md (SEMPRE) - USANDO RICH_AGENT_PAYLOAD
1750
+ ═══════════════════════════════════════════════════════════════════════════
1751
+
1752
+ READ MEMORY_PATH
1753
+
1754
+ # MEMORY deve conter TEAM AGREEMENT style - como se descrevesse o cargo
1755
+ # Incluir: habilidades, relacionamentos, quando usar, fontes de referência
1756
+
1757
+ LOCATE or CREATE section "## KNOWLEDGE BASE ACUMULADA"
1758
+ APPEND:
1759
+
1760
+ ---
1761
+
1762
+ ### 📚 {SOURCE_PERSON} ({SOURCE_ID}) - {TODAY}
1763
+
1764
+ #### Frameworks Incorporados
1765
+ Para cada framework, descrever COMO e QUANDO usar:
1766
+
1767
+ **{FRAMEWORK_NAME}**
1768
+ - O que é: {descrição rica}
1769
+ - Quando usar: {contexto específico}
1770
+ - Como aplicar: {passos ou estrutura}
1771
+ - Fonte: → Ver DOSSIER-{PERSON}.md ou chunk {chunk_ref}
1772
+
1773
+ #### Técnicas Adquiridas
1774
+ {Lista de técnicas com descrição prática}
1775
+
1776
+ #### Métricas de Referência
1777
+ | Métrica | Valor | Contexto | Fonte |
1778
+ |---------|-------|----------|-------|
1779
+ | {metric} | {value} | {when to use} | {chunk_ref} |
1780
+
1781
+ #### Citações de Referência
1782
+ > "{quote}" - {SOURCE_PERSON}
1783
+ > Usar quando: {contexto de aplicação}
1784
+
1785
+ #### Relacionamentos (Team Agreement)
1786
+ - **Escala para:** {agents acima na hierarquia}
1787
+ - **Recebe de:** {agents que alimentam este}
1788
+ - **Colabora com:** {agents do mesmo nível}
1789
+
1790
+ #### Fontes para Consulta Profunda
1791
+ - DOSSIER: `/knowledge/dossiers/persons/DOSSIER-{PERSON}.md`
1792
+ - THEME: `/knowledge/dossiers/THEMES/DOSSIER-{THEME}.md`
1793
+ - Chunks: {list of relevant chunk_ids}
1794
+
1795
+ WRITE MEMORY_PATH
1796
+ LOG: "✅ MEMORY atualizada (automático): {agent}"
1797
+
1798
+ MEMORIES_UPDATED = [list of agents with updated memories]
1799
+ LOG: "MEMORYs atualizados automaticamente: {count} agentes"
1800
+
1801
+ ═══════════════════════════════════════════════════════════════════════════════
1802
+ STEP 7.4.2 - ATUALIZAR AGENT-*.md (SE APROVADO)
1803
+ ═══════════════════════════════════════════════════════════════════════════════
1804
+
1805
+ IF user selected "SIM" in Step 7.3:
1806
+
1807
+ FOR each AGENT in agents_impacted:
1808
+ READ AGENT_PATH
1809
+
1810
+ # AGENT deve conter JOB DESCRIPTION completo
1811
+ # O agente deve "saber" fazer tudo que aprendeu como se tivesse a experiência
1812
+
1813
+ LOCATE section "## EXPERTISE" or "## CAPABILITIES" or "## O QUE ESTE AGENTE SABE FAZER"
1814
+
1815
+ # Adicionar como HABILIDADE NATIVA do agente (não como referência externa)
1816
+ APPEND or ENRICH:
1817
+
1818
+ ### {FRAMEWORK_NAME}
1819
+ Este agente DOMINA o {FRAMEWORK_NAME} e aplica naturalmente em:
1820
+ - {situação 1}
1821
+ - {situação 2}
1822
+
1823
+ **Estrutura:**
1824
+ {estrutura do framework como conhecimento próprio}
1825
+
1826
+ **Aplicação prática:**
1827
+ {como o agente usa isso em seu trabalho}
1828
+
1829
+ # Atualizar seção de NAVEGAÇÃO (quando acionado, onde ir)
1830
+ LOCATE or CREATE section "## NAVEGAÇÃO / QUANDO SOU ACIONADO"
1831
+ ENSURE contains:
1832
+
1833
+ ### Quando me acionar:
1834
+ - {lista de situações onde este agente é o especialista}
1835
+
1836
+ ### Eu consulto:
1837
+ - {lista de DOSSIERs e MEMORYs que informam minhas respostas}
1838
+
1839
+ ### Eu escalo para:
1840
+ - {agentes superiores quando necessário}
1841
+
1842
+ WRITE AGENT_PATH
1843
+ LOG: "✅ AGENT atualizado (aprovado): {agent}"
1844
+
1845
+ AGENTS_UPDATED = [list of agents with updated definitions]
1846
+ LOG: "AGENTs atualizados via aprovação: {count} agentes"
1847
+
1848
+ ELSE:
1849
+ LOG: "AGENTs mantidos sem alteração (apenas MEMORYs atualizados)"
1850
+
1851
+ ═══════════════════════════════════════════════════════════════════════════════
1852
+ STEP 7.4.3 - CRIAR NOVOS AGENTES (SE THRESHOLD ATINGIDO)
1853
+ ═══════════════════════════════════════════════════════════════════════════════
1854
+
1855
+ IF NEW_AGENTS_QUEUE not empty AND user approves:
1856
+ FOR each NEW_AGENT in NEW_AGENTS_QUEUE:
1857
+
1858
+ # Criar AGENT com JOB DESCRIPTION completo
1859
+ # Incluir TODAS as menções acumuladas anteriores (não apenas desta sessão)
1860
+
1861
+ CREATE /agents/{category}/AGENT-{NEW_AGENT}.md:
1862
+ - Job Description baseado em todas as menções acumuladas
1863
+ - Expertise derivada de todos os insights relacionados
1864
+ - Navegação clara (quando acionar, para onde escalar)
1865
+
1866
+ CREATE /agents/{category}/MEMORY-{NEW_AGENT}.md:
1867
+ - Team Agreement style
1868
+ - Todas as fontes que mencionaram este role
1869
+ - Insights acumulados de todas as sessões anteriores
1870
+
1871
+ UPDATE /agents/DISCOVERY/role-tracking.md:
1872
+ - Mark as "✅ CRIADO"
1873
+ - Preserve all accumulated mentions and sources
1874
+
1875
+ LOG: "Novo agente criado: {NEW_AGENT}"
1876
+
1877
+ # RESUMO DO STEP 7.4
1878
+ ENRICHMENT_SUMMARY = {
1879
+ memories_auto_updated: len(MEMORIES_UPDATED),
1880
+ agents_updated_via_approval: len(AGENTS_UPDATED) if user_approved else 0,
1881
+ new_agents_created: len(NEW_AGENTS_CREATED) if any else 0
1882
+ }
1883
+
1884
+ LOG: "Agent Enrichment completo: {ENRICHMENT_SUMMARY}"
1885
+ ```
1886
+
1887
+ ---
1888
+
1889
+ ## PHASE 8: FINALIZATION
1890
+
1891
+ ### Step 8.1 - AÇÕES AUTOMÁTICAS
1892
+ ```
1893
+ LOG: "Executando finalizações automáticas..."
1894
+
1895
+ ═══════════════════════════════════════════════════════════════════════════
1896
+ 8.1.1 - RAG INDEX (Único Ponto de Execução)
1897
+ ═══════════════════════════════════════════════════════════════════════════
1898
+ # CORREÇÃO ARQUITETURAL: RAG Index agora executa UMA VEZ no final
1899
+ # Inclui: Knowledge base + Dossiês (persons e themes)
1900
+
1901
+ LOG: "Executando indexação RAG consolidada..."
1902
+
1903
+ # INDEXAR KNOWLEDGE BASE COMPLETA
1904
+ EXECUTE: python scripts/rag_index.py --knowledge --force
1905
+ CAPTURE output
1906
+ LOG: "RAG Knowledge: {files_indexed} arquivos indexados"
1907
+
1908
+ # INDEXAR DOSSIÊS (consolidado de Phase 6.5.4)
1909
+ FOR each dossier in DOSSIERS_TO_INDEX.persons:
1910
+ EXECUTE: python scripts/rag_index.py --file {dossier} --collection dossiers_persons
1911
+
1912
+ FOR each dossier in DOSSIERS_TO_INDEX.themes:
1913
+ EXECUTE: python scripts/rag_index.py --file {dossier} --collection dossiers_themes
1914
+
1915
+ LOG: "RAG Dossiês: {persons_count} pessoas, {themes_count} temas"
1916
+ LOG: "RAG Index TOTAL: {total_files} arquivos indexados"
1917
+
1918
+ ═══════════════════════════════════════════════════════════════════════════
1919
+ 9.5.2 - FILE REGISTRY
1920
+ ═══════════════════════════════════════════════════════════════════════════
1921
+ EXECUTE: python scripts/file_registry.py --scan
1922
+ CAPTURE output
1923
+ LOG: "File Registry: {SOURCE_ID} registrado com MD5"
1924
+
1925
+ ═══════════════════════════════════════════════════════════════════════════
1926
+ 9.5.3 - SESSION-STATE
1927
+ ═══════════════════════════════════════════════════════════════════════════
1928
+ READ /system/SESSION-STATE.md
1929
+
1930
+ UPDATE "Arquivos Processados" table:
1931
+ ADD: | {SOURCE_ID} | {filename} | {summary} |
1932
+
1933
+ UPDATE "Knowledge Bases Populadas":
1934
+ ADD sources to relevant agents
1935
+
1936
+ UPDATE "Versão do Sistema":
1937
+ INCREMENT if structural change
1938
+
1939
+ WRITE /system/SESSION-STATE.md
1940
+ LOG: "SESSION-STATE atualizado"
1941
+
1942
+ ═══════════════════════════════════════════════════════════════════════════
1943
+ 9.5.4 - EVOLUTION-LOG (SE MUDANÇA ESTRUTURAL)
1944
+ ═══════════════════════════════════════════════════════════════════════════
1945
+ IF structural_change_occurred (new agent, new protocol, new pattern):
1946
+ READ /system/EVOLUTION-LOG.md
1947
+
1948
+ APPEND to CHANGELOG:
1949
+ ### v{NEW_VERSION} ({TODAY})
1950
+ - [ADD/UPDATE] {description}
1951
+
1952
+ WRITE /system/EVOLUTION-LOG.md
1953
+ LOG: "EVOLUTION-LOG atualizado para v{NEW_VERSION}"
1954
+
1955
+ ═══════════════════════════════════════════════════════════════════════════
1956
+ 8.1.7 - ROLE DISCOVERY (Navegação Hierárquica Rica - 5 NÍVEIS)
1957
+ ═══════════════════════════════════════════════════════════════════════════
1958
+ # PRINCÍPIO FUNDAMENTAL: EXTRAÇÃO RICA > ECONOMIA DE TOKENS
1959
+ #
1960
+ # ARQUITETURA DE NAVEGAÇÃO COMPLETA (5 NÍVEIS):
1961
+ # ┌─────────────────────────────────────────────────────────────────────┐
1962
+ # │ NÍVEL 5: DOSSIERS/*.md ← Mais consolidado (markdown) │
1963
+ # │ │ Contém: narrativas finais + referências [chunk_X] │
1964
+ # │ ▼ │
1965
+ # │ NÍVEL 4: NARRATIVES-STATE.json ← Síntese por pessoa/tema │
1966
+ # │ │ Contém: insights_included[] → links para navegar │
1967
+ # │ ▼ │
1968
+ # │ NÍVEL 3: INSIGHTS-STATE.json ← Insights com confiança/prioridade │
1969
+ # │ │ Contém: chunks[] → links para texto original │
1970
+ # │ ▼ │
1971
+ # │ NÍVEL 2: CANONICAL-MAP.json ← Resolução de entidades │
1972
+ # │ │ Contém: mentions[] → entity_id normalizado │
1973
+ # │ ▼ │
1974
+ # │ NÍVEL 1: CHUNKS-STATE.json ← Texto bruto original │
1975
+ # │ Contém: citações exatas, timestamps, speakers │
1976
+ # └─────────────────────────────────────────────────────────────────────┘
1977
+ #
1978
+ # REGRA: Sistema ENTRA pelo nível mais consolidado e DESCE quando precisa
1979
+ # de profundidade. NUNCA limitar a um único nível.
1980
+
1981
+ # ═══════════════════════════════════════════════════════════════════════
1982
+ # CARREGAR TODOS OS 5 NÍVEIS (disponíveis para navegação completa)
1983
+ # ═══════════════════════════════════════════════════════════════════════
1984
+ READ /agents/DISCOVERY/role-tracking.md
1985
+
1986
+ # NÍVEL 5 - DOSSIERS (mais consolidado)
1987
+ DOSSIERS_PERSONS = LIST /knowledge/dossiers/persons/DOSSIER-*.md
1988
+ DOSSIERS_THEMES = LIST /knowledge/dossiers/THEMES/DOSSIER-*.md
1989
+
1990
+ # NÍVEL 4 - NARRATIVES
1991
+ READ /processing/narratives/NARRATIVES-STATE.json as NARRATIVES_DATA
1992
+
1993
+ # NÍVEL 3 - INSIGHTS
1994
+ READ /processing/insights/INSIGHTS-STATE.json as INSIGHTS_DATA
1995
+
1996
+ # NÍVEL 2 - CANONICAL (entidades)
1997
+ READ /processing/canonical/CANONICAL-MAP.json as CANONICAL_DATA
1998
+
1999
+ # NÍVEL 1 - CHUNKS (texto bruto)
2000
+ READ /processing/chunks/CHUNKS-STATE.json as CHUNKS_DATA
2001
+
2002
+ # ═══════════════════════════════════════════════════════════════════════
2003
+ # FASE 1: DOSSIERS como ponto de entrada (visão mais consolidada)
2004
+ # ═══════════════════════════════════════════════════════════════════════
2005
+ FOR each DOSSIER_FILE in DOSSIERS_PERSONS:
2006
+ DOSSIER_CONTENT = READ DOSSIER_FILE
2007
+ PERSON_NAME = extract_person_from_filename(DOSSIER_FILE)
2008
+
2009
+ # Extrair roles mencionados no dossiê consolidado
2010
+ ROLES_FROM_DOSSIER = extract_roles_from_dossier(DOSSIER_CONTENT)
2011
+
2012
+ # Extrair referências de chunks já presentes no dossiê [chunk_X]
2013
+ CHUNK_REFS_IN_DOSSIER = extract_chunk_references(DOSSIER_CONTENT)
2014
+
2015
+ FOR each ROLE in ROLES_FROM_DOSSIER:
2016
+
2017
+ # ═══════════════════════════════════════════════════════════════════
2018
+ # FASE 2: DESCER para NARRATIVES (síntese estruturada)
2019
+ # ═══════════════════════════════════════════════════════════════════
2020
+ PERSON_NARRATIVE = NARRATIVES_DATA.persons[PERSON_NAME]
2021
+ IF PERSON_NARRATIVE exists:
2022
+ NARRATIVE_TEXT = PERSON_NARRATIVE.narrative
2023
+ INSIGHTS_INCLUDED = PERSON_NARRATIVE.insights_included
2024
+ NARRATIVE_PATTERNS = PERSON_NARRATIVE.patterns
2025
+ NARRATIVE_TENSIONS = PERSON_NARRATIVE.tensions
2026
+ NARRATIVE_LOOPS = PERSON_NARRATIVE.open_loops
2027
+
2028
+ # ═══════════════════════════════════════════════════════════════════
2029
+ # FASE 3: DESCER para INSIGHTS (detalhes específicos)
2030
+ # ═══════════════════════════════════════════════════════════════════
2031
+ RELEVANT_INSIGHTS = []
2032
+ FOR each INSIGHT_REF in INSIGHTS_INCLUDED:
2033
+ INSIGHT = INSIGHTS_DATA.find(INSIGHT_REF)
2034
+ IF INSIGHT AND (INSIGHT.text contains ROLE OR INSIGHT.tags contains ROLE):
2035
+ RELEVANT_INSIGHTS.append({
2036
+ id: INSIGHT.id,
2037
+ text: INSIGHT.insight,
2038
+ confidence: INSIGHT.confidence,
2039
+ priority: INSIGHT.priority,
2040
+ tags: INSIGHT.tags,
2041
+ chunks: INSIGHT.chunks # Links para navegar mais fundo
2042
+ })
2043
+
2044
+ # ═══════════════════════════════════════════════════════════════════
2045
+ # FASE 4: DESCER para CANONICAL (resolução de entidades)
2046
+ # ═══════════════════════════════════════════════════════════════════
2047
+ # Verificar se o ROLE tem entidade canônica
2048
+ CANONICAL_ENTITY = CANONICAL_DATA.entities.find(ROLE)
2049
+ IF CANONICAL_ENTITY:
2050
+ ENTITY_VARIATIONS = CANONICAL_ENTITY.aliases # Sinônimos
2051
+ ENTITY_MENTIONS = CANONICAL_ENTITY.mentions # Todas as menções
2052
+ ENTITY_TYPE = CANONICAL_ENTITY.type # role, person, concept
2053
+ ELSE:
2054
+ # Role novo, não canonicalizado ainda
2055
+ FLAG_NEW_ENTITY = true
2056
+
2057
+ # ═══════════════════════════════════════════════════════════════════
2058
+ # FASE 5: DESCER para CHUNKS (citações exatas originais)
2059
+ # ═══════════════════════════════════════════════════════════════════
2060
+ EXACT_QUOTES = []
2061
+
2062
+ # Via insights (links diretos)
2063
+ FOR each INSIGHT in RELEVANT_INSIGHTS:
2064
+ FOR each CHUNK_REF in INSIGHT.chunks:
2065
+ CHUNK = CHUNKS_DATA.find(CHUNK_REF)
2066
+ IF CHUNK exists:
2067
+ EXACT_QUOTES.append({
2068
+ chunk_id: CHUNK_REF,
2069
+ text: CHUNK.conteudo,
2070
+ timestamp: CHUNK.timestamp,
2071
+ speaker: CHUNK.speaker,
2072
+ source_id: CHUNK.source_id,
2073
+ via: "insight_link"
2074
+ })
2075
+
2076
+ # Via referências do dossiê (se existirem)
2077
+ FOR each CHUNK_REF in CHUNK_REFS_IN_DOSSIER:
2078
+ IF CHUNK_REF relates_to ROLE:
2079
+ CHUNK = CHUNKS_DATA.find(CHUNK_REF)
2080
+ IF CHUNK exists AND CHUNK not in EXACT_QUOTES:
2081
+ EXACT_QUOTES.append({
2082
+ chunk_id: CHUNK_REF,
2083
+ text: CHUNK.conteudo,
2084
+ timestamp: CHUNK.timestamp,
2085
+ speaker: CHUNK.speaker,
2086
+ source_id: CHUNK.source_id,
2087
+ via: "dossier_reference"
2088
+ })
2089
+
2090
+ # Via menções canônicas (busca por variações)
2091
+ IF ENTITY_VARIATIONS:
2092
+ FOR each VARIATION in ENTITY_VARIATIONS:
2093
+ FOR each CHUNK in CHUNKS_DATA.chunks:
2094
+ IF CHUNK.conteudo contains VARIATION AND CHUNK not in EXACT_QUOTES:
2095
+ EXACT_QUOTES.append({
2096
+ chunk_id: CHUNK.id,
2097
+ text: CHUNK.conteudo,
2098
+ timestamp: CHUNK.timestamp,
2099
+ speaker: CHUNK.speaker,
2100
+ source_id: CHUNK.source_id,
2101
+ via: "canonical_variation",
2102
+ matched_variation: VARIATION
2103
+ })
2104
+
2105
+ # ═══════════════════════════════════════════════════════════════════
2106
+ # FASE 6: COMPILAR EXTRAÇÃO RICA COMPLETA (TODOS OS 5 NÍVEIS)
2107
+ # ═══════════════════════════════════════════════════════════════════
2108
+ RICH_EXTRACTION = {
2109
+ role: ROLE,
2110
+ source_person: PERSON_NAME,
2111
+ extraction_levels: ["DOSSIER", "NARRATIVE", "INSIGHT", "CANONICAL", "CHUNK"],
2112
+
2113
+ # NÍVEL 5 - Do DOSSIER (mais consolidado)
2114
+ dossier_context: extract_excerpt(DOSSIER_CONTENT, ROLE),
2115
+ dossier_file: DOSSIER_FILE,
2116
+ dossier_chunk_refs: CHUNK_REFS_IN_DOSSIER,
2117
+
2118
+ # NÍVEL 4 - Do NARRATIVES (síntese)
2119
+ narrative_context: extract_excerpt(NARRATIVE_TEXT, ROLE),
2120
+ patterns_identified: filter_by_role(NARRATIVE_PATTERNS, ROLE),
2121
+ open_loops: filter_by_role(NARRATIVE_LOOPS, ROLE),
2122
+ tensions: filter_by_role(NARRATIVE_TENSIONS, ROLE),
2123
+
2124
+ # NÍVEL 3 - Dos INSIGHTS (detalhes)
2125
+ insights: RELEVANT_INSIGHTS,
2126
+ confidence_levels: [i.confidence for i in RELEVANT_INSIGHTS],
2127
+ priorities: [i.priority for i in RELEVANT_INSIGHTS],
2128
+ total_insights: len(RELEVANT_INSIGHTS),
2129
+
2130
+ # NÍVEL 2 - Do CANONICAL (entidades)
2131
+ canonical_entity: CANONICAL_ENTITY,
2132
+ entity_variations: ENTITY_VARIATIONS,
2133
+ is_new_entity: FLAG_NEW_ENTITY,
2134
+
2135
+ # NÍVEL 1 - Dos CHUNKS (citações exatas)
2136
+ exact_quotes: EXACT_QUOTES,
2137
+ total_mentions: len(EXACT_QUOTES),
2138
+ sources_involved: unique([q.source_id for q in EXACT_QUOTES])
2139
+ }
2140
+
2141
+ # ═══════════════════════════════════════════════════════════════════
2142
+ # Atualizar role-tracking com EXTRAÇÃO RICA COMPLETA
2143
+ # ═══════════════════════════════════════════════════════════════════
2144
+ FIND existing entry in role-tracking.md OR create new
2145
+ INCREMENT mention count by RICH_EXTRACTION.total_mentions
2146
+ APPEND rich_extraction to role entry
2147
+ PRESERVE all accumulated information
2148
+
2149
+ # ═══════════════════════════════════════════════════════════════════════
2150
+ # VERIFICAR THRESHOLD E SINALIZAR
2151
+ # ═══════════════════════════════════════════════════════════════════════
2152
+ FOR each ROLE in role-tracking.md:
2153
+ IF mentions >= 10 AND NOT has_agent:
2154
+ FLAG as "🔴 CRÍTICO - CRIAR AGENTE"
2155
+ LOG: "ROLE {ROLE}: threshold atingido ({mentions}/10) - EXTRAÇÃO RICA 5 NÍVEIS disponível"
2156
+ ELIF mentions >= 7:
2157
+ FLAG as "🟡 IMPORTANTE - MONITORAR"
2158
+
2159
+ UPDATE "LOG DE ATUALIZAÇÕES" table:
2160
+ ADD: | {TODAY} | {SOURCE_ID} | {roles updated} | NAVEGAÇÃO RICA 5 NÍVEIS: DOSSIER→NARRATIVE→INSIGHT→CANONICAL→CHUNK |
2161
+
2162
+ WRITE /agents/DISCOVERY/role-tracking.md
2163
+ LOG: "Role Discovery: {roles_count} roles via navegação hierárquica rica"
2164
+
2165
+ ═══════════════════════════════════════════════════════════════════════════
2166
+ 8.1.6 - SUA-EMPRESA ENRICHMENT (Navegação Hierárquica Rica)
2167
+ ═══════════════════════════════════════════════════════════════════════════
2168
+
2169
+ > **Protocolo:** `/agents/protocols/SUA-EMPRESA-ENRICHMENT-PROTOCOL.md`
2170
+ > **Ecossistema:** [SUA EMPRESA] (ISOLATED)
2171
+ > **Método:** Navegação NARRATIVES → INSIGHTS → CHUNKS (extração rica)
2172
+
2173
+ LOG: "Executando SUA-EMPRESA Enrichment via navegação hierárquica..."
2174
+
2175
+ # PRINCÍPIO: EXTRAÇÃO RICA > ECONOMIA DE TOKENS
2176
+ # NARRATIVES = ponto de ENTRADA, INSIGHTS e CHUNKS para profundidade
2177
+
2178
+ # ─────────────────────────────────────────────────────────────────────────
2179
+ # CARREGAR TODAS AS FONTES (disponíveis para navegação)
2180
+ # ─────────────────────────────────────────────────────────────────────────
2181
+ READ /processing/narratives/NARRATIVES-STATE.json as NARRATIVES_DATA
2182
+ READ /processing/insights/INSIGHTS-STATE.json as INSIGHTS_DATA
2183
+ READ /processing/chunks/CHUNKS-STATE.json as CHUNKS_DATA
2184
+
2185
+ # Mapeamento de temas para CARGOS (nao agentes)
2186
+ THEME_TO_ROLES_[SUA EMPRESA] = {
2187
+ "01-ESTRUTURA-TIME": ["CLOSER-CHEFE", "SALES-MANAGER"],
2188
+ "02-PROCESSO-VENDAS": ["closer", "CLOSER-CHEFE", "SDR"],
2189
+ "03-CONTRATACAO": ["CLOSER-CHEFE", "SALES-MANAGER", "CMO"],
2190
+ "04-COMISSIONAMENTO": ["closer", "CLOSER-CHEFE", "SALES-MANAGER"],
2191
+ "05-METRICAS": ["CLOSER-CHEFE", "SALES-MANAGER", "CMO"],
2192
+ "06-FUNIL-APLICACAO": ["SDR", "CMO"],
2193
+ "07-PRICING": ["CMO"],
2194
+ "08-FERRAMENTAS": ["CLOSER-CHEFE", "SALES-MANAGER"],
2195
+ "09-GESTAO": ["CLOSER-CHEFE", "SALES-MANAGER"],
2196
+ "10-CULTURA-GAMIFICACAO": ["CLOSER-CHEFE", "SALES-MANAGER"]
2197
+ }
2198
+
2199
+ # ─────────────────────────────────────────────────────────────────────────
2200
+ # FASE 1: NARRATIVES como ponto de entrada
2201
+ # ─────────────────────────────────────────────────────────────────────────
2202
+ FOR each PERSON in NARRATIVES_DATA.persons:
2203
+ NARRATIVE = PERSON.narrative
2204
+ INSIGHTS_INCLUDED = PERSON.insights_included
2205
+
2206
+ FOR each THEME in THEME_TO_ROLES_[SUA EMPRESA].keys():
2207
+ IF NARRATIVE contains content about THEME:
2208
+ ROLES = THEME_TO_ROLES_[SUA EMPRESA][THEME]
2209
+
2210
+ FOR each ROLE in ROLES:
2211
+ ROLE_PATH = /agents/sua-empresa/roles/ROLE-{ROLE}.md
2212
+
2213
+ IF ROLE_PATH exists:
2214
+
2215
+ # ─────────────────────────────────────────────────────────────
2216
+ # FASE 2: NAVEGAR para INSIGHTS (detalhes do tema)
2217
+ # ─────────────────────────────────────────────────────────────
2218
+ THEME_INSIGHTS = []
2219
+ FOR each INSIGHT_REF in INSIGHTS_INCLUDED:
2220
+ INSIGHT = INSIGHTS_DATA.find(INSIGHT_REF)
2221
+ IF INSIGHT relates to THEME:
2222
+ THEME_INSIGHTS.append({
2223
+ id: INSIGHT.id,
2224
+ text: INSIGHT.insight,
2225
+ confidence: INSIGHT.confidence,
2226
+ priority: INSIGHT.priority,
2227
+ chunks: INSIGHT.chunks
2228
+ })
2229
+
2230
+ # ─────────────────────────────────────────────────────────────
2231
+ # FASE 3: NAVEGAR para CHUNKS (citações exatas)
2232
+ # ─────────────────────────────────────────────────────────────
2233
+ EXACT_QUOTES = []
2234
+ FOR each INSIGHT in THEME_INSIGHTS:
2235
+ FOR each CHUNK_REF in INSIGHT.chunks:
2236
+ CHUNK = CHUNKS_DATA.find(CHUNK_REF)
2237
+ IF CHUNK exists:
2238
+ EXACT_QUOTES.append({
2239
+ chunk_id: CHUNK_REF,
2240
+ quote: CHUNK.conteudo,
2241
+ timestamp: CHUNK.timestamp,
2242
+ speaker: CHUNK.speaker
2243
+ })
2244
+
2245
+ # ─────────────────────────────────────────────────────────────
2246
+ # FASE 4: COMPILAR ENRIQUECIMENTO RICO
2247
+ # ─────────────────────────────────────────────────────────────
2248
+ RICH_ENRICHMENT = {
2249
+ theme: THEME,
2250
+ source_person: PERSON.name,
2251
+ corpus: PERSON.corpus,
2252
+
2253
+ # Do NARRATIVES (visão consolidada)
2254
+ narrative_excerpt: extract_theme_excerpt(NARRATIVE, THEME),
2255
+ patterns: PERSON.patterns if related to THEME,
2256
+ open_loops: PERSON.open_loops if related to THEME,
2257
+
2258
+ # Dos INSIGHTS (detalhes)
2259
+ insights: THEME_INSIGHTS,
2260
+ high_priority_count: count(i for i in THEME_INSIGHTS if i.priority == "HIGH"),
2261
+
2262
+ # Dos CHUNKS (citações)
2263
+ exact_quotes: EXACT_QUOTES
2264
+ }
2265
+
2266
+ # ─────────────────────────────────────────────────────────────
2267
+ # APLICAR ENRIQUECIMENTO AO ROLE
2268
+ # ─────────────────────────────────────────────────────────────
2269
+ IF NOT already_exists(ROLE_PATH, SOURCE_ID):
2270
+
2271
+ # Adicionar excerpt narrativo com [FONTE]
2272
+ APPEND "[FONTE: {PERSON.corpus}] {RICH_ENRICHMENT.narrative_excerpt}"
2273
+
2274
+ # Adicionar insights HIGH priority com citações exatas
2275
+ FOR each INSIGHT in THEME_INSIGHTS where priority == "HIGH":
2276
+ QUOTE = find_quote_for_insight(INSIGHT, EXACT_QUOTES)
2277
+ APPEND:
2278
+ """
2279
+ **{INSIGHT.text}**
2280
+ [Confidence: {INSIGHT.confidence}]
2281
+ > "{QUOTE.quote}" — {PERSON.name}
2282
+ [FONTE: {QUOTE.chunk_id}]
2283
+ """
2284
+
2285
+ # Adicionar open_loops relacionados
2286
+ FOR each LOOP in RICH_ENRICHMENT.open_loops:
2287
+ APPEND "❓ {LOOP.question} — {LOOP.why_it_matters}"
2288
+
2289
+ UPDATE MEMORY-{ROLE}.md with full RICH_ENRICHMENT
2290
+ LOG: "ROLE-{ROLE}: +enriquecimento rico de {PERSON.name} ({len(EXACT_QUOTES)} citações)"
2291
+
2292
+ SUA_EMPRESA_STATS = {
2293
+ roles_updated: count,
2294
+ memories_updated: count,
2295
+ insights_applied: count,
2296
+ exact_quotes_added: count,
2297
+ open_loops_added: count
2298
+ }
2299
+
2300
+ LOG: "SUA-EMPRESA Enrichment: {roles_updated} ROLEs via navegação hierárquica rica"
2301
+
2302
+ ═══════════════════════════════════════════════════════════════════════════
2303
+ 8.1.8 - DNA COGNITIVO AUTO-CREATE/UPDATE
2304
+ ═══════════════════════════════════════════════════════════════════════════
2305
+
2306
+ > **Protocolo Base:** `/system/protocols/dna/DNA-EXTRACTION-PROTOCOL.md`
2307
+ > **Trigger CREATE:** DOSSIER existe + densidade >= 3/5 + DNA não existe
2308
+ > **Trigger UPDATE:** DNA existe + novo material processado
2309
+ > **Output:** DNA/*.yaml criados automaticamente OU atualizados com novos insights
2310
+ >
2311
+ > **MUDANÇA v2.1.3:** Extração de DNA agora é AUTOMÁTICA quando densidade >= 3/5
2312
+ > Removido: Trigger antigo de "2+ fontes" (arbitrário)
2313
+ > Adicionado: Trigger semântico baseado em densidade do DOSSIER
2314
+
2315
+ LOG: "Verificando necessidade de atualização de DNA Cognitivo..."
2316
+
2317
+ # ─────────────────────────────────────────────────────────────────────────
2318
+ # FASE 1: VERIFICAR SE PESSOA TEM DNA EXISTENTE
2319
+ # ─────────────────────────────────────────────────────────────────────────
2320
+ DNA_BASE_PATH = /knowledge/dna/persons/{SOURCE_PERSON_NORMALIZED}
2321
+
2322
+ IF DNA_BASE_PATH exists:
2323
+ MODE = "UPDATE"
2324
+ LOG: "DNA existente encontrado para {SOURCE_PERSON} - modo UPDATE"
2325
+
2326
+ # Ler DNA atual
2327
+ CURRENT_DNA = {
2328
+ config: READ DNA_BASE_PATH/CONFIG.yaml,
2329
+ filosofias: READ DNA_BASE_PATH/FILOSOFIAS.yaml,
2330
+ modelos_mentais: READ DNA_BASE_PATH/MODELOS-MENTAIS.yaml,
2331
+ heuristicas: READ DNA_BASE_PATH/HEURISTICAS.yaml,
2332
+ frameworks: READ DNA_BASE_PATH/FRAMEWORKS.yaml,
2333
+ metodologias: READ DNA_BASE_PATH/METODOLOGIAS.yaml
2334
+ }
2335
+
2336
+ ELSE:
2337
+ # Verificar se há material suficiente para CRIAÇÃO AUTOMÁTICA de DNA
2338
+ PERSON_DOSSIER = /knowledge/dossiers/persons/DOSSIER-{SOURCE_PERSON}.md
2339
+
2340
+ IF PERSON_DOSSIER exists:
2341
+ DOSSIER_CONTENT = READ PERSON_DOSSIER
2342
+ DOSSIER_DENSITY = extract_density(DOSSIER_CONTENT) # ◐◐◐◐◐ = 5
2343
+
2344
+ IF DOSSIER_DENSITY >= 3:
2345
+ # ═══════════════════════════════════════════════════════════════════
2346
+ # EXTRAÇÃO AUTOMÁTICA DE DNA (trigger: densidade >= 3/5)
2347
+ # ═══════════════════════════════════════════════════════════════════
2348
+ MODE = "CREATE"
2349
+ LOG: "🧬 DNA EXTRACTION AUTOMÁTICA: {SOURCE_PERSON} (densidade {DOSSIER_DENSITY}/5)"
2350
+
2351
+ # Criar diretório do DNA
2352
+ DNA_BASE_PATH = /knowledge/dna/persons/{SOURCE_PERSON_NORMALIZED}
2353
+ CREATE DIRECTORY DNA_BASE_PATH
2354
+
2355
+ # Carregar fontes para extração rica (5 níveis)
2356
+ READ /processing/insights/INSIGHTS-STATE.json as INSIGHTS_DATA
2357
+ READ /processing/narratives/NARRATIVES-STATE.json as NARRATIVES_DATA
2358
+ READ /processing/chunks/CHUNKS-STATE.json as CHUNKS_DATA
2359
+
2360
+ # Filtrar dados desta pessoa
2361
+ PERSON_INSIGHTS = filter(INSIGHTS_DATA where pessoa == SOURCE_PERSON)
2362
+ PERSON_NARRATIVE = NARRATIVES_DATA.persons[SOURCE_PERSON]
2363
+
2364
+ # Extrair elementos por camada usando tags DNA dos insights
2365
+ FILOSOFIAS = filter(PERSON_INSIGHTS where tag == "[FILOSOFIA]")
2366
+ MODELOS_MENTAIS = filter(PERSON_INSIGHTS where tag == "[MODELO-MENTAL]")
2367
+ HEURISTICAS = filter(PERSON_INSIGHTS where tag == "[HEURISTICA]")
2368
+ FRAMEWORKS = filter(PERSON_INSIGHTS where tag == "[FRAMEWORK]")
2369
+ METODOLOGIAS = filter(PERSON_INSIGHTS where tag == "[METODOLOGIA]")
2370
+
2371
+ # ─────────────────────────────────────────────────────────────────
2372
+ # GERAR 6 ARQUIVOS YAML (seguindo DNA-EXTRACTION-PROTOCOL)
2373
+ # ─────────────────────────────────────────────────────────────────
2374
+
2375
+ # 1. FILOSOFIAS.yaml
2376
+ GENERATE DNA_BASE_PATH/FILOSOFIAS.yaml:
2377
+ versao: "1.0.0"
2378
+ pessoa: SOURCE_PERSON
2379
+ camada: "FILOSOFIAS"
2380
+ total_itens: count(FILOSOFIAS)
2381
+ itens: [
2382
+ FOR each insight in FILOSOFIAS:
2383
+ - id: generate_id("FIL", SOURCE_PERSON, index)
2384
+ titulo: insight.titulo
2385
+ descricao: insight.insight
2386
+ peso: calculate_weight(insight)
2387
+ chunks: insight.chunks
2388
+ fontes: insight.sources
2389
+ ]
2390
+ metadados:
2391
+ criado_em: NOW()
2392
+ protocolo: "DNA-EXTRACTION-PROTOCOL v1.0"
2393
+ pipeline: "Jarvis v2.1 (automático)"
2394
+
2395
+ # 2. MODELOS-MENTAIS.yaml
2396
+ GENERATE DNA_BASE_PATH/MODELOS-MENTAIS.yaml:
2397
+ versao: "1.0.0"
2398
+ pessoa: SOURCE_PERSON
2399
+ camada: "MODELOS-MENTAIS"
2400
+ total_itens: count(MODELOS_MENTAIS)
2401
+ itens: [
2402
+ FOR each insight in MODELOS_MENTAIS:
2403
+ - id: generate_id("MM", SOURCE_PERSON, index)
2404
+ titulo: insight.titulo
2405
+ descricao: insight.insight
2406
+ peso: calculate_weight(insight)
2407
+ pergunta_gerada: extract_question(insight)
2408
+ chunks: insight.chunks
2409
+ fontes: insight.sources
2410
+ ]
2411
+ metadados: {same structure}
2412
+
2413
+ # 3. HEURISTICAS.yaml (PRIORIDADE MÁXIMA - contém thresholds numéricos)
2414
+ GENERATE DNA_BASE_PATH/HEURISTICAS.yaml:
2415
+ versao: "1.0.0"
2416
+ pessoa: SOURCE_PERSON
2417
+ camada: "HEURISTICAS"
2418
+ total_itens: count(HEURISTICAS)
2419
+ itens: [
2420
+ FOR each insight in HEURISTICAS:
2421
+ - id: generate_id("HEU", SOURCE_PERSON, index)
2422
+ titulo: insight.titulo
2423
+ descricao: insight.insight
2424
+ threshold: extract_threshold(insight) # Ex: "30-40% net profit"
2425
+ peso: calculate_weight(insight) + 0.10 # Bonus por threshold
2426
+ chunks: insight.chunks
2427
+ fontes: insight.sources
2428
+ ]
2429
+ metadados: {same structure}
2430
+
2431
+ # 4. FRAMEWORKS.yaml
2432
+ GENERATE DNA_BASE_PATH/FRAMEWORKS.yaml:
2433
+ versao: "1.0.0"
2434
+ pessoa: SOURCE_PERSON
2435
+ camada: "FRAMEWORKS"
2436
+ total_itens: count(FRAMEWORKS)
2437
+ itens: [
2438
+ FOR each insight in FRAMEWORKS:
2439
+ - id: generate_id("FW", SOURCE_PERSON, index)
2440
+ titulo: insight.titulo
2441
+ descricao: insight.insight
2442
+ componentes: extract_components(insight)
2443
+ peso: calculate_weight(insight)
2444
+ chunks: insight.chunks
2445
+ fontes: insight.sources
2446
+ ]
2447
+ metadados: {same structure}
2448
+
2449
+ # 5. METODOLOGIAS.yaml
2450
+ GENERATE DNA_BASE_PATH/METODOLOGIAS.yaml:
2451
+ versao: "1.0.0"
2452
+ pessoa: SOURCE_PERSON
2453
+ camada: "METODOLOGIAS"
2454
+ total_itens: count(METODOLOGIAS)
2455
+ itens: [
2456
+ FOR each insight in METODOLOGIAS:
2457
+ - id: generate_id("MET", SOURCE_PERSON, index)
2458
+ titulo: insight.titulo
2459
+ descricao: insight.insight
2460
+ etapas: extract_steps(insight)
2461
+ peso: calculate_weight(insight)
2462
+ chunks: insight.chunks
2463
+ fontes: insight.sources
2464
+ ]
2465
+ metadados: {same structure}
2466
+
2467
+ # 6. CONFIG.yaml (metadados e síntese)
2468
+ GENERATE DNA_BASE_PATH/CONFIG.yaml:
2469
+ versao: "1.0.0"
2470
+ pessoa: SOURCE_PERSON
2471
+ nome_canonico: SOURCE_PERSON
2472
+ empresa: extract_company(PERSON_NARRATIVE)
2473
+
2474
+ padroes_comportamentais: extract_patterns(PERSON_NARRATIVE)
2475
+ sintese_narrativa: PERSON_NARRATIVE.narrative
2476
+
2477
+ estatisticas:
2478
+ filosofias: count(FILOSOFIAS)
2479
+ modelos_mentais: count(MODELOS_MENTAIS)
2480
+ heuristicas: count(HEURISTICAS)
2481
+ frameworks: count(FRAMEWORKS)
2482
+ metodologias: count(METODOLOGIAS)
2483
+ total_itens: sum_all
2484
+ peso_medio_geral: calculate_average_weight()
2485
+
2486
+ fontes:
2487
+ processadas: list_sources(PERSON_INSIGHTS)
2488
+ dossier: DOSSIER_PATH
2489
+ chunks_totais: count(unique_chunks)
2490
+
2491
+ metadados:
2492
+ criado_em: NOW()
2493
+ protocolo: "DNA-EXTRACTION-PROTOCOL v1.0"
2494
+ pipeline: "Jarvis v2.1 (automático)"
2495
+ trigger: "densidade >= 3/5"
2496
+
2497
+ changelog:
2498
+ - data: NOW()
2499
+ acao: "Criação automática do DNA"
2500
+ fonte: DOSSIER_PATH
2501
+ itens_adicionados: total_itens
2502
+ versao: "1.0.0"
2503
+
2504
+ # ─────────────────────────────────────────────────────────────────
2505
+ # ESTATÍSTICAS DA EXTRAÇÃO
2506
+ # ─────────────────────────────────────────────────────────────────
2507
+ DNA_CREATE_STATS = {
2508
+ filosofias: count(FILOSOFIAS),
2509
+ modelos_mentais: count(MODELOS_MENTAIS),
2510
+ heuristicas: count(HEURISTICAS),
2511
+ frameworks: count(FRAMEWORKS),
2512
+ metodologias: count(METODOLOGIAS),
2513
+ total: sum_all
2514
+ }
2515
+
2516
+ LOG: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
2517
+ LOG: "🧬 DNA COGNITIVO CRIADO: {SOURCE_PERSON}"
2518
+ LOG: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
2519
+ LOG: ""
2520
+ LOG: "📁 Diretório: {DNA_BASE_PATH}"
2521
+ LOG: ""
2522
+ LOG: "📊 Arquivos gerados:"
2523
+ LOG: " ├─ FILOSOFIAS.yaml ({DNA_CREATE_STATS.filosofias} itens)"
2524
+ LOG: " ├─ MODELOS-MENTAIS.yaml ({DNA_CREATE_STATS.modelos_mentais} itens)"
2525
+ LOG: " ├─ HEURISTICAS.yaml ({DNA_CREATE_STATS.heuristicas} itens)"
2526
+ LOG: " ├─ FRAMEWORKS.yaml ({DNA_CREATE_STATS.frameworks} itens)"
2527
+ LOG: " ├─ METODOLOGIAS.yaml ({DNA_CREATE_STATS.metodologias} itens)"
2528
+ LOG: " └─ CONFIG.yaml (metadados + síntese)"
2529
+ LOG: ""
2530
+ LOG: "📈 Total: {DNA_CREATE_STATS.total} itens extraídos"
2531
+ LOG: "🎯 Trigger: densidade {DOSSIER_DENSITY}/5 >= 3/5"
2532
+ LOG: ""
2533
+ LOG: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
2534
+
2535
+ ELSE:
2536
+ MODE = "SKIP"
2537
+ LOG: "⚠️ Densidade insuficiente para DNA: {SOURCE_PERSON} ({DOSSIER_DENSITY}/5)"
2538
+ LOG: " Mínimo necessário: 3/5"
2539
+ LOG: " Ação: Processar mais materiais desta pessoa"
2540
+
2541
+ ELSE:
2542
+ MODE = "SKIP"
2543
+ LOG: "⚠️ DOSSIER não existe para {SOURCE_PERSON} - DNA não pode ser criado"
2544
+
2545
+ # ─────────────────────────────────────────────────────────────────────────
2546
+ # FASE 2: SE MODE = UPDATE, EXTRAIR NOVOS ELEMENTOS DO DOSSIER
2547
+ # ─────────────────────────────────────────────────────────────────────────
2548
+ IF MODE == "UPDATE":
2549
+
2550
+ # Navegar DOSSIER → NARRATIVES → INSIGHTS → CHUNKS para extração rica
2551
+ DOSSIER_PATH = /knowledge/dossiers/persons/DOSSIER-{SOURCE_PERSON}.md
2552
+ DOSSIER_CONTENT = READ DOSSIER_PATH
2553
+
2554
+ # Extrair elementos por camada (seguindo DNA-EXTRACTION-PROTOCOL)
2555
+ NEW_FILOSOFIAS = extract_filosofias_from_dossier(DOSSIER_CONTENT, SOURCE_ID)
2556
+ NEW_MODELOS = extract_modelos_from_dossier(DOSSIER_CONTENT, SOURCE_ID)
2557
+ NEW_HEURISTICAS = extract_heuristicas_from_dossier(DOSSIER_CONTENT, SOURCE_ID)
2558
+ NEW_FRAMEWORKS = extract_frameworks_from_dossier(DOSSIER_CONTENT, SOURCE_ID)
2559
+ NEW_METODOLOGIAS = extract_metodologias_from_dossier(DOSSIER_CONTENT, SOURCE_ID)
2560
+
2561
+ # Verificar se há novos elementos (não duplicatas)
2562
+ IF any_new_elements_found(NEW_*, CURRENT_DNA):
2563
+
2564
+ # ─────────────────────────────────────────────────────────────────
2565
+ # FASE 3: MERGE COM DNA EXISTENTE
2566
+ # ─────────────────────────────────────────────────────────────────
2567
+ FOR each LAYER in [filosofias, modelos_mentais, heuristicas, frameworks, metodologias]:
2568
+
2569
+ NEW_ITEMS = get_new_items(LAYER)
2570
+ EXISTING_ITEMS = CURRENT_DNA[LAYER]
2571
+
2572
+ FOR each NEW_ITEM in NEW_ITEMS:
2573
+ IF NOT already_exists(NEW_ITEM, EXISTING_ITEMS):
2574
+ APPEND NEW_ITEM to EXISTING_ITEMS
2575
+ LOG: " + Novo item em {LAYER}: {NEW_ITEM.id}"
2576
+
2577
+ # ─────────────────────────────────────────────────────────────────
2578
+ # FASE 4: ATUALIZAR CHANGELOG EM CADA YAML
2579
+ # ─────────────────────────────────────────────────────────────────
2580
+ FOR each LAYER_FILE in [CONFIG, FILOSOFIAS, MODELOS-MENTAIS, HEURISTICAS, FRAMEWORKS, METODOLOGIAS]:
2581
+
2582
+ READ DNA_BASE_PATH/{LAYER_FILE}.yaml
2583
+
2584
+ # Atualizar versão
2585
+ INCREMENT versao minor (e.g., 1.0.0 → 1.1.0)
2586
+
2587
+ # Append changelog
2588
+ APPEND to changelog:
2589
+ - data: "{TODAY}T{NOW}Z"
2590
+ acao: "Atualização via Pipeline JARVIS"
2591
+ source_id: "{SOURCE_ID}"
2592
+ itens_adicionados: {count}
2593
+ versao: "{NEW_VERSION}"
2594
+
2595
+ # Atualizar metadados
2596
+ UPDATE metadados.total_insights_processados += {new_count}
2597
+ APPEND SOURCE_ID to metadados.fontes_utilizadas
2598
+
2599
+ WRITE DNA_BASE_PATH/{LAYER_FILE}.yaml
2600
+
2601
+ DNA_UPDATE_STATS = {
2602
+ filosofias_added: count(NEW_FILOSOFIAS),
2603
+ modelos_added: count(NEW_MODELOS),
2604
+ heuristicas_added: count(NEW_HEURISTICAS),
2605
+ frameworks_added: count(NEW_FRAMEWORKS),
2606
+ metodologias_added: count(NEW_METODOLOGIAS),
2607
+ total_added: sum_all
2608
+ }
2609
+
2610
+ LOG: "✅ DNA Cognitivo atualizado: {SOURCE_PERSON}"
2611
+ LOG: " Filosofias: +{DNA_UPDATE_STATS.filosofias_added}"
2612
+ LOG: " Modelos Mentais: +{DNA_UPDATE_STATS.modelos_added}"
2613
+ LOG: " Heurísticas: +{DNA_UPDATE_STATS.heuristicas_added}"
2614
+ LOG: " Frameworks: +{DNA_UPDATE_STATS.frameworks_added}"
2615
+ LOG: " Metodologias: +{DNA_UPDATE_STATS.metodologias_added}"
2616
+
2617
+ ELSE:
2618
+ LOG: "DNA já contém todos os elementos do {SOURCE_ID} - nenhuma atualização necessária"
2619
+ DNA_UPDATE_STATS = { total_added: 0 }
2620
+
2621
+ # ─────────────────────────────────────────────────────────────────────────
2622
+ # FASE 5: PROPAGAR PARA AGENTES QUE USAM ESTE DNA
2623
+ # ─────────────────────────────────────────────────────────────────────────
2624
+ IF DNA_UPDATE_STATS.total_added > 0:
2625
+
2626
+ # Encontrar agentes que referenciam este DNA
2627
+ AGENTS_USING_DNA = []
2628
+ SCAN /agents/cargo/**/DNA-CONFIG.yaml for references to SOURCE_PERSON
2629
+
2630
+ FOR each AGENT_CONFIG in matching configs:
2631
+ AGENT_NAME = extract_agent_name(AGENT_CONFIG)
2632
+ AGENTS_USING_DNA.append(AGENT_NAME)
2633
+
2634
+ IF AGENTS_USING_DNA not empty:
2635
+ LOG: "Agentes que usam DNA de {SOURCE_PERSON}: {AGENTS_USING_DNA}"
2636
+ LOG: "💡 Considere atualizar seções DNA HÍBRIDO nos AGENT.md correspondentes"
2637
+
2638
+ # Nota: DNA_CREATE_STATS é populado quando MODE = "CREATE" (extração automática)
2639
+ # Se MODE = "CREATE", também propagar para agentes
2640
+ ELSE IF MODE == "CREATE" AND DNA_CREATE_STATS.total > 0:
2641
+ # Encontrar agentes que podem usar este novo DNA
2642
+ LOG: "🔍 Verificando agentes que podem usar DNA de {SOURCE_PERSON}..."
2643
+
2644
+ # Listar agentes em /agents/cargo que têm DNA-CONFIG.yaml
2645
+ POTENTIAL_AGENTS = SCAN /agents/cargo/**/DNA-CONFIG.yaml
2646
+
2647
+ IF POTENTIAL_AGENTS not empty:
2648
+ LOG: "💡 Agentes potenciais para integrar DNA de {SOURCE_PERSON}:"
2649
+ FOR each AGENT in POTENTIAL_AGENTS:
2650
+ LOG: " → {AGENT}"
2651
+
2652
+ ═══════════════════════════════════════════════════════════════════════════
2653
+ 8.1.9 - SOUL.md AUTO-UPDATE (Identidade Viva)
2654
+ ═══════════════════════════════════════════════════════════════════════════
2655
+
2656
+ > **Template:** `/agents/protocols/SOUL-TEMPLATE.md`
2657
+ > **Trigger:** Novo material processado de pessoa com SOUL existente OU agente impactado
2658
+ > **Output:** SOUL.md atualizado com evolucao documentada
2659
+
2660
+ LOG: "Verificando necessidade de atualizacao de SOUL.md..."
2661
+
2662
+ # ─────────────────────────────────────────────────────────────────────────
2663
+ # FASE 1: VERIFICAR SOULs EXISTENTES QUE PRECISAM ATUALIZACAO
2664
+ # ─────────────────────────────────────────────────────────────────────────
2665
+
2666
+ # Para PESSOA (agente isolado)
2667
+ PERSON_SOUL_PATH = /agents/persons/{SOURCE_PERSON}/SOUL.md
2668
+
2669
+ IF PERSON_SOUL_PATH exists:
2670
+ LOG: "SOUL de pessoa encontrado: {SOURCE_PERSON}"
2671
+
2672
+ READ PERSON_SOUL_PATH as PERSON_SOUL
2673
+
2674
+ # Extrair insights HIGH priority para integrar
2675
+ HIGH_INSIGHTS = filter(INSIGHTS_STATE where source_id == SOURCE_ID AND priority == "HIGH")
2676
+
2677
+ IF HIGH_INSIGHTS not empty:
2678
+ # Atualizar seção "COMO EVOLUI" com novo marco
2679
+ LOCATE section "## ◆ COMO EVOLUI"
2680
+ FIND last version number (e.g., v2.4)
2681
+ NEW_VERSION = increment_minor(last_version) # v2.5
2682
+
2683
+ # Adicionar novo marco na timeline
2684
+ APPEND to timeline:
2685
+ ```
2686
+ {TODAY} │ {EVOLUTION_TITLE} (v{NEW_VERSION})
2687
+ │ Via: {SOURCE_ID}
2688
+ │ {summary_of_new_insights}
2689
+ ```
2690
+
2691
+ # Integrar novos insights na narrativa "QUEM SOU EU"
2692
+ # NAO adicionar como lista - INTEGRAR na voz do agente
2693
+ FOR each INSIGHT in HIGH_INSIGHTS:
2694
+ IF INSIGHT adds new perspective:
2695
+ APPEND paragraph to "QUEM SOU EU" with [v{NEW_VERSION}] marker
2696
+
2697
+ # Atualizar header
2698
+ UPDATE "Ultima evolucao:" to {TODAY}
2699
+ UPDATE "Versao:" to {NEW_VERSION}
2700
+
2701
+ WRITE PERSON_SOUL_PATH
2702
+ LOG: "✅ SOUL atualizado: {SOURCE_PERSON} → v{NEW_VERSION}"
2703
+
2704
+ # ─────────────────────────────────────────────────────────────────────────
2705
+ # FASE 2: CRITERIOS DE RELEVANCIA POR AGENTE HIBRIDO
2706
+ # ─────────────────────────────────────────────────────────────────────────
2707
+
2708
+ # DEFINICAO: relevant_to(AGENT) - Quando um insight impacta um agente hibrido
2709
+ #
2710
+ # O insight deve conter keywords/temas que pertencem ao DOMINIO FUNCIONAL do agente.
2711
+ # Se insight e sobre filosofia pessoal/lifestyle, NAO impacta hibridos.
2712
+
2713
+ RELEVANCE_CRITERIA = {
2714
+ "closer": {
2715
+ "temas": ["02-PROCESSO-VENDAS", "07-PRICING"],
2716
+ "keywords": ["closing", "fechamento", "objecao", "pitch", "tonality",
2717
+ "commitment", "tie-down", "discovery", "call", "venda",
2718
+ "price", "preco", "negociacao", "frame", "conviction"]
2719
+ },
2720
+ "BDR": {
2721
+ "temas": ["01-ESTRUTURA-TIME", "06-FUNIL-APLICACAO"],
2722
+ "keywords": ["prospeccao", "outbound", "cold call", "lista", "ICP",
2723
+ "qualificacao", "lead", "script", "cadencia", "SDR"]
2724
+ },
2725
+ "SDS": {
2726
+ "temas": ["02-PROCESSO-VENDAS", "06-FUNIL-APLICACAO"],
2727
+ "keywords": ["discovery", "qualificacao", "pain", "need", "SPIN",
2728
+ "setter", "agendamento", "triagem", "filtro"]
2729
+ },
2730
+ "LNS": {
2731
+ "temas": ["06-FUNIL-APLICACAO", "10-CULTURA"],
2732
+ "keywords": ["nurture", "follow-up", "show rate", "confirmacao",
2733
+ "reengajamento", "sales farming", "warming"]
2734
+ },
2735
+ "SALES-MANAGER": {
2736
+ "temas": ["01-ESTRUTURA-TIME", "09-GESTAO", "03-CONTRATACAO"],
2737
+ "keywords": ["gestao", "time", "contratacao", "coaching", "1:1",
2738
+ "QC", "pipeline review", "forecast", "scaling", "hiring"]
2739
+ },
2740
+ "CRO": {
2741
+ "temas": ["01-ESTRUTURA-TIME", "07-PRICING", "05-METRICAS"],
2742
+ "keywords": ["revenue", "estrategia", "oferta", "pricing", "escala",
2743
+ "unit economics", "CAC", "LTV", "ROAS"]
2744
+ },
2745
+ "CFO": {
2746
+ "temas": ["04-COMISSIONAMENTO", "05-METRICAS", "07-PRICING"],
2747
+ "keywords": ["financeiro", "margem", "comissao", "OTE", "custo",
2748
+ "budget", "P&L", "cash", "compensation"]
2749
+ },
2750
+ "CMO": {
2751
+ "temas": ["06-FUNIL-APLICACAO", "10-CULTURA"],
2752
+ "keywords": ["marketing", "posicionamento", "ICP", "messaging",
2753
+ "copy", "ad", "funil", "trafego", "lead gen"]
2754
+ },
2755
+ "COO": {
2756
+ "temas": ["01-ESTRUTURA-TIME", "10-CULTURA"],
2757
+ "keywords": ["operacoes", "processo", "delivery", "fulfillment",
2758
+ "employee", "cultura", "onboarding", "DIY", "DWY", "DFY"]
2759
+ },
2760
+ "CUSTOMER-SUCCESS": {
2761
+ "temas": ["10-CULTURA", "05-METRICAS"],
2762
+ "keywords": ["CS", "churn", "NPS", "retencao", "upsell", "health score",
2763
+ "onboarding cliente", "success", "LTV"]
2764
+ }
2765
+ }
2766
+
2767
+ # Funcao: relevant_to(AGENT)
2768
+ # Retorna TRUE se insight.temas intersecta com AGENT.temas
2769
+ # OU se insight.text contem keywords do AGENT
2770
+ FUNCTION relevant_to(AGENT, INSIGHT):
2771
+ agent_criteria = RELEVANCE_CRITERIA[AGENT]
2772
+
2773
+ # Verificar por tema
2774
+ IF any(tema in agent_criteria.temas for tema in INSIGHT.temas):
2775
+ RETURN TRUE
2776
+
2777
+ # Verificar por keyword
2778
+ insight_text = INSIGHT.insight.lower()
2779
+ IF any(keyword in insight_text for keyword in agent_criteria.keywords):
2780
+ RETURN TRUE
2781
+
2782
+ RETURN FALSE
2783
+
2784
+ # ─────────────────────────────────────────────────────────────────────────
2785
+ # FASE 3: ATUALIZAR SOULs DE AGENTES HIBRIDOS (SE RELEVANTE)
2786
+ # ─────────────────────────────────────────────────────────────────────────
2787
+
2788
+ # Para AGENTES HIBRIDOS impactados
2789
+ FOR each AGENT in agents_impacted:
2790
+
2791
+ AGENT_SOUL_PATH = /agents/cargo/{category}/{AGENT}/SOUL.md
2792
+
2793
+ IF AGENT_SOUL_PATH exists:
2794
+ LOG: "SOUL de agente encontrado: {AGENT}"
2795
+
2796
+ READ AGENT_SOUL_PATH as AGENT_SOUL
2797
+
2798
+ # Extrair insights relevantes para este agente (usando criterios explicitos)
2799
+ RELEVANT_INSIGHTS = filter(INSIGHTS_STATE where relevant_to(AGENT, insight))
2800
+
2801
+ IF RELEVANT_INSIGHTS not empty:
2802
+ # Atualizar evolucao
2803
+ LOCATE section "## ◆ COMO EVOLUI"
2804
+ NEW_VERSION = increment_minor(current_version)
2805
+
2806
+ # Adicionar marco
2807
+ APPEND to timeline:
2808
+ ```
2809
+ {TODAY} │ Integracao {SOURCE_PERSON} (v{NEW_VERSION})
2810
+ │ Via: {SOURCE_ID}
2811
+ │ + {count} insights de {SOURCE_PERSON}
2812
+ ```
2813
+
2814
+ # Se houver conflitos/tensoes novas, documentar
2815
+ IF new_tensions_detected:
2816
+ LOCATE section "## ◆ MINHAS TENSOES INTERNAS"
2817
+ APPEND new tension with synthesis
2818
+
2819
+ # Integrar na narrativa (sem listar)
2820
+ APPEND [v{NEW_VERSION}] paragraphs where relevant
2821
+
2822
+ WRITE AGENT_SOUL_PATH
2823
+ LOG: "✅ SOUL atualizado: {AGENT} → v{NEW_VERSION}"
2824
+
2825
+ SOUL_UPDATE_STATS = {
2826
+ person_souls_updated: count,
2827
+ agent_souls_updated: count,
2828
+ new_versions_created: count
2829
+ }
2830
+
2831
+ LOG: "SOUL Auto-Update: {SOUL_UPDATE_STATS}"
2832
+ ```
2833
+
2834
+ ### Step 8.2 - RELATÓRIO PÓS-PIPELINE (OBRIGATÓRIO)
2835
+
2836
+ > ⚠️ **Este relatório DEVE ser exibido ao final de TODA execução do pipeline.**
2837
+ > **Propósito:** Dar visibilidade total sobre o que foi feito, pulado, e pode ser incrementado.
2838
+
2839
+ ```
2840
+ ═══════════════════════════════════════════════════════════════════════════════
2841
+ RELATÓRIO PÓS-PIPELINE: {SOURCE_ID}
2842
+ {DATA} | Pipeline Jarvis v2.1
2843
+ ═══════════════════════════════════════════════════════════════════════════════
2844
+
2845
+ 📦 FONTE PROCESSADA
2846
+ └─ Arquivo: {filename}
2847
+ └─ Pessoa: {SOURCE_PERSON} | Empresa: {SOURCE_COMPANY}
2848
+ └─ Palavras: {WORD_COUNT} | Chunks: {CHUNK_COUNT}
2849
+
2850
+ ═══════════════════════════════════════════════════════════════════════════════
2851
+ ✅ O QUE FOI EXECUTADO
2852
+ ═══════════════════════════════════════════════════════════════════════════════
2853
+
2854
+ ┌──────────────────────────────────┬────────┬─────────────────────────────────┐
2855
+ │ FASE │ STATUS │ RESULTADO │
2856
+ ├──────────────────────────────────┼────────┼─────────────────────────────────┤
2857
+ │ Phase 1: Initialization │ ✅ │ SOURCE_ID={SOURCE_ID} │
2858
+ │ Phase 2: Chunking │ ✅ │ +{N} chunks │
2859
+ │ Phase 3: Entity Resolution │ ✅ │ +{N} entidades, +{N} aliases │
2860
+ │ Phase 4: Insight Extraction │ ✅ │ +{N} insights ({H} HIGH) │
2861
+ │ Phase 5: Narrative Synthesis │ ✅ │ {N} pessoas, {N} temas │
2862
+ │ Phase 6: Dossier Compilation │ ✅ │ DOSSIER-{PESSOA}.md │
2863
+ │ Phase 7.1: MEMORY Auto-Update │ {?} │ {resultado ou "N/A"} │
2864
+ │ Phase 7.2: AGENT Update │ {?} │ {resultado ou "Pulado"} │
2865
+ │ Phase 8.1.1: RAG Index │ {?} │ {resultado ou "N/A"} │
2866
+ │ Phase 8.1.6: SUA-EMPRESA │ {?} │ {resultado ou "N/A"} │
2867
+ │ Phase 8.1.7: Role Discovery │ {?} │ {resultado ou "N/A"} │
2868
+ │ Phase 8.1.8: DNA Auto-Update │ {?} │ {resultado ou "N/A"} │
2869
+ └──────────────────────────────────┴────────┴─────────────────────────────────┘
2870
+
2871
+ Legenda: ✅ = Executado | ⏭️ = Pulado | ❌ = Falhou | ⚠️ = Parcial
2872
+
2873
+ ═══════════════════════════════════════════════════════════════════════════════
2874
+ ⏭️ O QUE FOI PULADO (E POR QUÊ)
2875
+ ═══════════════════════════════════════════════════════════════════════════════
2876
+
2877
+ # Para cada fase pulada, listar:
2878
+
2879
+ ┌──────────────────────────────────┬──────────────────────────────────────────┐
2880
+ │ FASE PULADA │ MOTIVO │
2881
+ ├──────────────────────────────────┼──────────────────────────────────────────┤
2882
+ │ {fase} │ {motivo} │
2883
+ │ Ex: Phase 7.2 AGENT Update │ Usuário não aprovou atualização │
2884
+ │ Ex: Phase 8.1.8 DNA Auto-Update │ Pessoa não tem DNA extraído ainda │
2885
+ │ Ex: Phase 8.1.6 SUA-EMPRESA │ Nenhum insight relevante para ROLEs │
2886
+ └──────────────────────────────────┴──────────────────────────────────────────┘
2887
+
2888
+ SE NENHUMA FASE FOI PULADA:
2889
+ └─ ✅ Todas as fases foram executadas com sucesso.
2890
+
2891
+ ═══════════════════════════════════════════════════════════════════════════════
2892
+ 🔧 O QUE PODE SER INCREMENTADO MANUALMENTE
2893
+ ═══════════════════════════════════════════════════════════════════════════════
2894
+
2895
+ # Lista de ações que o usuário pode fazer para completar o que foi pulado:
2896
+
2897
+ ┌─────────────────────────────────────────────────────────────────────────────┐
2898
+ │ AÇÃO │ COMANDO/ARQUIVO │
2899
+ ├──────────────────────────────────┼──────────────────────────────────────────┤
2900
+ │ Atualizar AGENT-*.md │ Editar /agents/cargo/.../AGENT.md │
2901
+ │ com novos frameworks │ Adicionar seções de {SOURCE_ID} │
2902
+ ├──────────────────────────────────┼──────────────────────────────────────────┤
2903
+ │ Extrair DNA Cognitivo │ /extract-dna "{SOURCE_PERSON}" │
2904
+ │ (se pessoa não tem DNA) │ │
2905
+ ├──────────────────────────────────┼──────────────────────────────────────────┤
2906
+ │ Criar novo agente │ /create-agent "{ROLE_NAME}" │
2907
+ │ (se threshold atingido) │ Threshold atual: {N}/10 │
2908
+ ├──────────────────────────────────┼──────────────────────────────────────────┤
2909
+ │ Atualizar SUA-EMPRESA ROLEs │ Editar /agents/sua-empresa/roles/... │
2910
+ │ manualmente │ Adicionar técnicas de {SOURCE_ID} │
2911
+ └─────────────────────────────────────────────────────────────────────────────┘
2912
+
2913
+ SE NADA PRECISA SER FEITO:
2914
+ └─ ✅ Pipeline 100% completo. Nenhuma ação manual necessária.
2915
+
2916
+ ═══════════════════════════════════════════════════════════════════════════════
2917
+ 📁 ARQUIVOS MODIFICADOS
2918
+ ═══════════════════════════════════════════════════════════════════════════════
2919
+
2920
+ processing/
2921
+ ├─ chunks/CHUNKS-STATE.json (+{N} linhas)
2922
+ ├─ insights/INSIGHTS-STATE.json (+{N} linhas)
2923
+ └─ narratives/NARRATIVES-STATE.json (+{N} linhas)
2924
+
2925
+ knowledge/
2926
+ ├─ DOSSIERS/persons/DOSSIER-{PESSOA}.md ({CRIADO|ATUALIZADO})
2927
+ └─ DNA/{PESSOA}/CONFIG.yaml ({ATUALIZADO|N/A})
2928
+
2929
+ agents/
2930
+ ├─ CARGO/.../MEMORY.md (+{N} insights)
2931
+ ├─ sua-empresa/roles/ROLE-*.md ({N} ROLEs atualizados)
2932
+ └─ DISCOVERY/role-tracking.md (+1 entrada)
2933
+
2934
+ system/
2935
+ └─ SESSION-STATE.md (ATUALIZADO)
2936
+
2937
+ ═══════════════════════════════════════════════════════════════════════════════
2938
+ 🔴 ALERTAS E THRESHOLDS
2939
+ ═══════════════════════════════════════════════════════════════════════════════
2940
+
2941
+ NOVOS AGENTES CRIADOS:
2942
+ └─ {list or "Nenhum"}
2943
+
2944
+ ROLES PRÓXIMOS DO THRESHOLD (7-9 menções):
2945
+ └─ {list com contagem atual, ex: "Setter: 8/10" or "Nenhum"}
2946
+
2947
+ DNA PENDENTE DE EXTRAÇÃO:
2948
+ └─ {list de pessoas com material suficiente mas sem DNA or "Nenhum"}
2949
+
2950
+ ═══════════════════════════════════════════════════════════════════════════════
2951
+ ```
2952
+
2953
+ ### Step 8.3 - Prompt for Next Session
2954
+ ```
2955
+ ===============================================================================
2956
+ 📥 PRÓXIMA SESSÃO
2957
+ ===============================================================================
2958
+
2959
+ Pipeline 100% completo para: $SOURCE_PERSON ($SOURCE_ID)
2960
+
2961
+ ✅ Chunks: {count}
2962
+ ✅ Insights: {count} ({high} HIGH)
2963
+ ✅ Dossiers: {persons} pessoas, {themes} temas
2964
+ ✅ Agentes: {agents_updated} atualizados
2965
+ ✅ RAG: Indexado
2966
+ ✅ Registry: Registrado
2967
+
2968
+ Deseja processar outro arquivo agora?
2969
+
2970
+ Se sim, forneça:
2971
+ - Caminho local: /process-jarvis inbox/PASTA/arquivo.txt
2972
+ - YouTube URL: Cole a URL e processarei o transcript
2973
+
2974
+ Se não, o sistema está pronto para:
2975
+ - /rag-search "query" - Busca semântica
2976
+ - Consulta a agentes específicos (já enriquecidos com CG004)
2977
+
2978
+ ===============================================================================
2979
+ ```
2980
+
2981
+ ### Step 8.4 - Handle Response
2982
+ ```
2983
+ IF user provides path or URL:
2984
+ -> IF YouTube URL:
2985
+ -> Fetch transcript via youtube-transcript-api
2986
+ -> Save to appropriate inbox/ folder
2987
+ -> RESTART pipeline from PHASE 1 with new file
2988
+ -> IF local path:
2989
+ -> RESTART pipeline from PHASE 1 with provided path
2990
+
2991
+ IF user declines or asks something else:
2992
+ -> Respond normally to their request
2993
+ -> System remains ready for future /process-jarvis calls
2994
+ ```
2995
+
2996
+ ---
2997
+
2998
+ ## 📚 REFERÊNCIAS
2999
+
3000
+ | Documento | Propósito |
3001
+ |-----------|-----------|
3002
+ | `PIPELINE-JARVIS-v2.1.md` | Especificação master do pipeline |
3003
+ | `ENFORCEMENT.md` | Regras de bloqueio e validação |
3004
+ | `CHECKPOINT-ENFORCEMENT.md` | Mapa de dependências entre etapas |
3005
+ | `LOG-TEMPLATES.md` | Templates para logs de execução |
3006
+ | `DOSSIER-COMPILATION-PROTOCOL.md` | Protocolo de compilação de dossiês |
3007
+ | `SOURCES-COMPILATION-PROTOCOL.md` | Protocolo de compilação de sources |
3008
+ | **`NARRATIVE-METABOLISM-PROTOCOL.md`** | **Estrutura narrativa obrigatória para DOSSIERS e SOURCES** |
3009
+ | **`CORTEX-PROTOCOL.md`** | **Governança sistêmica - garante integração de novos protocolos** |
3010
+ | **`WAR-ROOM-DEBATE-PROTOCOL.md`** | **Debate explícito entre agentes em decisões complexas (NIVEL 3+)** |
3011
+
3012
+ ---
3013
+
3014
+ ## CHANGELOG
3015
+
3016
+ | Versão | Data | Mudanças |
3017
+ |--------|------|----------|
3018
+ | 2.2.2 | 2025-12-28 | **INTELLIGENT LOGS SYSTEM** - Steps 8.7 (Cross-Batch Analysis), 8.8 (Executive Briefing), 8.9 (Batch History Update) adicionados. Step 8.7 anterior renomeado para 8.10 (Final Status). Sistema de logs inteligentes com comparação histórica, briefings didáticos e tracking persistente |
3019
+ | 2.2.1 | 2025-12-28 | **DNA COGNITIVO AUTO-CREATE** - Phase 8.1.8 agora CRIA DNA automaticamente quando densidade >= 3/5 (removido trigger arbitrário de "2+ fontes") |
3020
+ | 2.2.0 | 2025-12-27 | **RELATÓRIO PÓS-PIPELINE OBRIGATÓRIO** - Step 8.2 reformulado com 4 seções: O que foi executado, O que foi pulado (e por quê), O que pode ser incrementado manualmente, Alertas e thresholds |
3021
+ | 2.1.2 | 2025-12-22 | Integração WAR-ROOM-DEBATE-PROTOCOL para decisões multi-agente |
3022
+ | 2.1.0 | 2025-12-18 | Consolidação 9→8 fases, enforcement integrado, logs obrigatórios |
3023
+ | 2.0.0 | 2025-12-16 | Pipeline BATCH, checkpoints PRE |
3024
+ | 1.0.0 | 2025-12-15 | Versão inicial |
3025
+
3026
+ ---
3027
+
3028
+ ## EXECUTION START
3029
+
3030
+ ```
3031
+ Ready to process: $ARGUMENTS
3032
+ Beginning PHASE 1: INITIALIZATION...
3033
+
3034
+ ⛔ ENFORCEMENT: Ver /agents/protocols/ENFORCEMENT.md
3035
+ 📋 LOGGING: Ver /agents/protocols/LOG-TEMPLATES.md
3036
+ ```