grimoire-kit 3.44.2__tar.gz → 3.45.0__tar.gz

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.
Files changed (736) hide show
  1. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/CHANGELOG.md +60 -0
  2. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/PKG-INFO +1 -1
  3. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/pyproject.toml +2 -0
  4. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/registry/kit-file-hashes.json +1 -1
  5. grimoire_kit-3.45.0/rust/grimoire-traces-core/pyproject.toml +18 -0
  6. grimoire_kit-3.45.0/src/grimoire/__version__.py +1 -0
  7. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_flow.py +17 -2
  8. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_setup.py +50 -4
  9. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_task.py +6 -0
  10. grimoire_kit-3.45.0/src/grimoire/flows/blueprint_loader.py +290 -0
  11. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/dispatch_executor.py +126 -5
  12. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/schemas.py +75 -0
  13. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/dispatch.py +240 -20
  14. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/verifiability.py +24 -10
  15. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/proposals.py +221 -24
  16. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/ledger.py +129 -9
  17. grimoire_kit-3.45.0/version.txt +1 -0
  18. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/kanban.html +4 -0
  19. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/executer.js +45 -0
  20. grimoire_kit-3.44.2/src/grimoire/__version__.py +0 -1
  21. grimoire_kit-3.44.2/src/grimoire/flows/blueprint_loader.py +0 -159
  22. grimoire_kit-3.44.2/version.txt +0 -1
  23. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/.gitignore +0 -0
  24. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/LICENSE +0 -0
  25. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/README.md +0 -0
  26. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/_grimoire/_config/custom/prompt-templates/README.md +0 -0
  27. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/agentic-standard/archetype.dna.yaml +0 -0
  28. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/agentic-standard/shared-context.tpl.md +0 -0
  29. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/agents/blender-expert.md +0 -0
  30. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/agents/brand-designer.md +0 -0
  31. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/agents/illustration-expert.md +0 -0
  32. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/archetype.dna.yaml +0 -0
  33. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/shared-context.tpl.md +0 -0
  34. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/skills/creative-content-copywriting.md +0 -0
  35. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/features/vector-memory/vectus.md +0 -0
  36. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/README.md +0 -0
  37. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/agents/fix-loop-orchestrator.tpl.md +0 -0
  38. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/archetype.dna.yaml +0 -0
  39. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/workflows/workflow-closed-loop-fix.tpl.md +0 -0
  40. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/agents/monitoring-specialist.md +0 -0
  41. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/agents/ops-engineer.md +0 -0
  42. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/agents/systems-debugger.md +0 -0
  43. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/archetype.dna.yaml +0 -0
  44. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/shared-context.tpl.md +0 -0
  45. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-backup-dr.md +0 -0
  46. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-k8s-gitops.md +0 -0
  47. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-pipeline-cicd.md +0 -0
  48. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-security-hardening.md +0 -0
  49. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/agents/agent-optimizer.md +0 -0
  50. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/agents/concierge.md +0 -0
  51. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/agents/security-auditor.md +0 -0
  52. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/archetype.dna.yaml +0 -0
  53. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-art-direction.md +0 -0
  54. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-memory-quality.md +0 -0
  55. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-project-navigation.md +0 -0
  56. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-toolsmithing.md +0 -0
  57. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/minimal/agents/custom-agent.tpl.md +0 -0
  58. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/minimal/archetype.dna.yaml +0 -0
  59. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/agents/backend-engineer.md +0 -0
  60. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/agents/platform-architect.md +0 -0
  61. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/archetype.dna.yaml +0 -0
  62. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/shared-context.tpl.md +0 -0
  63. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/skills/platform-deploy-release.md +0 -0
  64. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/skills/platform-reliability-sre.md +0 -0
  65. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/templates/architecture.tpl.md +0 -0
  66. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/agents/stack-engineer.md +0 -0
  67. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/archetype.dna.yaml +0 -0
  68. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-ansible.md +0 -0
  69. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-docker.md +0 -0
  70. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-go.md +0 -0
  71. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-k8s.md +0 -0
  72. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-python.md +0 -0
  73. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-terraform.md +0 -0
  74. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-typescript.md +0 -0
  75. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/agents/fullstack-dev.md +0 -0
  76. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/archetype.dna.yaml +0 -0
  77. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/shared-context.tpl.md +0 -0
  78. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/skills/web-frontend-ux.md +0 -0
  79. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/README.md +0 -0
  80. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/README.md +0 -0
  81. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/activated/README.md +0 -0
  82. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/README.md +0 -0
  83. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/index.html +0 -0
  84. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/package-lock.json +0 -0
  85. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/package.json +0 -0
  86. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/App.tsx +0 -0
  87. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/components/AddTaskForm.tsx +0 -0
  88. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/components/TaskItem.tsx +0 -0
  89. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/components/TaskList.tsx +0 -0
  90. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/main.tsx +0 -0
  91. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/styles.css +0 -0
  92. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/test/AddTaskForm.test.tsx +0 -0
  93. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/test/TaskList.test.tsx +0 -0
  94. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/test/setup.ts +0 -0
  95. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/types.ts +0 -0
  96. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/tsconfig.json +0 -0
  97. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/vite.config.ts +0 -0
  98. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/enforced/README.md +0 -0
  99. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/examples/terraform-houseserver/README.md +0 -0
  100. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/examples/web-app-todo/README.md +0 -0
  101. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/README.md +0 -0
  102. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/artifacts/agents/autogen-conversation-runner.agent.md +0 -0
  103. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/artifacts/skills/autogen-conversation-design/SKILL.md +0 -0
  104. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/extension.json +0 -0
  105. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/scripts/verify-install.sh +0 -0
  106. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/artifacts/agents/browser-use-runner.agent.md +0 -0
  107. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/artifacts/instructions/browser-evidence.instructions.md +0 -0
  108. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/extension.json +0 -0
  109. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/scripts/verify-install.sh +0 -0
  110. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/agents/crewai-crew-runner.agent.md +0 -0
  111. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.json +0 -0
  112. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.sh +0 -0
  113. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/prompts/crewai-import-crew.prompt.md +0 -0
  114. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/skills/crewai-crew-design/SKILL.md +0 -0
  115. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/extension.json +0 -0
  116. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/scripts/register-hooks.sh +0 -0
  117. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/scripts/unregister-hooks.sh +0 -0
  118. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/scripts/verify-install.sh +0 -0
  119. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/extension.schema.json +0 -0
  120. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/artifacts/skills/godot-evidence-loop/SKILL.md +0 -0
  121. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/extension.json +0 -0
  122. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/scripts/setup-mcp.sh +0 -0
  123. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/scripts/teardown-mcp.sh +0 -0
  124. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/scripts/verify-install.sh +0 -0
  125. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/artifacts/instructions/mcp-trust-gate.instructions.md +0 -0
  126. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/artifacts/skills/grimoire-mcp-setup/SKILL.md +0 -0
  127. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/extension.json +0 -0
  128. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/scripts/verify-install.sh +0 -0
  129. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/artifacts/instructions/haystack-rag-governance.instructions.md +0 -0
  130. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/artifacts/skills/haystack-pipeline-design/SKILL.md +0 -0
  131. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/extension.json +0 -0
  132. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/scripts/verify-install.sh +0 -0
  133. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.json +0 -0
  134. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.sh +0 -0
  135. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/instructions/langfuse-observability.instructions.md +0 -0
  136. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/skills/langfuse-tracing-setup/SKILL.md +0 -0
  137. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/extension.json +0 -0
  138. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/scripts/register-hooks.sh +0 -0
  139. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/scripts/unregister-hooks.sh +0 -0
  140. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/scripts/verify-install.sh +0 -0
  141. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/artifacts/agents/langgraph-graph-runner.agent.md +0 -0
  142. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/artifacts/prompts/langgraph-import-graph.prompt.md +0 -0
  143. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/artifacts/skills/langgraph-graph-design/SKILL.md +0 -0
  144. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/extension.json +0 -0
  145. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/scripts/verify-install.sh +0 -0
  146. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/FREEZE.md +0 -0
  147. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-base-compact.md +0 -0
  148. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-base.md +0 -0
  149. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-mesh-network.md +0 -0
  150. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-relationship-graph.md +0 -0
  151. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-rules.md +0 -0
  152. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent2agent.md +0 -0
  153. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-industry-reference.md +0 -0
  154. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/README.md +0 -0
  155. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/capability-map.yaml +0 -0
  156. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/needs-catalog.yaml +0 -0
  157. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/profile-map.yaml +0 -0
  158. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/target-schema.yaml +0 -0
  159. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/acceptance-record.md +0 -0
  160. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/accepted-risks.yaml +0 -0
  161. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/blast-radius-policy.yaml +0 -0
  162. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/browser-tool-contract.yaml +0 -0
  163. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/capability-registry.yaml +0 -0
  164. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/claim-ledger.md +0 -0
  165. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/cluster-action-policy.yaml +0 -0
  166. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/compliance-declaration.md +0 -0
  167. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/compliance-score.yaml +0 -0
  168. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/compression-gate.yaml +0 -0
  169. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/context-contract.yaml +0 -0
  170. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/cost-registry.yaml +0 -0
  171. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/decision-council.yaml +0 -0
  172. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/decision-graph.yaml +0 -0
  173. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/doc-graph-pipeline.yaml +0 -0
  174. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/environment-policy.yaml +0 -0
  175. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/evidence-gates.yaml +0 -0
  176. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/evidence-pack.md +0 -0
  177. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/flow-dsl-manifest.yaml +0 -0
  178. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/guardrail-contract.yaml +0 -0
  179. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/hook-registry.yaml +0 -0
  180. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/incident-registry.yaml +0 -0
  181. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/k8s-agent-manifest.yaml +0 -0
  182. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/knowledge-source-registry.yaml +0 -0
  183. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/llm-provider-registry.yaml +0 -0
  184. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/memory-integrity.yaml +0 -0
  185. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/memory-policy.yaml +0 -0
  186. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/merge-lane.yaml +0 -0
  187. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/mission-brief.md +0 -0
  188. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/observability-policy.yaml +0 -0
  189. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/orchestration-policy.yaml +0 -0
  190. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/pattern-catalog.yaml +0 -0
  191. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/privilege-boundary.yaml +0 -0
  192. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/prompt-firewall.yaml +0 -0
  193. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/prompt-version-log.yaml +0 -0
  194. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/remediation-plan.yaml +0 -0
  195. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/remote-hygiene.yaml +0 -0
  196. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/retention-registry.yaml +0 -0
  197. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/risk-control-matrix.yaml +0 -0
  198. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/rule-packs.yaml +0 -0
  199. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/runtime-provider-contract.yaml +0 -0
  200. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/runtime-surface-registry.yaml +0 -0
  201. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/task-board.yaml +0 -0
  202. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/task-envelope.md +0 -0
  203. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/tool-registry.yaml +0 -0
  204. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/visual-evidence.yaml +0 -0
  205. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/waivers.yaml +0 -0
  206. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/workflow-state-manifest.yaml +0 -0
  207. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/workspace-isolation.yaml +0 -0
  208. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/traceability.yaml +0 -0
  209. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/archetype-dna.schema.yaml +0 -0
  210. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/cc-reference.md +0 -0
  211. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/cc-verify.sh +0 -0
  212. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/context-router.md +0 -0
  213. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/instructions/grimoire-project.instructions.md +0 -0
  214. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-changelog.prompt.md +0 -0
  215. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-dream.prompt.md +0 -0
  216. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-health-check.prompt.md +0 -0
  217. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-pre-push.prompt.md +0 -0
  218. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-self-heal.prompt.md +0 -0
  219. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-session-bootstrap.prompt.md +0 -0
  220. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-status.prompt.md +0 -0
  221. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot-extension/README.md +0 -0
  222. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/cross-validation-trust.md +0 -0
  223. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/delivery-contract.tpl.md +0 -0
  224. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/event-log-shared-state.md +0 -0
  225. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/glossary.yaml +0 -0
  226. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/grimoire-trace.md +0 -0
  227. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/honest-uncertainty-protocol.md +0 -0
  228. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/.pre-commit-config.tpl.yaml +0 -0
  229. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/commit-msg.sh +0 -0
  230. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/mnemo-consolidate.sh +0 -0
  231. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/post-checkout.sh +0 -0
  232. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/post-commit.sh +0 -0
  233. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/pre-commit-cc.sh +0 -0
  234. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/pre-push.sh +0 -0
  235. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/prepare-commit-msg.sh +0 -0
  236. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-doctor.md +0 -0
  237. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-gate.md +0 -0
  238. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-proof.md +0 -0
  239. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-recall.md +0 -0
  240. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-verify.md +0 -0
  241. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/skills/grimoire-agent-dispatch.md +0 -0
  242. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/skills/grimoire-evidence.md +0 -0
  243. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/skills/grimoire-memory.md +0 -0
  244. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hybrid-parallelism-engine.md +0 -0
  245. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/mcp/grimoire-mcp-server.md +0 -0
  246. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/.gitignore +0 -0
  247. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/__init__.py +0 -0
  248. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_lexical.py +0 -0
  249. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_local.py +0 -0
  250. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_ollama.py +0 -0
  251. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_qdrant_local.py +0 -0
  252. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_qdrant_server.py +0 -0
  253. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/contradiction-log.tpl.md +0 -0
  254. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/dependency-graph.tpl.md +0 -0
  255. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/docker-compose.memory-target.tpl.yml +0 -0
  256. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/docker-compose.memory.tpl.yml +0 -0
  257. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/failure-museum.tpl.md +0 -0
  258. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/handoff-log.tpl.md +0 -0
  259. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/k8s-qdrant.tpl.yaml +0 -0
  260. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/maintenance.py +0 -0
  261. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/mem0-bridge.py +0 -0
  262. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/memory_seed.py +0 -0
  263. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/network-topology.tpl.md +0 -0
  264. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/oss-references.tpl.md +0 -0
  265. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements/requirements-minimal.txt +0 -0
  266. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements/requirements-ollama.txt +0 -0
  267. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements/requirements-qdrant.txt +0 -0
  268. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements.txt +0 -0
  269. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/session-save.py +0 -0
  270. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/orchestrator-gateway.md +0 -0
  271. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/productive-conflict-engine.md +0 -0
  272. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/README.md +0 -0
  273. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/audit-report.md +0 -0
  274. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/capacity-planning.md +0 -0
  275. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/compliance-check.md +0 -0
  276. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/dependency-updates.md +0 -0
  277. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/design-tokens.md +0 -0
  278. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/network-troubleshoot.md +0 -0
  279. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/operational-mode.md +0 -0
  280. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/periodic-report.md +0 -0
  281. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/secret-rotation.md +0 -0
  282. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/strategic-plan.md +0 -0
  283. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/troubleshoot.md +0 -0
  284. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/question-escalation-chain.md +0 -0
  285. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/registry/README.md +0 -0
  286. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/selective-huddle-protocol.md +0 -0
  287. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/sessions/README.md +0 -0
  288. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/sil-collect.sh +0 -0
  289. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/README.md +0 -0
  290. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/adversarial-consensus.py +0 -0
  291. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-bench.py +0 -0
  292. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-caller.py +0 -0
  293. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-darwinism.py +0 -0
  294. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-debugger.py +0 -0
  295. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-forge.py +0 -0
  296. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-integrity.py +0 -0
  297. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-test.py +0 -0
  298. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-watch.py +0 -0
  299. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-worker.py +0 -0
  300. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/antifragile-score.py +0 -0
  301. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/auto-doc.py +0 -0
  302. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/context-guard.py +0 -0
  303. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/context-summarizer.py +0 -0
  304. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/cross-migrate.py +0 -0
  305. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/dep-check.py +0 -0
  306. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/distill.py +0 -0
  307. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/dna-evolve.py +0 -0
  308. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/dream.py +0 -0
  309. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/expert-tool-chain.py +0 -0
  310. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/failure-museum.py +0 -0
  311. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/gen-tests.py +0 -0
  312. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/grimoire-completion.zsh +0 -0
  313. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/grimoire-mcp-tools.py +0 -0
  314. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/grimoire-setup.py +0 -0
  315. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/image-prompt.py +0 -0
  316. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/incubator.py +0 -0
  317. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/llm-router.py +0 -0
  318. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/memory-lint.py +0 -0
  319. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/memory-sync.py +0 -0
  320. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/message-bus.py +0 -0
  321. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/nso.py +0 -0
  322. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/observatory.py +0 -0
  323. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/preflight-check.py +0 -0
  324. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/quick-check.sh +0 -0
  325. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/rag-indexer.py +0 -0
  326. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/rag-retriever.py +0 -0
  327. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/reasoning-stream.py +0 -0
  328. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/schema-validator.py +0 -0
  329. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/session-lifecycle.py +0 -0
  330. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy.py +0 -0
  331. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-post-edit.sh +0 -0
  332. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-stop.sh +0 -0
  333. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-sense.sh +0 -0
  334. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy_hook.py +0 -0
  335. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/stigmergy-emit.json +0 -0
  336. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/stigmergy-sense.json +0 -0
  337. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/swarm-consensus.py +0 -0
  338. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/synapse-trace.py +0 -0
  339. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/token-budget.py +0 -0
  340. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/tool-registry.py +0 -0
  341. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/tool-resolver.py +0 -0
  342. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/vision-judge.py +0 -0
  343. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/web-browser.py +0 -0
  344. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/boomerang-orchestration.md +0 -0
  345. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/github-cc-check.yml.tpl +0 -0
  346. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/incident-response.md +0 -0
  347. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/party-mode.md +0 -0
  348. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/repo-map-generator.md +0 -0
  349. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/state-checkpoint.md +0 -0
  350. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/subagent-orchestration.md +0 -0
  351. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/workflow-graph.tpl.yaml +0 -0
  352. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/workflow-status.tpl.md +0 -0
  353. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/planning/README.md +0 -0
  354. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/registry/blueprints/README.md +0 -0
  355. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-dispatch-core/pyproject.toml +0 -0
  356. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-flows-core/pyproject.toml +0 -0
  357. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-hosts-core/pyproject.toml +0 -0
  358. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-policies-core/pyproject.toml +0 -0
  359. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-schema-core/pyproject.toml +0 -0
  360. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/scripts/gen-site-data.py +0 -0
  361. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/__init__.py +0 -0
  362. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/__main__.py +0 -0
  363. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/archetypes/__init__.py +0 -0
  364. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/__init__.py +0 -0
  365. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/a2a_adapter.py +0 -0
  366. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/host.py +0 -0
  367. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/schemas.py +0 -0
  368. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/__init__.py +0 -0
  369. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/_lazy.py +0 -0
  370. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/_shared.py +0 -0
  371. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/app.py +0 -0
  372. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_blueprint.py +0 -0
  373. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_cadrage.py +0 -0
  374. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_cockpit.py +0 -0
  375. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_context_pack.py +0 -0
  376. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_debugger.py +0 -0
  377. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_ext.py +0 -0
  378. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_features.py +0 -0
  379. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_hooks.py +0 -0
  380. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_host.py +0 -0
  381. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_init.py +0 -0
  382. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory.py +0 -0
  383. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_bundle.py +0 -0
  384. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_lexical.py +0 -0
  385. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_ops.py +0 -0
  386. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_projections.py +0 -0
  387. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_shared.py +0 -0
  388. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_merge.py +0 -0
  389. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_migrate.py +0 -0
  390. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_proposals.py +0 -0
  391. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_providers.py +0 -0
  392. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_serve.py +0 -0
  393. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_standard.py +0 -0
  394. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_stigmergy.py +0 -0
  395. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_up.py +0 -0
  396. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_upgrade.py +0 -0
  397. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_web.py +0 -0
  398. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_workflows.py +0 -0
  399. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/updater.py +0 -0
  400. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/__init__.py +0 -0
  401. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/backends/__init__.py +0 -0
  402. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/backends/neo4j.py +0 -0
  403. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/graph.py +0 -0
  404. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/parser.py +0 -0
  405. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/schemas.py +0 -0
  406. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/__init__.py +0 -0
  407. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/agent_freshness.py +0 -0
  408. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/agentic_standard.py +0 -0
  409. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/archetype_resolver.py +0 -0
  410. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/cadrage.py +0 -0
  411. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/claude_activation.py +0 -0
  412. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/config.py +0 -0
  413. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/console_encoding.py +0 -0
  414. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/deprecation.py +0 -0
  415. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/error_codes.py +0 -0
  416. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/exceptions.py +0 -0
  417. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/integrity.py +0 -0
  418. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/kit_hashes.py +0 -0
  419. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/layout.py +0 -0
  420. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/log.py +0 -0
  421. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/merge.py +0 -0
  422. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/needs_suggest.py +0 -0
  423. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/project.py +0 -0
  424. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/project_types.py +0 -0
  425. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/resolver.py +0 -0
  426. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/retry.py +0 -0
  427. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/scaffold.py +0 -0
  428. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/scanner.py +0 -0
  429. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/schema.py +0 -0
  430. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/__init__.py +0 -0
  431. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/base.py +0 -0
  432. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/controls.py +0 -0
  433. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/pattern_codes.py +0 -0
  434. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/registry.py +0 -0
  435. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/verifiers.py +0 -0
  436. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_generation.py +0 -0
  437. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_profile_manifest.py +0 -0
  438. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_state.py +0 -0
  439. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_traceability.py +0 -0
  440. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_upstream.py +0 -0
  441. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/validator.py +0 -0
  442. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/data/__init__.py +0 -0
  443. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/evidence/__init__.py +0 -0
  444. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/evidence/schemas.py +0 -0
  445. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/evidence/service.py +0 -0
  446. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/__init__.py +0 -0
  447. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/engine.py +0 -0
  448. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/executor.py +0 -0
  449. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/__init__.py +0 -0
  450. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/capabilities.py +0 -0
  451. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/collect.py +0 -0
  452. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/__init__.py +0 -0
  453. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/_shared.py +0 -0
  454. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/activation.py +0 -0
  455. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/context_capsule.py +0 -0
  456. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/evidence_gate.py +0 -0
  457. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/evidence_trace.py +0 -0
  458. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/gate_summary.py +0 -0
  459. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/record.py +0 -0
  460. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/subagent_gate.py +0 -0
  461. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/task_context.py +0 -0
  462. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/tool_facts.py +0 -0
  463. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/tool_policy.py +0 -0
  464. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/__init__.py +0 -0
  465. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/base.py +0 -0
  466. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/claude_code.py +0 -0
  467. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/copilot.py +0 -0
  468. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/generic.py +0 -0
  469. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/events.py +0 -0
  470. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/runtime.py +0 -0
  471. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/secrets.py +0 -0
  472. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/surface.py +0 -0
  473. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/sync.py +0 -0
  474. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/mcp/__init__.py +0 -0
  475. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/mcp/server.py +0 -0
  476. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/__init__.py +0 -0
  477. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/architecture.py +0 -0
  478. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/__init__.py +0 -0
  479. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/_qdrant_mixin.py +0 -0
  480. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/base.py +0 -0
  481. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/lexical.py +0 -0
  482. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/local.py +0 -0
  483. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/mempalace.py +0 -0
  484. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/ollama.py +0 -0
  485. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/qdrant.py +0 -0
  486. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/tantivy_local.py +0 -0
  487. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/weaviate.py +0 -0
  488. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/bundle.py +0 -0
  489. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/embedding.py +0 -0
  490. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/hot.py +0 -0
  491. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/manager.py +0 -0
  492. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/migration.py +0 -0
  493. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/neo4j_graph.py +0 -0
  494. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/profiles.py +0 -0
  495. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/projections.py +0 -0
  496. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/retrieval.py +0 -0
  497. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/shared.py +0 -0
  498. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/sidecar.py +0 -0
  499. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/taxonomy.py +0 -0
  500. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/validation.py +0 -0
  501. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/__init__.py +0 -0
  502. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/beads_adapter.py +0 -0
  503. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/board.py +0 -0
  504. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/dispatch_history.py +0 -0
  505. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/gates.py +0 -0
  506. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/intake.py +0 -0
  507. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/ledger.py +0 -0
  508. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/plans_registry.py +0 -0
  509. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/projections.py +0 -0
  510. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/recall.py +0 -0
  511. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/schemas.py +0 -0
  512. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/service.py +0 -0
  513. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/task_flow_adapter.py +0 -0
  514. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/trace.py +0 -0
  515. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/__init__.py +0 -0
  516. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/engine.py +0 -0
  517. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/schemas.py +0 -0
  518. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/security.py +0 -0
  519. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/__init__.py +0 -0
  520. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/audit.py +0 -0
  521. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/registry.py +0 -0
  522. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/routing.py +0 -0
  523. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/state.py +0 -0
  524. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/py.typed +0 -0
  525. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/__init__.py +0 -0
  526. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/agents.py +0 -0
  527. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/discovery.py +0 -0
  528. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/local.py +0 -0
  529. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/__init__.py +0 -0
  530. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/adapter_base.py +0 -0
  531. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/crewai_adapter.py +0 -0
  532. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/gascity_converter.py +0 -0
  533. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/kernel.py +0 -0
  534. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/langgraph_adapter.py +0 -0
  535. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/p2p_guard.py +0 -0
  536. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/recipes.py +0 -0
  537. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/schemas.py +0 -0
  538. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/__init__.py +0 -0
  539. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/_common.py +0 -0
  540. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/agent_creation.py +0 -0
  541. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/agent_forge.py +0 -0
  542. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_checkpoint.py +0 -0
  543. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_context.py +0 -0
  544. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_diff.py +0 -0
  545. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_eval_runner.py +0 -0
  546. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_evals.py +0 -0
  547. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_gate.py +0 -0
  548. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_primitives.py +0 -0
  549. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_resilience.py +0 -0
  550. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_scatter.py +0 -0
  551. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_security.py +0 -0
  552. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_telemetry.py +0 -0
  553. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/context_guard.py +0 -0
  554. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/context_pack.py +0 -0
  555. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/context_router.py +0 -0
  556. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/cost_model.py +0 -0
  557. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/ext_manager.py +0 -0
  558. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/features.py +0 -0
  559. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/forge_http.py +0 -0
  560. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/forge_routes.py +0 -0
  561. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/forge_server.py +0 -0
  562. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/handoff.py +0 -0
  563. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/harmony_check.py +0 -0
  564. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_link.py +0 -0
  565. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_lint.py +0 -0
  566. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_setup.py +0 -0
  567. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_vectors.py +0 -0
  568. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/model_windows.py +0 -0
  569. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/preflight_check.py +0 -0
  570. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_health.py +0 -0
  571. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_registry.py +0 -0
  572. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_setup.py +0 -0
  573. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_update.py +0 -0
  574. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/serve_data.py +0 -0
  575. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/stigmergy.py +0 -0
  576. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/stigmergy_hooks.py +0 -0
  577. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/untrusted.py +0 -0
  578. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_api.py +0 -0
  579. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_exec.py +0 -0
  580. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_language.py +0 -0
  581. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_legacy.py +0 -0
  582. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_routes.py +0 -0
  583. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/__init__.py +0 -0
  584. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/otel_conventions.py +0 -0
  585. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/schemas.py +0 -0
  586. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/workflows/__init__.py +0 -0
  587. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/workflows/registry.py +0 -0
  588. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/workflows/teams.py +0 -0
  589. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-BRIEF-memory.md +0 -0
  590. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-BRIEF-observability.md +0 -0
  591. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-REVIEW-2026-09.md +0 -0
  592. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-SPEC-workspace-2026-09.md +0 -0
  593. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/anatomy.html +0 -0
  594. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/atelier-nav.js +0 -0
  595. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/atelier.css +0 -0
  596. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/atelier.html +0 -0
  597. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/blueprint-onboarding.js +0 -0
  598. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/blueprints.html +0 -0
  599. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-assist.js +0 -0
  600. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-composer.js +0 -0
  601. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-core.js +0 -0
  602. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-cost.js +0 -0
  603. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-diff.js +0 -0
  604. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-docs.js +0 -0
  605. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-evals.js +0 -0
  606. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-lexicon.js +0 -0
  607. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-library.js +0 -0
  608. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-manual.js +0 -0
  609. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-sections.js +0 -0
  610. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-team.css +0 -0
  611. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-team.js +0 -0
  612. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-tour.js +0 -0
  613. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2.css +0 -0
  614. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/activity.json +0 -0
  615. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/architecture.json +0 -0
  616. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/catalogue-export.json +0 -0
  617. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/extensions.json +0 -0
  618. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/insights.json +0 -0
  619. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/kit-coverage.json +0 -0
  620. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/memory.json +0 -0
  621. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/meta.json +0 -0
  622. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/observatory.json +0 -0
  623. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/activity.json +0 -0
  624. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/insights.json +0 -0
  625. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/memory.json +0 -0
  626. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/meta.json +0 -0
  627. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/observatory.json +0 -0
  628. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/taskboard.json +0 -0
  629. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/activity.json +0 -0
  630. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/insights.json +0 -0
  631. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/memory.json +0 -0
  632. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/meta.json +0 -0
  633. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/observatory.json +0 -0
  634. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/taskboard.json +0 -0
  635. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/activity.json +0 -0
  636. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/insights.json +0 -0
  637. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/memory.json +0 -0
  638. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/meta.json +0 -0
  639. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/observatory.json +0 -0
  640. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/taskboard.json +0 -0
  641. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/activity.json +0 -0
  642. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/insights.json +0 -0
  643. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/memory.json +0 -0
  644. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/meta.json +0 -0
  645. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/observatory.json +0 -0
  646. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/taskboard.json +0 -0
  647. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects.json +0 -0
  648. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/taskboard.json +0 -0
  649. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/demo.html +0 -0
  650. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Concevoir.dc.html +0 -0
  651. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/ConcevoirClair.dc.html +0 -0
  652. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Couleurs.dc.html +0 -0
  653. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DAArdoise.dc.html +0 -0
  654. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DAPapier.dc.html +0 -0
  655. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DAStudio.dc.html +0 -0
  656. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DirectionB.dc.html +0 -0
  657. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DirectionC.dc.html +0 -0
  658. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DirectionD.dc.html +0 -0
  659. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Encre.dc.html +0 -0
  660. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/EncreClair.dc.html +0 -0
  661. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Main.dc.html +0 -0
  662. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Mecaniques.dc.html +0 -0
  663. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Source.dc.html +0 -0
  664. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/canvas.json +0 -0
  665. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/concevoir-dark.jpg +0 -0
  666. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/concevoir-light.jpg +0 -0
  667. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/executer-dark.jpg +0 -0
  668. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/executer-light.jpg +0 -0
  669. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/memoire-dark.jpg +0 -0
  670. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/memoire-light.jpg +0 -0
  671. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/observer-dark.jpg +0 -0
  672. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/observer-light.jpg +0 -0
  673. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/piloter-dark.jpg +0 -0
  674. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/piloter-light.jpg +0 -0
  675. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/source-dark.jpg +0 -0
  676. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/source-light.jpg +0 -0
  677. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/gen-couleurs.py +0 -0
  678. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/gen-skins.py +0 -0
  679. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/shell.tpl.html +0 -0
  680. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/01-cockpit-portefeuille-desktop.jpg +0 -0
  681. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/02-cockpit-portefeuille-full.jpg +0 -0
  682. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/03-cockpit-portefeuille-mobile.jpg +0 -0
  683. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/04-kanban-desktop.jpg +0 -0
  684. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/05-kanban-mobile.jpg +0 -0
  685. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/06-observatoire-desktop.jpg +0 -0
  686. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/07-observatoire-full.jpg +0 -0
  687. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/08-atelier-desktop.jpg +0 -0
  688. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/09-atelier-mobile.jpg +0 -0
  689. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/10-memoire-desktop.jpg +0 -0
  690. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/11-blueprints-desktop.jpg +0 -0
  691. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/12-extensions-desktop.jpg +0 -0
  692. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/13-patterns-desktop.jpg +0 -0
  693. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/14-cockpit-index-desktop.jpg +0 -0
  694. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/15-workspace-lot1-sombre-decouverte.png +0 -0
  695. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/16-workspace-lot1-clair-decouverte.png +0 -0
  696. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/17-workspace-lot1-sombre-concentration.png +0 -0
  697. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/18-workspace-lot1-clair-concentration.png +0 -0
  698. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/documentation.html +0 -0
  699. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/extensions.html +0 -0
  700. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-base.css +0 -0
  701. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-charts.css +0 -0
  702. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-landing.css +0 -0
  703. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-motion.css +0 -0
  704. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-motion.js +0 -0
  705. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-nav.js +0 -0
  706. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-observatory.js +0 -0
  707. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-tokens.css +0 -0
  708. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/game-ui.html +0 -0
  709. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/grimoire-mode.js +0 -0
  710. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/index.html +0 -0
  711. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/labs.html +0 -0
  712. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/memory.html +0 -0
  713. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/observability.html +0 -0
  714. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/patterns.html +0 -0
  715. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/portfolio.html +0 -0
  716. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/project-picker.js +0 -0
  717. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/README.md +0 -0
  718. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/api.js +0 -0
  719. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/Geist-Medium.woff2 +0 -0
  720. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/Geist-Regular.woff2 +0 -0
  721. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/Geist-SemiBold.woff2 +0 -0
  722. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/GeistMono-Medium.woff2 +0 -0
  723. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/GeistMono-Regular.woff2 +0 -0
  724. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/OFL.txt +0 -0
  725. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/glossary.js +0 -0
  726. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/index.html +0 -0
  727. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/shell.css +0 -0
  728. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/shell.js +0 -0
  729. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/concevoir.js +0 -0
  730. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/memoire.js +0 -0
  731. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/observer.js +0 -0
  732. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/piloter.js +0 -0
  733. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/source-editor.js +0 -0
  734. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/source.css +0 -0
  735. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/source.js +0 -0
  736. {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/tokens.css +0 -0
@@ -7,6 +7,66 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.45.0] - 2026-09-12
11
+
12
+ - **fix(flows): le gate de `flow run --executor dispatch` exécute l'acceptance structurée d'un node, pas seulement l'enveloppe (#428).**
13
+ Rejeu réel du 2026-09-11 (épic #307, lot 3) : un nœud V0 déclaré vert alors
14
+ que sa vraie suite `pytest` ne pouvait pas être collectée (dépendance
15
+ absente) — le gate ne vérifiait que la conformité de l'enveloppe JSON de
16
+ l'ouvrier au contrat de sortie, jamais le texte de l'acceptance. `node.acceptance`
17
+ accepte désormais, en plus du texte libre (rétrocompatible), une forme
18
+ structurée exécutable (`{"run": "...", "expect_exit": 0, "cwd": ".",
19
+ "timeout_s": 120, "expect_stdout_contains": "..."}`) ou une evidence
20
+ mécanique (`{"path_exists": "..."}`, `{"test": "..."}`) — validée au
21
+ chargement du blueprint (`blueprint_loader.py`), refus nommé sur une forme
22
+ inconnue. Le gate (`missions/dispatch.py`) exécute ces commandes après la
23
+ réponse de l'ouvrier et rend trois verdicts, jamais un quatrième :
24
+ exécutée-verte (succès), exécutée-rouge (échec, suit la cascade normale :
25
+ réessai/escalade), ou **acceptance inexécutable** (refus nommé — binaire
26
+ absent, `pytest` 5/4, erreur d'import dans la sortie — qui arrête la
27
+ cascade net, jamais un succès). `flow status` et le rapport de dispatch
28
+ montrent par nœud le statut d'acceptance (exécutée/inexécutable/jugée) et
29
+ la sortie tronquée à 2 Ko. **La classe V0 exige une acceptance
30
+ structurée** : un nœud dont le texte seul le classerait V0 mais qui n'en
31
+ déclare aucune est rétrogradé en V1 (cascade démarrant à `mid`, jamais
32
+ fermé sur la seule enveloppe — marqué à relire), avec un avertissement
33
+ nommé posé au chargement du blueprint et transmis à la fois au démarrage
34
+ de la cascade et au rapport, pour que `flow run` et `flow status`
35
+ s'accordent sur la même classe. Un nœud V1 **déclaré** (vocabulaire de
36
+ revue) garde le comportement actuel du kit, documenté sans être étendu.
37
+ Aucun changement côté port Rust des flows (`rust/grimoire-flows-core/`) :
38
+ seule `NodeContract.outputs` (pins) y traverse la frontière PyO3, inchangée
39
+ par ce correctif.
40
+
41
+ - **feat(cockpit): le board de l'espace Exécuter montre le corps réel d'une tâche (description, garde-fous, dépendances) et les commandes d'intention restent gated par la preuve en multi-projet (#140).**
42
+ L'inspecteur de tâche affichait déjà les critères d'acceptation et les
43
+ preuves attendues ; il gagne des blocs Description, Garde-fous et
44
+ Dépendances, tirés du `MissionTask` du ledger — ce que `task-board.yaml`
45
+ n'a jamais su porter (ADR-005). `kanban.html` reste la vitrine statique et
46
+ gagne un lien vers le board vivant. Aucune écriture nouvelle : les
47
+ commandes de transition, le gate de preuve et la restriction au projet de
48
+ lancement du cockpit existaient déjà ; ce lot les couvre par des tests
49
+ dédiés (unitaires sur la route `/api/workspace/tasks/<id>/<action>` —
50
+ succès, refus nommant l'artefact manquant, refus hors projet de lancement —
51
+ et navigateur sur le critère d'acceptation à la lettre : une carte visée
52
+ vers *review* sans evidence pack est refusée avec l'artefact nommé, et le
53
+ board change quand on change de projet).
54
+
55
+ - feat(traces): sixième port Rust optionnel du cœur du système d'artefact émergent — les agrégations du journal de traces (`TraceLedger.agent_dispatch_counts`/`.agent_miss_counts`/`.oldest_started_at`), la règle de fraîcheur (`compute_agent_freshness`, issue #396) et le déclencheur de propositions d'artefact (`grimoire.proposals` : nommage mécanique, résolution du porteur issue #402, décision de synchronisation seuil/refus issue #395/#394/#389) (issue #354). `rust/grimoire-traces-core/`, bascule `GRIMOIRE_TRACES_BACKEND=python|rust|auto` (lue indépendamment par `grimoire.traces.ledger` et `grimoire.proposals`, qui ne s'importent pas l'un l'autre), jobs CI `rust-traces / cargo` et `rust-traces / parity` dans `.github/workflows/rust-cores.yml`, roue toujours `py3-none-any`. Défaut trouvé par l'oracle Rust et corrigé dans cette même PR : `grimoire.traces.ledger._parse_iso` attrapait `ValueError` mais pas la `TypeError` non rattrapée levée ensuite par `datetime.now(tz=UTC) - datetime.fromisoformat(...)` sur un horodatage ISO-8601 *naïf* (sans décalage) — un journal JSONL édité à la main peut en porter un, et `compute_agent_freshness` revendique explicitement ne jamais lever sur un journal arbitraire ; corrigé en traitant un horodatage naïf comme UTC des deux côtés (même correctif que `grimoire_traces_core`, qui n'a jamais eu ce trou). Invariants de la doctrine rendus impossibles à violer par construction (clampés/exclus dans la fonction de décision elle-même, jamais par un appelant qui pourrait l'oublier) : seuil de proposition jamais sous 2, aucune proposition au premier non-choix, une proposition refusée ne revient que si son compte a doublé depuis le refus, la persona d'entrée est exclue de la recherche de porteur avant même de lire son `use_when`, le match de catégorie se fait par mot entier (limite de mot Unicode) et non par sous-chaîne. Corpus fixture de dix journaux JSONL réalistes (`tests/fixtures/traces_ledgers/`) et fuzz léger (200 enregistrements aléatoires) prouvant qu'aucune des fonctions d'agrégation/fraîcheur ne lève jamais, sous aucun backend, et qu'un champ de contenu libre (`prompt`/`request`) écrit à la main n'est jamais agrégé.
56
+
57
+ - **fix(up): `identity` ne corrompt plus un scalaire commenté de `project-context.yaml` (#426).**
58
+ `cmd_setup._apply_project_context` réécrivait chaque ligne `user:` connue
59
+ avec une regex `.+` qui avalait tout le reste de la ligne — valeur *et*
60
+ commentaire inline — comme si c'était « la valeur », puis rewrappait ce
61
+ texte entier entre guillemets. `skill_level: "expert" # beginner |
62
+ intermediate | expert` devenait `skill_level: ""expert" # beginner |
63
+ intermediate | expert"` à chaque `grimoire up`, y compris quand la valeur
64
+ ne changeait pas — et cassait ensuite `grimoire doctor` (`GR002`, YAML
65
+ imparsable). Un nouveau `_split_scalar_and_comment` sépare correctement
66
+ le scalaire (quoté ou non) du commentaire qui le suit avant toute lecture
67
+ ou réécriture, et `_apply_project_context` recolle le commentaire original
68
+ après la nouvelle valeur au lieu de le jeter.
69
+
10
70
  ## [3.44.2] - 2026-09-11
11
71
 
12
72
  - **fix(hosts): `collect_agents` résout ses propres skills quand `known_skills` n'est pas fourni — `SessionStart` et le porteur de proposition ne plantent plus sur un agent à skills attachés (#423).**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: grimoire-kit
3
- Version: 3.44.2
3
+ Version: 3.45.0
4
4
  Summary: Composable AI agent platform — personas, memory, workflows, and quality automation for any project.
5
5
  Project-URL: Homepage, https://github.com/Guilhem-Bonnet/Grimoire-kit
6
6
  Project-URL: Repository, https://github.com/Guilhem-Bonnet/Grimoire-kit
@@ -208,6 +208,7 @@ ignore_missing_imports = true
208
208
  # third such core (issue #354): rust/grimoire-hosts-core/.
209
209
  # `grimoire_flows_core` is the fourth: rust/grimoire-flows-core/.
210
210
  # `grimoire_dispatch_core` is the fifth: rust/grimoire-dispatch-core/.
211
+ # `grimoire_traces_core` is the sixth: rust/grimoire-traces-core/.
211
212
  [[tool.mypy.overrides]]
212
213
  module = [
213
214
  "grimoire_policies_core",
@@ -215,6 +216,7 @@ module = [
215
216
  "grimoire_hosts_core",
216
217
  "grimoire_flows_core",
217
218
  "grimoire_dispatch_core",
219
+ "grimoire_traces_core",
218
220
  ]
219
221
  ignore_missing_imports = true
220
222
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "grimoire-kit-file-hashes/v1",
3
- "generated_for": "3.44.2",
3
+ "generated_for": "3.45.0",
4
4
  "digests": {
5
5
  "002d1e68ce00769ee09d1e94f4af260b952837f7d1557080c2fd505216c23ac0": {
6
6
  "version": "3.11.2",
@@ -0,0 +1,18 @@
1
+ [build-system]
2
+ requires = ["maturin>=1.7,<2"]
3
+ build-backend = "maturin"
4
+
5
+ [project]
6
+ name = "grimoire-traces-core"
7
+ version = "0.1.0"
8
+ description = "Coeur Rust optionnel des agregations du journal de traces, de la regle de fraicheur et du declencheur de propositions (PyO3). Non publie sur PyPI — build local uniquement, voir CONTRIBUTING.md."
9
+ requires-python = ">=3.12"
10
+ license = { text = "MIT" }
11
+ classifiers = [
12
+ "Programming Language :: Rust",
13
+ "Programming Language :: Python :: 3.12",
14
+ "Private :: Do Not Upload",
15
+ ]
16
+
17
+ [tool.maturin]
18
+ module-name = "grimoire_traces_core"
@@ -0,0 +1 @@
1
+ __version__ = "3.45.0"
@@ -44,6 +44,15 @@ flow_app = typer.Typer(
44
44
  no_args_is_help=False,
45
45
  )
46
46
 
47
+ #: Libellé humain de l'``acceptance_status`` d'un node dispatché (issue #428) —
48
+ #: ``None`` : événement écrit avant ce correctif, rien à afficher.
49
+ _ACCEPTANCE_LABELS: dict[str | None, str] = {
50
+ "executed": "exécutée",
51
+ "unrunnable": "inexécutable",
52
+ "judged": "jugée",
53
+ None: "n/a",
54
+ }
55
+
47
56
  # Le rendu humain part sur stderr : le JSON de stdout reste pipeable, comme le
48
57
  # reste de la CLI (cf. cmd_task.py).
49
58
  console = Console(stderr=True)
@@ -127,10 +136,13 @@ def _emit_status(ctx: typer.Context, view: FlowStatusView, project_root: Path) -
127
136
  console.print("[bold]dispatch (#311)[/bold] :")
128
137
  for row in history:
129
138
  relire = " [magenta]à relire[/magenta]" if row["needs_review"] else ""
139
+ acceptance = _ACCEPTANCE_LABELS.get(row.get("acceptance_status"), "n/a")
130
140
  console.print(
131
141
  f" - {row['node_id']} : {row['verdict']} par {row['provider']} ({row['tier']}), "
132
- f"{row['attempts']} tentative(s), coût {row['cost_usd']}{relire}"
142
+ f"{row['attempts']} tentative(s), coût {row['cost_usd']}{relire} — acceptance {acceptance}"
133
143
  )
144
+ if row.get("verifiability_warning"):
145
+ console.print(f" [yellow]![/yellow] {row['verifiability_warning']}")
134
146
  for u in row["uncertainties"]:
135
147
  console.print(f" [dim]incertitude : {u.get('where')} — {u.get('what')}[/dim]")
136
148
  if view.contract:
@@ -171,10 +183,13 @@ def _emit_dispatch_outcome(ctx: typer.Context, outcome: FlowDispatchOutcome) ->
171
183
  return
172
184
  for node in outcome.nodes:
173
185
  relire = " [magenta]à relire[/magenta]" if node.needs_review else ""
186
+ acceptance = _ACCEPTANCE_LABELS.get(node.acceptance_status, "n/a")
174
187
  console.print(
175
188
  f" {node.node_id} : {node.verdict} par {node.provider} — {node.attempts} tentative(s), "
176
- f"{node.escalations} escalade(s), coût {node.cost_usd}{relire}"
189
+ f"{node.escalations} escalade(s), coût {node.cost_usd}{relire} — acceptance {acceptance}"
177
190
  )
191
+ if node.verifiability_warning:
192
+ console.print(f" [yellow]![/yellow] {node.verifiability_warning}")
178
193
  console.print(
179
194
  f"[bold]coût total connu[/bold] : {outcome.total_cost_usd} — [bold]escalades[/bold] : {outcome.escalations}"
180
195
  )
@@ -54,11 +54,49 @@ class SetupResult:
54
54
  # ── YAML helpers (simple, no PyYAML dependency) ──────────────────────────────
55
55
 
56
56
 
57
+ def _split_scalar_and_comment(tail: str) -> tuple[str, str]:
58
+ """Split the text after a YAML ``key:`` into ``(scalar, comment_suffix)``.
59
+
60
+ ``comment_suffix`` keeps its leading whitespace so that reassembling it
61
+ right after a (possibly new) scalar reproduces the line's trailing
62
+ comment untouched. A ``#`` inside a quoted scalar is literal, not a
63
+ comment marker — treating it as one is what corrupted ``skill_level:
64
+ "expert" # ...`` into ``skill_level: ""expert" # ..."`` (issue #426):
65
+ the old code captured ``"expert" # comment`` whole as "the value" via
66
+ ``.+``, so it neither stripped the comment nor recognised the result as
67
+ quoted (its last character was the comment's, not a quote), then
68
+ re-wrapped that entire string in a fresh pair of quotes.
69
+ """
70
+ body = tail.rstrip("\n")
71
+ lstripped = body.lstrip(" \t")
72
+ if lstripped[:1] in ("'", '"'):
73
+ quote = lstripped[0]
74
+ i = 1
75
+ while i < len(lstripped):
76
+ ch = lstripped[i]
77
+ if quote == '"' and ch == "\\":
78
+ i += 2
79
+ continue
80
+ if ch == quote:
81
+ i += 1
82
+ break
83
+ i += 1
84
+ return lstripped[:i], lstripped[i:]
85
+ # Unquoted scalar: a '#' only starts a comment when it begins the tail
86
+ # or is preceded by whitespace — YAML's own rule.
87
+ match = re.search(r"(?:^|\s)#", lstripped)
88
+ if match is None:
89
+ value = lstripped.rstrip()
90
+ return value, lstripped[len(value):]
91
+ value = lstripped[: match.start()].rstrip()
92
+ return value, lstripped[len(value):]
93
+
94
+
57
95
  def _read_key(text: str, key: str) -> str | None:
58
96
  m = re.search(rf"^{re.escape(key)}:\s*(.+)$", text, re.MULTILINE)
59
97
  if not m:
60
98
  return None
61
- val = m.group(1).strip()
99
+ val, _comment = _split_scalar_and_comment(m.group(1))
62
100
  if len(val) >= 2 and val[0] == val[-1] and val[0] in ('"', "'"):
63
101
  val = val[1:-1]
64
102
  return val
@@ -148,11 +186,19 @@ def _apply_project_context(path: Path, vals: UserValues) -> bool:
148
186
  start, end = span
149
187
  seen: set[str] = set()
150
188
  for i in range(start + 1, end):
151
- stripped = lines[i].strip()
189
+ line = lines[i]
190
+ stripped = line.strip()
152
191
  for key in wanted:
153
192
  if stripped.startswith(f"{key}:"):
154
- indent = lines[i][: len(lines[i]) - len(lines[i].lstrip())]
155
- lines[i] = f'{indent}{key}: "{wanted[key]}"'
193
+ indent = line[: len(line) - len(line.lstrip())]
194
+ # Preserve everything after the scalar (notably an
195
+ # inline comment) instead of discarding it — see
196
+ # ``_split_scalar_and_comment`` for why the previous
197
+ # blind ``f'{key}: "{value}"'`` corrupted lines like
198
+ # ``skill_level: "expert" # ...`` (issue #426).
199
+ _key_part, _sep, line_tail = line.partition(":")
200
+ _old_value, comment = _split_scalar_and_comment(line_tail)
201
+ lines[i] = f'{indent}{key}: "{wanted[key]}"{comment}'
156
202
  seen.add(key)
157
203
  missing = [f' {key}: "{value}"' for key, value in wanted.items() if key not in seen]
158
204
  tail = end
@@ -713,6 +713,10 @@ _VERDICT_ICON: dict[str, str] = {
713
713
  "red": "[red]rouge[/red]",
714
714
  "rate_limit": "[yellow]limite/429[/yellow]",
715
715
  "timeout": "[yellow]timeout[/yellow]",
716
+ # « acceptance inexécutable » (issue #428) : un `--check` n'a rendu aucun
717
+ # verdict exploitable (binaire absent, pytest 5/4, erreur d'import) — la
718
+ # cascade s'est arrêtée net, jamais un vert.
719
+ "unrunnable": "[red]acceptance inexécutable[/red]",
716
720
  }
717
721
 
718
722
 
@@ -757,6 +761,8 @@ def _emit_dispatch(ctx: typer.Context, report: Any) -> None:
757
761
  console.print(f"[yellow]![/yellow] transition non appliquée : {report.transition_refused}")
758
762
  if report.review is not None:
759
763
  _print_review(report.review, [str(p) for p in report.review_files], report.review_note)
764
+ elif report.unrunnable is not None:
765
+ console.print(f"[red]✗[/red] {report.task_id} — acceptance inexécutable : {escape(report.unrunnable)}")
760
766
  else:
761
767
  console.print(
762
768
  f"[red]✗[/red] {report.task_id} — chaîne épuisée, {len(report.attempts)} tentative(s), aucun vert"
@@ -0,0 +1,290 @@
1
+ """Dérive un ordre d'exécution et des contrats de node depuis un blueprint.
2
+
3
+ Un blueprint ne porte pas d'ordre d'exécution explicite — seulement des
4
+ ``edges`` reliant des pins. Le tri topologique ci-dessous (porté depuis le
5
+ prototype jetable de la première étape de #204, une fois vérifié sur
6
+ ``web-pipeline.blueprint.json``) le rend explicite une bonne fois, pour que le
7
+ moteur n'ait pas à le redériver à chaque lecture d'un chemin différent.
8
+
9
+ Le blueprint chargé ici est le même fichier que ``grimoire blueprint compile``
10
+ accepte : ``validate_blueprint_file`` (contrôle structurel léger) est la seule
11
+ vérification que ce module impose. Les contrôles d'état projet de ``compile``
12
+ (extensions installées, artefacts résolus) ne s'appliquent pas : exécuter un
13
+ node ne compile rien, c'est l'hôte qui l'exécute.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import shlex
19
+ from pathlib import Path
20
+ from typing import Any
21
+
22
+ from grimoire.core.exceptions import GrimoireRuntimeError
23
+ from grimoire.flows.schemas import AcceptanceEvidence, AcceptanceRun, NodeContract, PinRef
24
+ from grimoire.missions.verifiability import Verifiability, classify_criteria
25
+ from grimoire.tools.ext_manager import validate_blueprint_file
26
+
27
+ __all__ = ["build_node_contracts", "load_blueprint", "topo_order"]
28
+
29
+ #: Les seules clés qu'une entrée d'``acceptance`` structurée reconnaît (issue
30
+ #: #428). Une entrée doit en porter exactement une : ni zéro (forme inconnue),
31
+ #: ni deux ou plus (ambiguïté sur ce qu'il faut exécuter) — les deux sont un
32
+ #: refus nommé au chargement, jamais une garde qui échouerait ouvert.
33
+ _ACCEPTANCE_STRUCTURED_KEYS = ("run", "path_exists", "test")
34
+
35
+
36
+ def load_blueprint(path: Path) -> dict[str, Any]:
37
+ """Charge et valide structurellement un ``.blueprint.json``.
38
+
39
+ Lève :class:`GrimoireRuntimeError` (pas ``ExtensionError`` du sous-module
40
+ ``tools`` : côté flows, une erreur de blueprint est une erreur de moteur,
41
+ pas une erreur d'extension) en nommant chaque défaut trouvé.
42
+ """
43
+ from grimoire.tools.ext_manager import ExtensionError
44
+
45
+ try:
46
+ blueprint, errors = validate_blueprint_file(path)
47
+ except ExtensionError as exc:
48
+ raise GrimoireRuntimeError(str(exc)) from exc
49
+ if errors:
50
+ raise GrimoireRuntimeError(f"{path} : blueprint invalide — " + "; ".join(errors))
51
+ return blueprint
52
+
53
+
54
+ def topo_order(blueprint: dict[str, Any]) -> list[str]:
55
+ """Ordre d'exécution des nodes, dérivé des ``edges`` (Kahn, déterministe).
56
+
57
+ Déterministe : à dépendances égales, les nodes prêts sont pris dans
58
+ l'ordre alphabétique de leur id, pas dans l'ordre d'apparition dans le
59
+ fichier — deux lectures du même blueprint rendent le même ordre.
60
+ """
61
+ nodes = [n["id"] for n in blueprint["nodes"]]
62
+ node_by_pin: dict[str, str] = {}
63
+ for n in blueprint["nodes"]:
64
+ for p in n.get("pins", []):
65
+ node_by_pin[f"{n['id']}.{p['id']}"] = n["id"]
66
+ deps: dict[str, set[str]] = {nid: set() for nid in nodes}
67
+ for e in blueprint.get("edges", []):
68
+ src = node_by_pin.get(e["from"])
69
+ dst = node_by_pin.get(e["to"])
70
+ if src is None or dst is None:
71
+ raise GrimoireRuntimeError(f"edge non résoluble : {e['from']} -> {e['to']}")
72
+ deps[dst].add(src)
73
+ order: list[str] = []
74
+ remaining = set(nodes)
75
+ while remaining:
76
+ ready = sorted(n for n in remaining if deps[n] <= set(order))
77
+ if not ready:
78
+ raise GrimoireRuntimeError(f"cycle ou dépendance non résolue dans le blueprint : {sorted(remaining)}")
79
+ order.extend(ready)
80
+ remaining -= set(ready)
81
+ return order
82
+
83
+
84
+ def _tool_boundary(node: dict[str, Any]) -> tuple[str, ...]:
85
+ """La frontière d'outils d'un node : ce qu'il touche hors du raisonnement.
86
+
87
+ Un ``extension-node`` délègue à un service tiers (CrewAI, LangGraph...) :
88
+ sa ``ref`` EST la frontière. Un ``pattern`` en rôle ``Gate`` porte
89
+ ``config.gate`` (mode + params) : c'est une frontière de contrôle, pas
90
+ d'exécution, mais l'hôte doit savoir qu'un gate le regarde. Tout le reste
91
+ (patterns de raisonnement pur, artefacts, composites) n'a pas de
92
+ frontière déclarée en v1 — un tuple vide dit explicitement "aucune".
93
+ """
94
+ if node.get("kind") == "extension-node":
95
+ return (node.get("ref", ""),)
96
+ gate = (node.get("config") or {}).get("gate")
97
+ if isinstance(gate, dict):
98
+ mode = gate.get("mode", "?")
99
+ params = gate.get("params") or {}
100
+ checks = params.get("checks")
101
+ if checks:
102
+ return (f"gate:{mode}(checks={','.join(checks)})",)
103
+ server = params.get("server")
104
+ if server:
105
+ return (f"gate:{mode}(server={server})",)
106
+ return (f"gate:{mode}",)
107
+ return ()
108
+
109
+
110
+ def _parse_acceptance_entry(
111
+ node_id: str, entry: Any
112
+ ) -> tuple[str, AcceptanceRun | None, AcceptanceEvidence | None]:
113
+ """Une entrée d'``acceptance`` : texte libre (inchangé), ou forme structurée (issue #428).
114
+
115
+ Rend ``(texte, run, evidence)`` — ``texte`` alimente toujours
116
+ ``NodeContract.acceptance`` (donc ``verifiability.classify``), qu'il
117
+ vienne de la prose de l'auteur ou soit dérivé d'une commande ; ``run``/
118
+ ``evidence`` (au plus un des deux) alimentent le gate qui l'exécute
119
+ réellement (``flows.dispatch_executor``).
120
+
121
+ Une forme structurée reconnaît exactement une clé parmi ``run``,
122
+ ``path_exists``, ``test`` — zéro ou plusieurs est un refus nommé au
123
+ chargement (:class:`GrimoireRuntimeError`), jamais une garde silencieuse :
124
+ « aucune inférence de commande à partir de la prose » est un refus
125
+ explicite de l'issue, une forme ambiguë ne doit pas se comporter comme si
126
+ elle en désignait une par accident.
127
+ """
128
+ if isinstance(entry, str):
129
+ text = entry.strip()
130
+ return (text, None, None) if text else ("", None, None)
131
+ if not isinstance(entry, dict):
132
+ raise GrimoireRuntimeError(
133
+ f"node={node_id} : acceptance de forme inconnue ({entry!r}) — attendu une chaîne ou un objet "
134
+ "{'run': ...} / {'path_exists': ...} / {'test': ...}"
135
+ )
136
+ present = [k for k in _ACCEPTANCE_STRUCTURED_KEYS if k in entry]
137
+ if len(present) != 1:
138
+ raise GrimoireRuntimeError(
139
+ f"node={node_id} : acceptance structurée invalide {entry!r} — attendu exactement une clé parmi "
140
+ f"{_ACCEPTANCE_STRUCTURED_KEYS}, trouvé {present or 'aucune'}"
141
+ )
142
+ key = present[0]
143
+ if key == "run":
144
+ raw = str(entry["run"]).strip()
145
+ if not raw:
146
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.run vide")
147
+ try:
148
+ argv = tuple(shlex.split(raw))
149
+ except ValueError as exc:
150
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.run illisible ({exc})") from exc
151
+ if not argv:
152
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.run vide après découpage")
153
+ expect_exit = entry.get("expect_exit", 0)
154
+ if not isinstance(expect_exit, int) or isinstance(expect_exit, bool):
155
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.expect_exit doit être un entier")
156
+ cwd = entry.get("cwd", ".")
157
+ if not isinstance(cwd, str) or not cwd.strip():
158
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.cwd doit être une chaîne non vide")
159
+ timeout_s = entry.get("timeout_s", 120.0)
160
+ if isinstance(timeout_s, bool) or not isinstance(timeout_s, (int, float)) or timeout_s <= 0:
161
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.timeout_s doit être un nombre positif")
162
+ expect_stdout_contains = entry.get("expect_stdout_contains")
163
+ if expect_stdout_contains is not None and not isinstance(expect_stdout_contains, str):
164
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.expect_stdout_contains doit être une chaîne")
165
+ run = AcceptanceRun(
166
+ argv=argv,
167
+ raw=raw,
168
+ expect_exit=expect_exit,
169
+ cwd=cwd,
170
+ timeout_s=float(timeout_s),
171
+ expect_stdout_contains=expect_stdout_contains,
172
+ )
173
+ text = f"la commande « {raw} » retourne le code de sortie {expect_exit} (acceptance exécutée)"
174
+ return text, run, None
175
+ if key == "path_exists":
176
+ value = str(entry["path_exists"]).strip()
177
+ if not value:
178
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.path_exists vide")
179
+ text = f"le fichier « {value} » existe (acceptance exécutée)"
180
+ return text, None, AcceptanceEvidence(kind="path_exists", value=value)
181
+ value = str(entry["test"]).strip()
182
+ if not value:
183
+ raise GrimoireRuntimeError(f"node={node_id} : acceptance.test vide")
184
+ text = f"le test « {value} » passe (suite de tests, acceptance exécutée)"
185
+ return text, None, AcceptanceEvidence(kind="test", value=value)
186
+
187
+
188
+ def _acceptance(
189
+ node: dict[str, Any], outputs: tuple[PinRef, ...]
190
+ ) -> tuple[tuple[str, ...], tuple[AcceptanceRun, ...], tuple[AcceptanceEvidence, ...]]:
191
+ """Critères d'acceptation : ``node.acceptance``, sinon les evals, sinon les pins.
192
+
193
+ Trois sources, dans cet ordre de préférence :
194
+
195
+ - ``node.acceptance`` — texte libre écrit par l'auteur du blueprint, ou
196
+ (issue #428) une forme structurée exécutable, ou un mélange des deux
197
+ dans la même liste. C'est la seule source qu'une classe de
198
+ vérifiabilité (#309) peut vraiment lire : ``sortie conforme au contrat
199
+ « c1 »`` ou ``verdict attendu : ...`` ne nomment ni verdict mécanique
200
+ reconnu ni revue, et tombent donc toujours ambigus. Un node qui veut
201
+ être dispatchable par cascade (#311) doit décrire son critère avec ce
202
+ vocabulaire-là : ``la suite de tests passe`` (V0), ``revue humaine
203
+ avant fusion`` (V1) — ou, désormais, déclarer directement la commande
204
+ qui rend ce verdict.
205
+ - ``config.evals`` — les cas ``assert`` (P1.2, rejoués par ``grimoire
206
+ blueprint evals``), s'il n'y a pas d'``acceptance`` explicite.
207
+ - À défaut des deux, un critère dérivé des pins de sortie : la
208
+ conformité au contrat est le plancher, jamais rien.
209
+
210
+ Une forme structurée invalide (clé inconnue, plusieurs clés, type
211
+ incorrect) lève :class:`GrimoireRuntimeError` en nommant le node — un
212
+ schéma refusé au chargement, pas un gate qui échouerait ouvert plus tard.
213
+ """
214
+ explicit = node.get("acceptance")
215
+ if isinstance(explicit, list) and explicit:
216
+ texts: list[str] = []
217
+ runs: list[AcceptanceRun] = []
218
+ evidence: list[AcceptanceEvidence] = []
219
+ for entry in explicit:
220
+ text, run, ev = _parse_acceptance_entry(node["id"], entry)
221
+ if text:
222
+ texts.append(text)
223
+ if run is not None:
224
+ runs.append(run)
225
+ if ev is not None:
226
+ evidence.append(ev)
227
+ return tuple(texts), tuple(runs), tuple(evidence)
228
+ evals = (node.get("config") or {}).get("evals")
229
+ criteria: list[str] = []
230
+ if isinstance(evals, dict):
231
+ for case in evals.get("cases", []):
232
+ for assertion in case.get("assert", []):
233
+ kind = assertion.get("kind")
234
+ if kind == "contract":
235
+ criteria.append(f"sortie conforme au contrat « {assertion.get('contract')} »")
236
+ elif kind == "no-refusal":
237
+ criteria.append("aucun refus du modèle")
238
+ elif kind == "cost":
239
+ criteria.append(f"coût ≤ {assertion.get('maxTokens')} tokens")
240
+ elif kind == "verdict":
241
+ criteria.append(f"verdict attendu : {assertion.get('expected')}")
242
+ if not criteria:
243
+ criteria = [f"sortie du pin « {p.pin_id} » conforme au contrat « {p.contract} »" for p in outputs]
244
+ return tuple(criteria), (), ()
245
+
246
+
247
+ def _verifiability_warning(node_id: str, acceptance_texts: tuple[str, ...], *, has_structured: bool) -> str | None:
248
+ """« nœud V0 sans acceptance exécutable » — posé au chargement, jamais au gate (issue #428, suite).
249
+
250
+ Un nœud dont le texte seul classe V0 (#309) mais qui ne déclare aucune
251
+ commande exécutable est le fossé exact que le rejeu du 2026-09-11 a payé :
252
+ l'auteur du blueprint a écrit un vocabulaire mécanique (« la suite de
253
+ tests passe ») sans jamais donner au gate de quoi le vérifier — sans ce
254
+ garde-fou, ``flows.dispatch_executor`` n'aurait toujours que le check
255
+ d'enveloppe à faire tourner. La règle du kit (« un faux V0 est pire qu'un
256
+ faux V2 », ``verifiability.py``) s'applique à l'identique ici : ce nœud
257
+ est traité comme V1 par l'exécuteur de dispatch (jamais fermé sur la
258
+ seule foi de l'ouvrier), et ce message nommé en dit la raison plutôt que
259
+ de rétrograder en silence.
260
+ """
261
+ if has_structured:
262
+ return None
263
+ if classify_criteria(acceptance_texts) is not Verifiability.V0:
264
+ return None
265
+ return f"nœud {node_id} classé V0 sans acceptance exécutable : traité comme V1"
266
+
267
+
268
+ def build_node_contracts(blueprint: dict[str, Any]) -> dict[str, NodeContract]:
269
+ """Un :class:`NodeContract` par node du blueprint, indexé par id."""
270
+ contracts: dict[str, NodeContract] = {}
271
+ for node in blueprint["nodes"]:
272
+ pins = node.get("pins", [])
273
+ inputs = tuple(PinRef(p["id"], p["contract"]) for p in pins if p.get("direction") == "in")
274
+ outputs = tuple(PinRef(p["id"], p["contract"]) for p in pins if p.get("direction") == "out")
275
+ acceptance_texts, acceptance_runs, acceptance_evidence = _acceptance(node, outputs)
276
+ has_structured = bool(acceptance_runs or acceptance_evidence)
277
+ contracts[node["id"]] = NodeContract(
278
+ node_id=node["id"],
279
+ kind=node.get("kind", ""),
280
+ label=node.get("label", ""),
281
+ description=node.get("description", ""),
282
+ inputs=inputs,
283
+ outputs=outputs,
284
+ tool_boundary=_tool_boundary(node),
285
+ acceptance=acceptance_texts,
286
+ acceptance_runs=acceptance_runs,
287
+ acceptance_evidence=acceptance_evidence,
288
+ verifiability_warning=_verifiability_warning(node["id"], acceptance_texts, has_structured=has_structured),
289
+ )
290
+ return contracts