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,435 @@
1
+ # ENFORCEMENT RULES
2
+ ## Regras que Impedem Atalhos no Pipeline Jarvis v2.1
3
+
4
+ > **Versão:** 2.0.0
5
+ > **Atualizado:** 2025-12-18
6
+ > **Propósito:** Bloquear execução sem pré-requisitos + garantir integridade
7
+
8
+ ---
9
+
10
+ ## VISÃO GERAL
11
+
12
+ O sistema de **Enforcement** garante que o pipeline seja executado **completamente**, sem atalhos que comprometam a integridade dos dados.
13
+
14
+ ---
15
+
16
+ ## O PROBLEMA DOS ATALHOS
17
+
18
+ ### O Que São Atalhos?
19
+
20
+ Atalhos ocorrem quando o pipeline pula fases, resultando em:
21
+
22
+ ```
23
+ ATALHO (ERRADO):
24
+ Transcript → [Leitura direta] → THEMES/*.md ou DOSSIER/*.md → MEMORYs
25
+ ⬇️
26
+ SEM chunks, SEM canonical, SEM insights-state, SEM narratives
27
+
28
+ PIPELINE CORRETO:
29
+ Transcript → Chunks → Entities → Insights → Narratives → DOSSIER → MEMORYs
30
+ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️
31
+ STATE FILE STATE FILE STATE FILE STATE FILE RASTREÁVEL
32
+ ```
33
+
34
+ ### Consequências dos Atalhos
35
+
36
+ | Consequência | Impacto |
37
+ |--------------|---------|
38
+ | State files vazios | Não é possível rastrear o que foi processado |
39
+ | Sem chunk_ids | Não é possível citar fontes |
40
+ | Sem canonicalização | Entidades duplicadas/inconsistentes |
41
+ | DOSSIERs incompletos | Agentes consultam informação parcial |
42
+ | MEMORYs sem referência | Conhecimento sem fonte verificável |
43
+
44
+ ---
45
+
46
+ ## REGRAS DE ENFORCEMENT
47
+
48
+ ### REGRA 1: Bloqueio de Escrita Direta
49
+
50
+ **Antes de criar/modificar arquivos em `/knowledge/`, verificar:**
51
+
52
+ ```python
53
+ def enforce_before_knowledge_write(target_path, source_id):
54
+ """
55
+ BLOQUEIA escrita em /knowledge/ se pipeline não foi executado
56
+ """
57
+
58
+ # 1. Verificar se chunks existem para este source_id
59
+ chunks_state = load_json("/processing/chunks/CHUNKS-STATE.json")
60
+ source_chunks = [c for c in chunks_state["chunks"] if c["meta"]["source_id"] == source_id]
61
+
62
+ if len(source_chunks) == 0:
63
+ raise EnforcementError(
64
+ code="NO_CHUNKS",
65
+ message=f"Não é possível escrever em {target_path}. "
66
+ f"Source {source_id} não tem chunks em CHUNKS-STATE.json. "
67
+ f"Execute o pipeline completo primeiro.",
68
+ action="run /process-jarvis"
69
+ )
70
+
71
+ # 2. Verificar se insights existem
72
+ insights_state = load_json("/processing/insights/INSIGHTS-STATE.json")
73
+ has_insights = any(
74
+ source_id in [i["source"]["id"] for i in person_insights]
75
+ for person_insights in insights_state["insights_state"]["persons"].values()
76
+ )
77
+
78
+ if not has_insights:
79
+ raise EnforcementError(
80
+ code="NO_INSIGHTS",
81
+ message=f"Não é possível escrever em {target_path}. "
82
+ f"Source {source_id} não tem insights em INSIGHTS-STATE.json. "
83
+ f"Execute o pipeline completo primeiro.",
84
+ action="run /process-jarvis"
85
+ )
86
+
87
+ # 3. Verificar se narrativa existe (para DOSSIERs)
88
+ if "dossiers" in target_path:
89
+ narratives_state = load_json("/processing/narratives/NARRATIVES-STATE.json")
90
+ person_name = extract_person_from_path(target_path)
91
+
92
+ if person_name not in narratives_state["narratives_state"]["persons"]:
93
+ raise EnforcementError(
94
+ code="NO_NARRATIVE",
95
+ message=f"Não é possível criar DOSSIER para {person_name}. "
96
+ f"Narrativa não existe em NARRATIVES-STATE.json. "
97
+ f"Execute o pipeline completo primeiro.",
98
+ action="run /process-jarvis"
99
+ )
100
+
101
+ # Se passou todas as verificações, permite escrita
102
+ return True
103
+ ```
104
+
105
+ ---
106
+
107
+ ### REGRA 2: Checkpoints Bloqueantes
108
+
109
+ **Após cada fase crítica, verificar antes de continuar:**
110
+
111
+ ```python
112
+ CHECKPOINTS = {
113
+ "PHASE_2": {
114
+ "verify": lambda ctx: len(ctx.new_chunks) > 0,
115
+ "error": "Phase 2 não produziu chunks",
116
+ "action": "EXIT"
117
+ },
118
+ "PHASE_3": {
119
+ "verify": lambda ctx: ctx.source_person in ctx.canonical_map["persons"],
120
+ "error": "SOURCE_PERSON não foi canonicalizada",
121
+ "action": "WARN" # Warning mas continua
122
+ },
123
+ "PHASE_4": {
124
+ "verify": lambda ctx: (
125
+ ctx.source_person in ctx.insights_state["persons"] and
126
+ len(ctx.insights_state["persons"][ctx.source_person]) > 0
127
+ ),
128
+ "error": "Phase 4 não produziu insights",
129
+ "action": "EXIT"
130
+ },
131
+ "PHASE_5": {
132
+ "verify": lambda ctx: (
133
+ ctx.source_person in ctx.narratives_state["persons"] and
134
+ len(ctx.narratives_state["persons"][ctx.source_person]["narrative"]) > 100
135
+ ),
136
+ "error": "Phase 5 não produziu narrativa",
137
+ "action": "EXIT"
138
+ },
139
+ "PHASE_6": {
140
+ "verify": lambda ctx: exists(f"/knowledge/dossiers/persons/DOSSIER-{ctx.source_person}.md"),
141
+ "error": "Phase 6 não criou DOSSIER",
142
+ "action": "EXIT"
143
+ },
144
+ "PHASE_7": {
145
+ "verify": lambda ctx: all([
146
+ ctx.chunks_verified,
147
+ ctx.canonical_verified,
148
+ ctx.insights_verified,
149
+ ctx.narratives_verified,
150
+ ctx.dossier_verified,
151
+ ctx.memory_verified,
152
+ ctx.rag_verified,
153
+ ctx.registry_verified,
154
+ ctx.session_verified
155
+ ]),
156
+ "error": "Verification checklist falhou",
157
+ "action": "EXIT"
158
+ }
159
+ }
160
+
161
+ def run_checkpoint(phase_id, context):
162
+ """
163
+ Executa checkpoint e bloqueia se falhar
164
+ """
165
+ checkpoint = CHECKPOINTS[phase_id]
166
+
167
+ if not checkpoint["verify"](context):
168
+ if checkpoint["action"] == "EXIT":
169
+ raise CheckpointError(
170
+ phase=phase_id,
171
+ message=checkpoint["error"],
172
+ context=context.to_dict()
173
+ )
174
+ elif checkpoint["action"] == "WARN":
175
+ log_warning(f"[{phase_id}] {checkpoint['error']}")
176
+
177
+ log_success(f"✓ CHECKPOINT {phase_id}: OK")
178
+ ```
179
+
180
+ ---
181
+
182
+ ### REGRA 3: Validação de Integridade dos State Files
183
+
184
+ **Antes de cada operação, verificar integridade:**
185
+
186
+ ```python
187
+ def validate_state_files():
188
+ """
189
+ Valida que todos os state files estão íntegros e consistentes
190
+ """
191
+ errors = []
192
+
193
+ # 1. CHUNKS-STATE deve ter estrutura válida
194
+ chunks = load_json("/processing/chunks/CHUNKS-STATE.json")
195
+ if "chunks" not in chunks and "sources" not in chunks:
196
+ errors.append("CHUNKS-STATE.json com estrutura inválida")
197
+
198
+ # 2. CANONICAL-MAP deve ter estrutura válida
199
+ canonical = load_json("/processing/canonical/CANONICAL-MAP.json")
200
+ if "entities" not in canonical:
201
+ errors.append("CANONICAL-MAP.json com estrutura inválida")
202
+
203
+ # 3. INSIGHTS-STATE deve ter estrutura válida
204
+ insights = load_json("/processing/insights/INSIGHTS-STATE.json")
205
+ if "categories" not in insights and "insights_state" not in insights:
206
+ errors.append("INSIGHTS-STATE.json com estrutura inválida")
207
+
208
+ # 4. NARRATIVES-STATE deve ter estrutura válida
209
+ narratives = load_json("/processing/narratives/NARRATIVES-STATE.json")
210
+ if "persons" not in narratives and "themes" not in narratives:
211
+ errors.append("NARRATIVES-STATE.json com estrutura inválida")
212
+
213
+ # 5. Cross-validation: insights devem referenciar chunks existentes
214
+ # (implementar conforme necessidade)
215
+
216
+ if errors:
217
+ raise IntegrityError(errors)
218
+
219
+ return True
220
+ ```
221
+
222
+ ---
223
+
224
+ ### REGRA 4: Auditoria de Operações
225
+
226
+ **Toda operação deve ser logada:**
227
+
228
+ ```python
229
+ AUDIT_LOG_PATH = "/logs/AUDIT/audit.jsonl"
230
+
231
+ def audit_operation(operation_type, details):
232
+ """
233
+ Loga toda operação para auditoria
234
+ """
235
+ entry = {
236
+ "timestamp": datetime.now().isoformat(),
237
+ "operation": operation_type,
238
+ "details": details,
239
+ "checksum": compute_checksum(details)
240
+ }
241
+
242
+ append_jsonl(AUDIT_LOG_PATH, entry)
243
+
244
+ # Operações auditadas
245
+ AUDITED_OPERATIONS = [
246
+ "CHUNK_CREATE",
247
+ "ENTITY_RESOLVE",
248
+ "INSIGHT_EXTRACT",
249
+ "NARRATIVE_SYNTHESIZE",
250
+ "DOSSIER_CREATE",
251
+ "DOSSIER_UPDATE",
252
+ "MEMORY_UPDATE",
253
+ "RAG_INDEX",
254
+ "STATE_FILE_WRITE"
255
+ ]
256
+ ```
257
+
258
+ ---
259
+
260
+ ### REGRA 5: Proteção Contra Sobrescrita
261
+
262
+ **Nunca sobrescrever, sempre fazer merge incremental:**
263
+
264
+ ```python
265
+ def safe_write_state_file(path, new_data, merge_strategy):
266
+ """
267
+ Escreve em state file com proteção contra perda de dados
268
+ """
269
+
270
+ # 1. Backup do estado atual
271
+ if exists(path):
272
+ current = load_json(path)
273
+ backup_path = f"{path}.backup.{datetime.now().strftime('%Y%m%d%H%M%S')}"
274
+ write_json(backup_path, current)
275
+ else:
276
+ current = create_empty_state(path)
277
+
278
+ # 2. Merge incremental (nunca substituição total)
279
+ if merge_strategy == "APPEND":
280
+ merged = deep_merge_append(current, new_data)
281
+ elif merge_strategy == "UPDATE":
282
+ merged = deep_merge_update(current, new_data)
283
+ else:
284
+ raise ValueError(f"Estratégia de merge inválida: {merge_strategy}")
285
+
286
+ # 3. Atualizar metadata
287
+ merged["meta"]["last_updated"] = datetime.now().isoformat()
288
+ merged["meta"]["version"] = current["meta"].get("version", 0) + 1
289
+
290
+ # 4. Validar integridade antes de escrever
291
+ validate_state_structure(merged, path)
292
+
293
+ # 5. Escrever
294
+ write_json(path, merged)
295
+
296
+ # 6. Auditar
297
+ audit_operation("STATE_FILE_WRITE", {
298
+ "path": path,
299
+ "strategy": merge_strategy,
300
+ "items_before": count_items(current),
301
+ "items_after": count_items(merged),
302
+ "backup": backup_path
303
+ })
304
+
305
+ return merged
306
+ ```
307
+
308
+ ---
309
+
310
+ ## MATRIZ DE ENFORCEMENT
311
+
312
+ | Operação | Verificação Requerida | Ação se Falhar |
313
+ |----------|----------------------|----------------|
314
+ | Criar DOSSIER pessoa | Narrativa existe | BLOQUEAR |
315
+ | Criar DOSSIER tema | 2+ pessoas no tema | SKIP com log |
316
+ | Atualizar MEMORY | DOSSIER correspondente existe | BLOQUEAR |
317
+ | Criar arquivo em THEMES/ | Chunks existem | BLOQUEAR |
318
+ | Indexar no RAG | Arquivo foi gerado pelo pipeline | WARN |
319
+ | Avançar Phase 3→4 | Checkpoint Phase 2 passou | BLOQUEAR |
320
+ | Avançar Phase 4→5 | Checkpoint Phase 4 passou | BLOQUEAR |
321
+ | Avançar Phase 5→6 | Checkpoint Phase 5 passou | BLOQUEAR |
322
+ | Avançar Phase 6→7 | Checkpoint Phase 6 passou | BLOQUEAR |
323
+ | Finalizar pipeline | Todos os 9 itens do checklist | BLOQUEAR |
324
+
325
+ ---
326
+
327
+ ## MENSAGENS DE ERRO
328
+
329
+ ### Formato Padrão
330
+
331
+ ```
332
+ ┌───────────────────────────────────────────────────────────────────────────────┐
333
+ │ ⛔ ENFORCEMENT ERROR │
334
+ ├───────────────────────────────────────────────────────────────────────────────┤
335
+ │ │
336
+ │ Código: {ERROR_CODE} │
337
+ │ Operação bloqueada: {OPERATION} │
338
+ │ │
339
+ │ Motivo: │
340
+ │ {DETAILED_REASON} │
341
+ │ │
342
+ │ Estado atual: │
343
+ │ {CURRENT_STATE} │
344
+ │ │
345
+ │ Para resolver: │
346
+ │ {RESOLUTION_COMMAND} │
347
+ │ │
348
+ └───────────────────────────────────────────────────────────────────────────────┘
349
+ ```
350
+
351
+ ### Exemplo Real
352
+
353
+ ```
354
+ ┌───────────────────────────────────────────────────────────────────────────────┐
355
+ │ ⛔ ENFORCEMENT ERROR │
356
+ ├───────────────────────────────────────────────────────────────────────────────┤
357
+ │ │
358
+ │ Código: NO_CHUNKS │
359
+ │ Operação bloqueada: Criar DOSSIER-Jeremy-Haynes.md │
360
+ │ │
361
+ │ Motivo: │
362
+ │ Não é possível criar DOSSIER para Jeremy Haynes. │
363
+ │ Source JH001 não tem chunks em CHUNKS-STATE.json. │
364
+ │ O material não passou pelas fases 2-5 do pipeline. │
365
+ │ │
366
+ │ Estado atual: │
367
+ │ - CHUNKS-STATE.json: 0 chunks para JH001 │
368
+ │ - INSIGHTS-STATE.json: Jeremy Haynes não existe │
369
+ │ - NARRATIVES-STATE.json: Jeremy Haynes não existe │
370
+ │ │
371
+ │ Para resolver: │
372
+ │ /process-jarvis inbox/JEREMY\ HAYNES/PODCASTS/recurring-high-ticket.txt │
373
+ │ │
374
+ └───────────────────────────────────────────────────────────────────────────────┘
375
+ ```
376
+
377
+ ---
378
+
379
+ ## BYPASS DE EMERGÊNCIA
380
+
381
+ Em casos excepcionais, o enforcement pode ser bypassado com flag explícita:
382
+
383
+ ```bash
384
+ /process-jarvis arquivo.txt --bypass-enforcement --reason "Migração de dados legados"
385
+ ```
386
+
387
+ **IMPORTANTE:**
388
+ - Requer flag `--reason` com justificativa
389
+ - Gera log de auditoria especial
390
+ - Marca o output como "BYPASS" para revisão posterior
391
+ - Deve ser usado APENAS em migrações ou correções
392
+
393
+ ```python
394
+ def handle_bypass(reason):
395
+ """
396
+ Processa bypass de enforcement
397
+ """
398
+ if not reason or len(reason) < 10:
399
+ raise ValueError("--reason deve ter pelo menos 10 caracteres")
400
+
401
+ audit_operation("ENFORCEMENT_BYPASS", {
402
+ "reason": reason,
403
+ "user": get_current_user(),
404
+ "timestamp": datetime.now().isoformat()
405
+ })
406
+
407
+ log_warning(f"⚠️ ENFORCEMENT BYPASS: {reason}")
408
+ log_warning("Outputs serão marcados como BYPASS para revisão")
409
+
410
+ return True
411
+ ```
412
+
413
+ ---
414
+
415
+ ## CHECKLIST DE IMPLEMENTAÇÃO
416
+
417
+ Para implementar o enforcement, o Claude Code deve:
418
+
419
+ - [x] Adicionar verificação antes de escrever em `/knowledge/`
420
+ - [x] Implementar checkpoints após cada fase
421
+ - [x] Criar função de validação de state files
422
+ - [x] Implementar audit log
423
+ - [x] Criar proteção contra sobrescrita
424
+ - [x] Implementar mensagens de erro formatadas
425
+ - [x] Criar flag de bypass para emergências
426
+ - [x] Integrar com logs do pipeline
427
+
428
+ ---
429
+
430
+ ## CHANGELOG
431
+
432
+ | Versão | Data | Mudança |
433
+ |--------|------|---------|
434
+ | 2.0.0 | 2025-12-18 | Versão completa com todas as regras de enforcement |
435
+ | 1.0.0 | 2025-12-18 | Criação inicial (checkpoints básicos) |