grimoire-kit 3.63.0__tar.gz → 3.64.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 (938) hide show
  1. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/CHANGELOG.md +70 -0
  2. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/PKG-INFO +1 -1
  3. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/pyproject.toml +3 -1
  4. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/registry/kit-file-hashes.json +1 -1
  5. grimoire_kit-3.64.0/src/grimoire/__version__.py +1 -0
  6. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/_registry_dispatches_report.py +17 -0
  7. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/app.py +9 -5
  8. grimoire_kit-3.64.0/src/grimoire/cli/cmd_evidence.py +50 -0
  9. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_host.py +88 -2
  10. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task.py +10 -3
  11. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_approve.py +25 -0
  12. grimoire_kit-3.64.0/src/grimoire/cli/cmd_task_questions.py +137 -0
  13. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_waiting.py +49 -7
  14. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_up.py +11 -14
  15. grimoire_kit-3.64.0/src/grimoire/cli/doctor_hooks.py +84 -0
  16. grimoire_kit-3.64.0/src/grimoire/cli/env_checks.py +22 -0
  17. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/config.py +25 -2
  18. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/schema.py +10 -0
  19. grimoire_kit-3.64.0/src/grimoire/core/standard_checks/evidence_resolve.py +376 -0
  20. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/validator.py +26 -1
  21. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/evidence/service.py +6 -0
  22. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/enrolment.py +12 -8
  23. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/evidence_gate.py +48 -16
  24. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/evidence_trace.py +42 -2
  25. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/lease_brake.py +75 -2
  26. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/tool_facts.py +18 -1
  27. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/detection.py +15 -0
  28. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/__init__.py +6 -0
  29. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/base.py +88 -7
  30. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/claude_code.py +22 -6
  31. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/copilot.py +16 -14
  32. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/rules.py +9 -1
  33. grimoire_kit-3.64.0/src/grimoire/hosts/hook_launcher.py +149 -0
  34. grimoire_kit-3.64.0/src/grimoire/hosts/matrix.py +272 -0
  35. grimoire_kit-3.64.0/src/grimoire/hosts/probe.py +242 -0
  36. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/runtime.py +22 -1
  37. grimoire_kit-3.64.0/src/grimoire/hosts/sync.py +122 -0
  38. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/mcp/server.py +55 -5
  39. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/admission.py +12 -4
  40. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/decisions.py +19 -15
  41. grimoire_kit-3.64.0/src/grimoire/missions/declarative_evidence.py +153 -0
  42. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/gates.py +3 -0
  43. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/lease.py +34 -2
  44. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/ledger.py +20 -26
  45. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/ledger_rules.py +27 -7
  46. grimoire_kit-3.64.0/src/grimoire/missions/question_gestures.py +135 -0
  47. grimoire_kit-3.64.0/src/grimoire/missions/questions.py +375 -0
  48. grimoire_kit-3.64.0/src/grimoire/missions/reclaim.py +88 -0
  49. grimoire_kit-3.64.0/src/grimoire/missions/reservation.py +78 -0
  50. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/schemas.py +8 -0
  51. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/service.py +59 -47
  52. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/verifiability.py +23 -5
  53. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/waiting.py +49 -3
  54. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/project_upgrade.py +24 -0
  55. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_pulse.py +11 -2
  56. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/ledger.py +84 -0
  57. grimoire_kit-3.64.0/version.txt +1 -0
  58. grimoire_kit-3.64.0/web/teaser/.gitignore +12 -0
  59. grimoire_kit-3.64.0/web/teaser/README.md +62 -0
  60. grimoire_kit-3.64.0/web/teaser/audio4.py +336 -0
  61. grimoire_kit-3.64.0/web/teaser/build4.py +16 -0
  62. grimoire_kit-3.64.0/web/teaser/clips.json +118 -0
  63. grimoire_kit-3.64.0/web/teaser/cues.json +237 -0
  64. grimoire_kit-3.64.0/web/teaser/cues.mjs +5 -0
  65. grimoire_kit-3.64.0/web/teaser/detect_green.py +149 -0
  66. grimoire_kit-3.64.0/web/teaser/fonts/JetBrainsMono-Regular.woff2 +0 -0
  67. grimoire_kit-3.64.0/web/teaser/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  68. grimoire_kit-3.64.0/web/teaser/fonts/OFL-InstrumentSans.txt +92 -0
  69. grimoire_kit-3.64.0/web/teaser/fonts/OFL-JetBrainsMono.txt +92 -0
  70. grimoire_kit-3.64.0/web/teaser/fonts/instrument-sans-400.woff2 +0 -0
  71. grimoire_kit-3.64.0/web/teaser/fonts/instrument-sans-500.woff2 +0 -0
  72. grimoire_kit-3.64.0/web/teaser/fonts/instrument-sans-600.woff2 +0 -0
  73. grimoire_kit-3.64.0/web/teaser/footage-sources.json +427 -0
  74. grimoire_kit-3.64.0/web/teaser/icons/board.svg +1 -0
  75. grimoire_kit-3.64.0/web/teaser/icons/fleet.svg +1 -0
  76. grimoire_kit-3.64.0/web/teaser/icons/inbox.svg +1 -0
  77. grimoire_kit-3.64.0/web/teaser/icons/pr.svg +1 -0
  78. grimoire_kit-3.64.0/web/teaser/icons/sliders.svg +1 -0
  79. grimoire_kit-3.64.0/web/teaser/icons/tag.svg +1 -0
  80. grimoire_kit-3.64.0/web/teaser/master.sh +8 -0
  81. grimoire_kit-3.64.0/web/teaser/prep_footage.py +68 -0
  82. grimoire_kit-3.64.0/web/teaser/render.mjs +36 -0
  83. grimoire_kit-3.64.0/web/teaser/scene4.tpl.html +589 -0
  84. grimoire_kit-3.64.0/web/teaser/screens.json +77 -0
  85. grimoire_kit-3.64.0/web/teaser/shots.mjs +8 -0
  86. grimoire_kit-3.64.0/web/teaser/storyboard.py +214 -0
  87. grimoire_kit-3.64.0/web/teaser/terminal.json +111 -0
  88. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/executer.js +47 -11
  89. grimoire_kit-3.63.0/src/grimoire/__version__.py +0 -1
  90. grimoire_kit-3.63.0/src/grimoire/hosts/sync.py +0 -77
  91. grimoire_kit-3.63.0/version.txt +0 -1
  92. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/.gitignore +0 -0
  93. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/LICENSE +0 -0
  94. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/README.md +0 -0
  95. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/_grimoire/_config/custom/prompt-templates/README.md +0 -0
  96. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/agentic-standard/archetype.dna.yaml +0 -0
  97. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/agentic-standard/shared-context.tpl.md +0 -0
  98. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/creative-studio/agents/blender-expert.md +0 -0
  99. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/creative-studio/agents/brand-designer.md +0 -0
  100. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/creative-studio/agents/illustration-expert.md +0 -0
  101. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/creative-studio/archetype.dna.yaml +0 -0
  102. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/creative-studio/shared-context.tpl.md +0 -0
  103. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/creative-studio/skills/creative-content-copywriting.md +0 -0
  104. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/features/vector-memory/vectus.md +0 -0
  105. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/fix-loop/README.md +0 -0
  106. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/fix-loop/agents/fix-loop-orchestrator.tpl.md +0 -0
  107. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/fix-loop/archetype.dna.yaml +0 -0
  108. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/fix-loop/workflows/workflow-closed-loop-fix.tpl.md +0 -0
  109. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/agents/monitoring-specialist.md +0 -0
  110. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/agents/ops-engineer.md +0 -0
  111. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/agents/systems-debugger.md +0 -0
  112. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/archetype.dna.yaml +0 -0
  113. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/shared-context.tpl.md +0 -0
  114. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/skills/infra-backup-dr.md +0 -0
  115. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/skills/infra-k8s-gitops.md +0 -0
  116. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/skills/infra-pipeline-cicd.md +0 -0
  117. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/infra-ops/skills/infra-security-hardening.md +0 -0
  118. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/agents/agent-optimizer.md +0 -0
  119. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/agents/concierge.md +0 -0
  120. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/agents/security-auditor.md +0 -0
  121. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/archetype.dna.yaml +0 -0
  122. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/skills/meta-art-direction.md +0 -0
  123. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/skills/meta-memory-quality.md +0 -0
  124. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/skills/meta-project-navigation.md +0 -0
  125. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/skills/meta-toolsmithing.md +0 -0
  126. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/meta/skills/upgrade-review.md +0 -0
  127. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/minimal/agents/custom-agent.tpl.md +0 -0
  128. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/minimal/archetype.dna.yaml +0 -0
  129. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/agents/backend-engineer.md +0 -0
  130. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/agents/platform-architect.md +0 -0
  131. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/archetype.dna.yaml +0 -0
  132. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/shared-context.tpl.md +0 -0
  133. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/skills/platform-deploy-release.md +0 -0
  134. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/skills/platform-reliability-sre.md +0 -0
  135. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/platform-engineering/templates/architecture.tpl.md +0 -0
  136. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/agents/stack-engineer.md +0 -0
  137. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/archetype.dna.yaml +0 -0
  138. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-ansible.md +0 -0
  139. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-docker.md +0 -0
  140. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-go.md +0 -0
  141. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-k8s.md +0 -0
  142. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-python.md +0 -0
  143. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-terraform.md +0 -0
  144. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/stack/skills/stack-typescript.md +0 -0
  145. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/web-app/agents/fullstack-dev.md +0 -0
  146. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/web-app/archetype.dna.yaml +0 -0
  147. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/web-app/shared-context.tpl.md +0 -0
  148. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/archetypes/web-app/skills/web-frontend-ux.md +0 -0
  149. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/README.md +0 -0
  150. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/README.md +0 -0
  151. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/activated/README.md +0 -0
  152. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/README.md +0 -0
  153. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/index.html +0 -0
  154. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/package-lock.json +0 -0
  155. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/package.json +0 -0
  156. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/App.tsx +0 -0
  157. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/components/AddTaskForm.tsx +0 -0
  158. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/components/TaskItem.tsx +0 -0
  159. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/components/TaskList.tsx +0 -0
  160. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/main.tsx +0 -0
  161. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/styles.css +0 -0
  162. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/test/AddTaskForm.test.tsx +0 -0
  163. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/test/TaskList.test.tsx +0 -0
  164. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/test/setup.ts +0 -0
  165. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/src/types.ts +0 -0
  166. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/tsconfig.json +0 -0
  167. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/app/web/vite.config.ts +0 -0
  168. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/evals/witnesses/web-app-todo/enforced/README.md +0 -0
  169. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/examples/README.md +0 -0
  170. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/examples/blueprint-minimal/README.md +0 -0
  171. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/examples/blueprint-web-pipeline/README.md +0 -0
  172. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/examples/terraform-houseserver/README.md +0 -0
  173. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/examples/web-app-todo/README.md +0 -0
  174. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/README.md +0 -0
  175. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/autogen/artifacts/agents/autogen-conversation-runner.agent.md +0 -0
  176. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/autogen/artifacts/skills/autogen-conversation-design/SKILL.md +0 -0
  177. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/autogen/extension.json +0 -0
  178. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/autogen/scripts/verify-install.sh +0 -0
  179. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/browser-use/artifacts/agents/browser-use-runner.agent.md +0 -0
  180. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/browser-use/artifacts/instructions/browser-evidence.instructions.md +0 -0
  181. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/browser-use/extension.json +0 -0
  182. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/browser-use/scripts/verify-install.sh +0 -0
  183. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/artifacts/agents/crewai-crew-runner.agent.md +0 -0
  184. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.json +0 -0
  185. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.sh +0 -0
  186. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/artifacts/prompts/crewai-import-crew.prompt.md +0 -0
  187. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/artifacts/skills/crewai-crew-design/SKILL.md +0 -0
  188. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/extension.json +0 -0
  189. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/scripts/register-hooks.sh +0 -0
  190. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/scripts/unregister-hooks.sh +0 -0
  191. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/crewai/scripts/verify-install.sh +0 -0
  192. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/extension.schema.json +0 -0
  193. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/fennara-godot/artifacts/skills/godot-evidence-loop/SKILL.md +0 -0
  194. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/fennara-godot/extension.json +0 -0
  195. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/fennara-godot/scripts/setup-mcp.sh +0 -0
  196. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/fennara-godot/scripts/teardown-mcp.sh +0 -0
  197. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/fennara-godot/scripts/verify-install.sh +0 -0
  198. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/grimoire-mcp/artifacts/instructions/mcp-trust-gate.instructions.md +0 -0
  199. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/grimoire-mcp/artifacts/skills/grimoire-mcp-setup/SKILL.md +0 -0
  200. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/grimoire-mcp/extension.json +0 -0
  201. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/grimoire-mcp/scripts/verify-install.sh +0 -0
  202. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/haystack/artifacts/instructions/haystack-rag-governance.instructions.md +0 -0
  203. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/haystack/artifacts/skills/haystack-pipeline-design/SKILL.md +0 -0
  204. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/haystack/extension.json +0 -0
  205. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/haystack/scripts/verify-install.sh +0 -0
  206. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.json +0 -0
  207. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.sh +0 -0
  208. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/artifacts/instructions/langfuse-observability.instructions.md +0 -0
  209. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/artifacts/skills/langfuse-tracing-setup/SKILL.md +0 -0
  210. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/extension.json +0 -0
  211. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/scripts/register-hooks.sh +0 -0
  212. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/scripts/unregister-hooks.sh +0 -0
  213. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langfuse/scripts/verify-install.sh +0 -0
  214. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langgraph/artifacts/agents/langgraph-graph-runner.agent.md +0 -0
  215. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langgraph/artifacts/prompts/langgraph-import-graph.prompt.md +0 -0
  216. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langgraph/artifacts/skills/langgraph-graph-design/SKILL.md +0 -0
  217. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langgraph/extension.json +0 -0
  218. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/extensions/langgraph/scripts/verify-install.sh +0 -0
  219. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/FREEZE.md +0 -0
  220. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agent-base-compact.md +0 -0
  221. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agent-base.md +0 -0
  222. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agent-mesh-network.md +0 -0
  223. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agent-relationship-graph.md +0 -0
  224. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agent-rules.md +0 -0
  225. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agent2agent.md +0 -0
  226. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-industry-reference.md +0 -0
  227. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/README.md +0 -0
  228. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/capability-map.yaml +0 -0
  229. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/needs-catalog.yaml +0 -0
  230. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/profile-map.yaml +0 -0
  231. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/target-schema.yaml +0 -0
  232. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/acceptance-record.md +0 -0
  233. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/accepted-risks.yaml +0 -0
  234. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/blast-radius-policy.yaml +0 -0
  235. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/browser-tool-contract.yaml +0 -0
  236. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/capability-registry.yaml +0 -0
  237. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/claim-ledger.md +0 -0
  238. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/cluster-action-policy.yaml +0 -0
  239. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/compliance-declaration.md +0 -0
  240. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/compliance-score.yaml +0 -0
  241. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/compression-gate.yaml +0 -0
  242. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/context-contract.yaml +0 -0
  243. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/cost-registry.yaml +0 -0
  244. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/decision-council.yaml +0 -0
  245. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/decision-graph.yaml +0 -0
  246. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/doc-graph-pipeline.yaml +0 -0
  247. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/environment-policy.yaml +0 -0
  248. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/evidence-gates.yaml +0 -0
  249. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/evidence-pack.md +0 -0
  250. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/flow-dsl-manifest.yaml +0 -0
  251. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/guardrail-contract.yaml +0 -0
  252. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/hook-registry.yaml +0 -0
  253. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/incident-registry.yaml +0 -0
  254. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/k8s-agent-manifest.yaml +0 -0
  255. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/knowledge-source-registry.yaml +0 -0
  256. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/llm-provider-registry.yaml +0 -0
  257. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/memory-integrity.yaml +0 -0
  258. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/memory-policy.yaml +0 -0
  259. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/merge-lane.yaml +0 -0
  260. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/mission-brief.md +0 -0
  261. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/observability-policy.yaml +0 -0
  262. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/orchestration-policy.yaml +0 -0
  263. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/pattern-catalog.yaml +0 -0
  264. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/privilege-boundary.yaml +0 -0
  265. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/prompt-firewall.yaml +0 -0
  266. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/prompt-version-log.yaml +0 -0
  267. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/remediation-plan.yaml +0 -0
  268. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/remote-hygiene.yaml +0 -0
  269. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/retention-registry.yaml +0 -0
  270. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/risk-control-matrix.yaml +0 -0
  271. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/rule-packs.yaml +0 -0
  272. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/runtime-provider-contract.yaml +0 -0
  273. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/runtime-surface-registry.yaml +0 -0
  274. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/task-board.yaml +0 -0
  275. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/task-envelope.md +0 -0
  276. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/tool-registry.yaml +0 -0
  277. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/visual-evidence.yaml +0 -0
  278. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/waivers.yaml +0 -0
  279. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/workflow-state-manifest.yaml +0 -0
  280. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/templates/workspace-isolation.yaml +0 -0
  281. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/agentic-standard/traceability.yaml +0 -0
  282. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/archetype-dna.schema.yaml +0 -0
  283. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/cc-reference.md +0 -0
  284. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/cc-verify.sh +0 -0
  285. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/context-router.md +0 -0
  286. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/instructions/grimoire-project.instructions.md +0 -0
  287. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-changelog.prompt.md +0 -0
  288. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-dream.prompt.md +0 -0
  289. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-health-check.prompt.md +0 -0
  290. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-pre-push.prompt.md +0 -0
  291. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-self-heal.prompt.md +0 -0
  292. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-session-bootstrap.prompt.md +0 -0
  293. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-status.prompt.md +0 -0
  294. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot/prompts/grimoire-upgrade-review.prompt.md +0 -0
  295. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/copilot-extension/README.md +0 -0
  296. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/cross-validation-trust.md +0 -0
  297. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/delivery-contract.tpl.md +0 -0
  298. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/event-log-shared-state.md +0 -0
  299. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/glossary.yaml +0 -0
  300. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/grimoire-trace.md +0 -0
  301. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/honest-uncertainty-protocol.md +0 -0
  302. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/.pre-commit-config.tpl.yaml +0 -0
  303. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/commit-msg.sh +0 -0
  304. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/mnemo-consolidate.sh +0 -0
  305. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/post-checkout.sh +0 -0
  306. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/post-commit.sh +0 -0
  307. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/pre-commit-cc.sh +0 -0
  308. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/pre-push.sh +0 -0
  309. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hooks/prepare-commit-msg.sh +0 -0
  310. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/commands/grimoire-doctor.md +0 -0
  311. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/commands/grimoire-gate.md +0 -0
  312. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/commands/grimoire-proof.md +0 -0
  313. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/commands/grimoire-recall.md +0 -0
  314. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/commands/grimoire-verify.md +0 -0
  315. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/skills/grimoire-agent-dispatch.md +0 -0
  316. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/skills/grimoire-evidence.md +0 -0
  317. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hosts/skills/grimoire-memory.md +0 -0
  318. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/hybrid-parallelism-engine.md +0 -0
  319. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/mcp/grimoire-mcp-server.md +0 -0
  320. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/.gitignore +0 -0
  321. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/backends/__init__.py +0 -0
  322. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/backends/backend_lexical.py +0 -0
  323. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/backends/backend_local.py +0 -0
  324. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/backends/backend_ollama.py +0 -0
  325. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/backends/backend_qdrant_local.py +0 -0
  326. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/backends/backend_qdrant_server.py +0 -0
  327. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/contradiction-log.tpl.md +0 -0
  328. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/dependency-graph.tpl.md +0 -0
  329. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/docker-compose.memory-target.tpl.yml +0 -0
  330. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/docker-compose.memory.tpl.yml +0 -0
  331. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/failure-museum.tpl.md +0 -0
  332. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/handoff-log.tpl.md +0 -0
  333. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/k8s-qdrant.tpl.yaml +0 -0
  334. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/maintenance.py +0 -0
  335. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/mem0-bridge.py +0 -0
  336. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/memory_seed.py +0 -0
  337. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/network-topology.tpl.md +0 -0
  338. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/oss-references.tpl.md +0 -0
  339. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/requirements/requirements-minimal.txt +0 -0
  340. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/requirements/requirements-ollama.txt +0 -0
  341. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/requirements/requirements-qdrant.txt +0 -0
  342. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/requirements.txt +0 -0
  343. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/memory/session-save.py +0 -0
  344. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/orchestrator-gateway.md +0 -0
  345. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/productive-conflict-engine.md +0 -0
  346. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/README.md +0 -0
  347. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/audit-report.md +0 -0
  348. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/capacity-planning.md +0 -0
  349. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/compliance-check.md +0 -0
  350. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/dependency-updates.md +0 -0
  351. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/design-tokens.md +0 -0
  352. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/network-troubleshoot.md +0 -0
  353. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/operational-mode.md +0 -0
  354. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/periodic-report.md +0 -0
  355. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/secret-rotation.md +0 -0
  356. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/strategic-plan.md +0 -0
  357. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/prompt-templates/troubleshoot.md +0 -0
  358. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/question-escalation-chain.md +0 -0
  359. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/registry/README.md +0 -0
  360. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/selective-huddle-protocol.md +0 -0
  361. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/sessions/README.md +0 -0
  362. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/sil-collect.sh +0 -0
  363. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/README.md +0 -0
  364. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/adversarial-consensus.py +0 -0
  365. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-bench.py +0 -0
  366. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-caller.py +0 -0
  367. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-darwinism.py +0 -0
  368. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-debugger.py +0 -0
  369. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-forge.py +0 -0
  370. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-integrity.py +0 -0
  371. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-test.py +0 -0
  372. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-watch.py +0 -0
  373. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/agent-worker.py +0 -0
  374. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/antifragile-score.py +0 -0
  375. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/auto-doc.py +0 -0
  376. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/context-guard.py +0 -0
  377. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/context-summarizer.py +0 -0
  378. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/cross-migrate.py +0 -0
  379. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/dep-check.py +0 -0
  380. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/distill.py +0 -0
  381. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/dna-evolve.py +0 -0
  382. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/dream.py +0 -0
  383. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/expert-tool-chain.py +0 -0
  384. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/failure-museum.py +0 -0
  385. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/gen-tests.py +0 -0
  386. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/grimoire-completion.zsh +0 -0
  387. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/grimoire-mcp-tools.py +0 -0
  388. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/grimoire-setup.py +0 -0
  389. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/image-prompt.py +0 -0
  390. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/incubator.py +0 -0
  391. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/llm-router.py +0 -0
  392. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/memory-lint.py +0 -0
  393. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/memory-sync.py +0 -0
  394. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/message-bus.py +0 -0
  395. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/nso.py +0 -0
  396. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/observatory.py +0 -0
  397. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/preflight-check.py +0 -0
  398. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/quick-check.sh +0 -0
  399. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/rag-indexer.py +0 -0
  400. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/rag-retriever.py +0 -0
  401. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/reasoning-stream.py +0 -0
  402. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/schema-validator.py +0 -0
  403. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/session-lifecycle.py +0 -0
  404. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy.py +0 -0
  405. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-post-edit.sh +0 -0
  406. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-stop.sh +0 -0
  407. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-sense.sh +0 -0
  408. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy_hooks/scripts/stigmergy_hook.py +0 -0
  409. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy_hooks/stigmergy-emit.json +0 -0
  410. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/stigmergy_hooks/stigmergy-sense.json +0 -0
  411. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/swarm-consensus.py +0 -0
  412. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/synapse-trace.py +0 -0
  413. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/token-budget.py +0 -0
  414. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/tool-registry.py +0 -0
  415. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/tool-resolver.py +0 -0
  416. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/vision-judge.py +0 -0
  417. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/tools/web-browser.py +0 -0
  418. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/boomerang-orchestration.md +0 -0
  419. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/github-cc-check.yml.tpl +0 -0
  420. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/incident-response.md +0 -0
  421. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/party-mode.md +0 -0
  422. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/repo-map-generator.md +0 -0
  423. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/state-checkpoint.md +0 -0
  424. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/subagent-orchestration.md +0 -0
  425. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/workflow-graph.tpl.yaml +0 -0
  426. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/framework/workflows/workflow-status.tpl.md +0 -0
  427. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/planning/README.md +0 -0
  428. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/registry/blueprints/README.md +0 -0
  429. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/registry/blueprints/project-upgrade.blueprint.json +0 -0
  430. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/rust/grimoire-dispatch-core/pyproject.toml +0 -0
  431. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/rust/grimoire-flows-core/pyproject.toml +0 -0
  432. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/rust/grimoire-hosts-core/pyproject.toml +0 -0
  433. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/rust/grimoire-policies-core/pyproject.toml +0 -0
  434. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/rust/grimoire-schema-core/pyproject.toml +0 -0
  435. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/rust/grimoire-traces-core/pyproject.toml +0 -0
  436. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/scripts/gen-site-data.py +0 -0
  437. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/__init__.py +0 -0
  438. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/__main__.py +0 -0
  439. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/archetypes/__init__.py +0 -0
  440. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/bridges/__init__.py +0 -0
  441. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/bridges/a2a_adapter.py +0 -0
  442. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/bridges/host.py +0 -0
  443. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/bridges/schemas.py +0 -0
  444. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/__init__.py +0 -0
  445. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/_condensed_help.py +0 -0
  446. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/_lazy.py +0 -0
  447. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/_shared.py +0 -0
  448. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_agent.py +0 -0
  449. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_autonomy.py +0 -0
  450. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_blueprint.py +0 -0
  451. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_cadrage.py +0 -0
  452. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_ceremony.py +0 -0
  453. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_cockpit.py +0 -0
  454. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_context_pack.py +0 -0
  455. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_debugger.py +0 -0
  456. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_dispatch.py +0 -0
  457. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_ext.py +0 -0
  458. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_features.py +0 -0
  459. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_flow.py +0 -0
  460. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_gates.py +0 -0
  461. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_hooks.py +0 -0
  462. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_init.py +0 -0
  463. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory.py +0 -0
  464. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_bundle.py +0 -0
  465. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_lexical.py +0 -0
  466. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_ops.py +0 -0
  467. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_packs.py +0 -0
  468. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_projections.py +0 -0
  469. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_rules.py +0 -0
  470. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_memory_shared.py +0 -0
  471. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_merge.py +0 -0
  472. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_migrate.py +0 -0
  473. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_mission.py +0 -0
  474. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_needs.py +0 -0
  475. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_orchestrate.py +0 -0
  476. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_policies.py +0 -0
  477. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_proposals.py +0 -0
  478. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_providers.py +0 -0
  479. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_queue.py +0 -0
  480. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_route.py +0 -0
  481. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_self_update.py +0 -0
  482. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_serve.py +0 -0
  483. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_setup.py +0 -0
  484. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_standard.py +0 -0
  485. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_standard_claims.py +0 -0
  486. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_stigmergy.py +0 -0
  487. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_portfolio.py +0 -0
  488. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_review.py +0 -0
  489. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_usage.py +0 -0
  490. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_wave.py +0 -0
  491. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_task_worktree.py +0 -0
  492. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_up_prove.py +0 -0
  493. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_up_task_unification.py +0 -0
  494. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_upgrade.py +0 -0
  495. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_upgrade_flow.py +0 -0
  496. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_verify_install.py +0 -0
  497. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_web.py +0 -0
  498. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/cmd_workflows.py +0 -0
  499. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/cli/updater.py +0 -0
  500. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/__init__.py +0 -0
  501. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/backends/__init__.py +0 -0
  502. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/backends/neo4j.py +0 -0
  503. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/freshness.py +0 -0
  504. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/graph.py +0 -0
  505. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/parser.py +0 -0
  506. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/codegraph/schemas.py +0 -0
  507. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/__init__.py +0 -0
  508. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/agent_freshness.py +0 -0
  509. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/agentic_standard.py +0 -0
  510. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/archetype_resolver.py +0 -0
  511. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/cadrage.py +0 -0
  512. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/claude_activation.py +0 -0
  513. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/console_encoding.py +0 -0
  514. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/deprecation.py +0 -0
  515. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/error_codes.py +0 -0
  516. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/exceptions.py +0 -0
  517. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/execution_needs.py +0 -0
  518. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/fsio.py +0 -0
  519. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/grounding.py +0 -0
  520. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/integrity.py +0 -0
  521. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/kit_hashes.py +0 -0
  522. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/layered_rules.py +0 -0
  523. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/layout.py +0 -0
  524. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/learned_rules.py +0 -0
  525. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/log.py +0 -0
  526. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/merge.py +0 -0
  527. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/needs_suggest.py +0 -0
  528. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/override_drift.py +0 -0
  529. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/profile_floor_doctor.py +0 -0
  530. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/project.py +0 -0
  531. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/project_kind.py +0 -0
  532. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/project_types.py +0 -0
  533. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/resolver.py +0 -0
  534. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/retry.py +0 -0
  535. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/rule_resolution.py +0 -0
  536. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/scaffold.py +0 -0
  537. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/scanner.py +0 -0
  538. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/stack_pack_verifiers.py +0 -0
  539. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/stack_packs.py +0 -0
  540. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/__init__.py +0 -0
  541. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/acceptance_test_run.py +0 -0
  542. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/base.py +0 -0
  543. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/claim_ledger_verify.py +0 -0
  544. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/claim_proof_resolve.py +0 -0
  545. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/controls.py +0 -0
  546. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/criterion_coverage.py +0 -0
  547. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/dispatch_cost_slo.py +0 -0
  548. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/evidence_chain.py +0 -0
  549. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/evidence_journal.py +0 -0
  550. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/gate_codegraph.py +0 -0
  551. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/gate_remedy.py +0 -0
  552. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/gate_review_checks.py +0 -0
  553. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/gate_test_run.py +0 -0
  554. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/no_tests_collected.py +0 -0
  555. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/pattern_codes.py +0 -0
  556. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/registry.py +0 -0
  557. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/rules_check.py +0 -0
  558. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/tree_fingerprint.py +0 -0
  559. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_checks/verifiers.py +0 -0
  560. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_effective_profile.py +0 -0
  561. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_generation.py +0 -0
  562. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_profile_manifest.py +0 -0
  563. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_state.py +0 -0
  564. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_task_scaffold.py +0 -0
  565. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_traceability.py +0 -0
  566. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/standard_upstream.py +0 -0
  567. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/task_board_ledger.py +0 -0
  568. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/core/task_unification_doctor.py +0 -0
  569. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/costs.py +0 -0
  570. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/data/__init__.py +0 -0
  571. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/data/stack-packs/python.yaml +0 -0
  572. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/evidence/__init__.py +0 -0
  573. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/evidence/schemas.py +0 -0
  574. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/__init__.py +0 -0
  575. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/attestation.py +0 -0
  576. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/autonomy.py +0 -0
  577. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/blueprint_loader.py +0 -0
  578. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/directive.py +0 -0
  579. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/dispatch_executor.py +0 -0
  580. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/doctor.py +0 -0
  581. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/engine.py +0 -0
  582. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/executor.py +0 -0
  583. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/extract.py +0 -0
  584. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/fingerprint.py +0 -0
  585. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/genres.py +0 -0
  586. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/live_runs.py +0 -0
  587. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/pilot.py +0 -0
  588. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/registry.py +0 -0
  589. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/schemas.py +0 -0
  590. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/flows/transfer.py +0 -0
  591. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/__init__.py +0 -0
  592. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/capabilities.py +0 -0
  593. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/collect.py +0 -0
  594. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/__init__.py +0 -0
  595. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/_shared.py +0 -0
  596. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/activation.py +0 -0
  597. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/authority_guard.py +0 -0
  598. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/calibration.py +0 -0
  599. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/context_capsule.py +0 -0
  600. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/done_gate.py +0 -0
  601. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/gate_override.py +0 -0
  602. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/gate_summary.py +0 -0
  603. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/human_turns.py +0 -0
  604. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/pause_brake.py +0 -0
  605. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/profile_floor.py +0 -0
  606. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/record.py +0 -0
  607. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/repetition_guard.py +0 -0
  608. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/self_view.py +0 -0
  609. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/session_memory.py +0 -0
  610. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/steering.py +0 -0
  611. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/subagent_gate.py +0 -0
  612. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/task_context.py +0 -0
  613. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/decisions/tool_policy.py +0 -0
  614. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/generic.py +0 -0
  615. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/emitters/opencode.py +0 -0
  616. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/events.py +0 -0
  617. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/host_version.py +0 -0
  618. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/secrets.py +0 -0
  619. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/hosts/surface.py +0 -0
  620. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/mcp/__init__.py +0 -0
  621. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/__init__.py +0 -0
  622. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/architecture.py +0 -0
  623. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/__init__.py +0 -0
  624. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/_qdrant_mixin.py +0 -0
  625. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/base.py +0 -0
  626. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/lexical.py +0 -0
  627. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/local.py +0 -0
  628. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/mempalace.py +0 -0
  629. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/ollama.py +0 -0
  630. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/qdrant.py +0 -0
  631. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/tantivy_local.py +0 -0
  632. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/backends/weaviate.py +0 -0
  633. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/bundle.py +0 -0
  634. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/embedding.py +0 -0
  635. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/health_cache.py +0 -0
  636. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/hot.py +0 -0
  637. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/manager.py +0 -0
  638. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/migration.py +0 -0
  639. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/neo4j_graph.py +0 -0
  640. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/profiles.py +0 -0
  641. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/projections.py +0 -0
  642. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/retrieval.py +0 -0
  643. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/shared.py +0 -0
  644. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/sidecar.py +0 -0
  645. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/supersession.py +0 -0
  646. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/taxonomy.py +0 -0
  647. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/memory/validation.py +0 -0
  648. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/__init__.py +0 -0
  649. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/beads_adapter.py +0 -0
  650. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/board.py +0 -0
  651. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/ceremony.py +0 -0
  652. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/ceremony_budget.py +0 -0
  653. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/check_gate.py +0 -0
  654. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/dispatch.py +0 -0
  655. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/dispatch_advice.py +0 -0
  656. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/dispatch_history.py +0 -0
  657. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/effects.py +0 -0
  658. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/empty_green.py +0 -0
  659. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/intake.py +0 -0
  660. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/ledger_snapshot.py +0 -0
  661. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/liveness.py +0 -0
  662. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/orchestrate.py +0 -0
  663. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/pause.py +0 -0
  664. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/plans_registry.py +0 -0
  665. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/prepush_fence.py +0 -0
  666. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/projections.py +0 -0
  667. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/recall.py +0 -0
  668. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/report.py +0 -0
  669. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/review_receipt.py +0 -0
  670. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/route_dispatch.py +0 -0
  671. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/route_report.py +0 -0
  672. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/router.py +0 -0
  673. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/routing_policy.py +0 -0
  674. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/session_link.py +0 -0
  675. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/task_flow_adapter.py +0 -0
  676. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/task_unification.py +0 -0
  677. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/task_worktree.py +0 -0
  678. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/timer.py +0 -0
  679. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/trace.py +0 -0
  680. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/verify.py +0 -0
  681. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/wave_checkpoint.py +0 -0
  682. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/missions/waves.py +0 -0
  683. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/__init__.py +0 -0
  684. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/engine.py +0 -0
  685. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/rules_config.py +0 -0
  686. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/schemas.py +0 -0
  687. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/security.py +0 -0
  688. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/session_state.py +0 -0
  689. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/policies/temporal.py +0 -0
  690. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/proposals.py +0 -0
  691. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/providers/__init__.py +0 -0
  692. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/providers/audit.py +0 -0
  693. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/providers/quota.py +0 -0
  694. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/providers/registry.py +0 -0
  695. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/providers/routing.py +0 -0
  696. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/providers/state.py +0 -0
  697. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/py.typed +0 -0
  698. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/registry/__init__.py +0 -0
  699. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/registry/agents.py +0 -0
  700. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/registry/discovery.py +0 -0
  701. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/registry/local.py +0 -0
  702. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/repo_gates/__init__.py +0 -0
  703. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/__init__.py +0 -0
  704. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/adapter_base.py +0 -0
  705. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/crewai_adapter.py +0 -0
  706. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/gascity_converter.py +0 -0
  707. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/kernel.py +0 -0
  708. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/langgraph_adapter.py +0 -0
  709. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/p2p_guard.py +0 -0
  710. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/recipes.py +0 -0
  711. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/runtime/schemas.py +0 -0
  712. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/__init__.py +0 -0
  713. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/_common.py +0 -0
  714. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/agent_creation.py +0 -0
  715. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/agent_forge.py +0 -0
  716. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_checkpoint.py +0 -0
  717. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_context.py +0 -0
  718. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_diff.py +0 -0
  719. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_eval_runner.py +0 -0
  720. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_evals.py +0 -0
  721. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_gate.py +0 -0
  722. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_primitives.py +0 -0
  723. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_resilience.py +0 -0
  724. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_scatter.py +0 -0
  725. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_security.py +0 -0
  726. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/blueprint_telemetry.py +0 -0
  727. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/context_guard.py +0 -0
  728. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/context_pack.py +0 -0
  729. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/context_router.py +0 -0
  730. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/cost_model.py +0 -0
  731. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/ext_manager.py +0 -0
  732. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/features.py +0 -0
  733. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/flow_runs.py +0 -0
  734. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/forge_http.py +0 -0
  735. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/forge_routes.py +0 -0
  736. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/forge_server.py +0 -0
  737. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/handoff.py +0 -0
  738. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/harmony_check.py +0 -0
  739. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/install_receipt.py +0 -0
  740. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/install_trust.py +0 -0
  741. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/memory_link.py +0 -0
  742. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/memory_lint.py +0 -0
  743. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/memory_setup.py +0 -0
  744. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/memory_vectors.py +0 -0
  745. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/model_windows.py +0 -0
  746. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/preflight_check.py +0 -0
  747. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/project_health.py +0 -0
  748. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/project_registry.py +0 -0
  749. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/project_setup.py +0 -0
  750. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/project_update.py +0 -0
  751. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/request_guard.py +0 -0
  752. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/serve_data.py +0 -0
  753. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/source_assist.py +0 -0
  754. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/stigmergy.py +0 -0
  755. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/stigmergy_hooks.py +0 -0
  756. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/untrusted.py +0 -0
  757. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/update_bundle.py +0 -0
  758. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/update_channels.py +0 -0
  759. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/view_cache.py +0 -0
  760. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_api.py +0 -0
  761. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_exec.py +0 -0
  762. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_language.py +0 -0
  763. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_legacy.py +0 -0
  764. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_memory.py +0 -0
  765. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_portfolio.py +0 -0
  766. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/tools/workspace_routes.py +0 -0
  767. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/__init__.py +0 -0
  768. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/intervals.py +0 -0
  769. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/otel_conventions.py +0 -0
  770. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/otlp.py +0 -0
  771. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/schemas.py +0 -0
  772. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/traces/transcript_usage.py +0 -0
  773. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/workflows/__init__.py +0 -0
  774. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/workflows/registry.py +0 -0
  775. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/src/grimoire/workflows/teams.py +0 -0
  776. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/DESIGN-BRIEF-memory.md +0 -0
  777. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/DESIGN-BRIEF-observability.md +0 -0
  778. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/DESIGN-REVIEW-2026-09.md +0 -0
  779. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/DESIGN-SPEC-workspace-2026-09.md +0 -0
  780. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/anatomy.html +0 -0
  781. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/atelier-nav.js +0 -0
  782. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/atelier.css +0 -0
  783. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/atelier.html +0 -0
  784. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/blueprint-onboarding.js +0 -0
  785. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/blueprints.html +0 -0
  786. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-assist.js +0 -0
  787. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-composer.js +0 -0
  788. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-core.js +0 -0
  789. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-cost.js +0 -0
  790. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-diff.js +0 -0
  791. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-docs.js +0 -0
  792. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-evals.js +0 -0
  793. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-lexicon.js +0 -0
  794. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-library.js +0 -0
  795. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-manual.js +0 -0
  796. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-sections.js +0 -0
  797. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-team.css +0 -0
  798. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-team.js +0 -0
  799. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2-tour.js +0 -0
  800. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/bp2.css +0 -0
  801. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/activity.json +0 -0
  802. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/architecture.json +0 -0
  803. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/catalogue-export.json +0 -0
  804. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/extensions.json +0 -0
  805. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/insights.json +0 -0
  806. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/kit-coverage.json +0 -0
  807. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/memory.json +0 -0
  808. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/meta.json +0 -0
  809. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/observatory.json +0 -0
  810. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/atlas-ops/activity.json +0 -0
  811. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/atlas-ops/insights.json +0 -0
  812. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/atlas-ops/memory.json +0 -0
  813. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/atlas-ops/meta.json +0 -0
  814. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/atlas-ops/observatory.json +0 -0
  815. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/atlas-ops/taskboard.json +0 -0
  816. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/grimoire-kit/activity.json +0 -0
  817. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/grimoire-kit/insights.json +0 -0
  818. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/grimoire-kit/memory.json +0 -0
  819. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/grimoire-kit/meta.json +0 -0
  820. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/grimoire-kit/observatory.json +0 -0
  821. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/grimoire-kit/taskboard.json +0 -0
  822. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/ledger-data/activity.json +0 -0
  823. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/ledger-data/insights.json +0 -0
  824. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/ledger-data/memory.json +0 -0
  825. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/ledger-data/meta.json +0 -0
  826. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/ledger-data/observatory.json +0 -0
  827. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/ledger-data/taskboard.json +0 -0
  828. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/sentinel-sec/activity.json +0 -0
  829. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/sentinel-sec/insights.json +0 -0
  830. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/sentinel-sec/memory.json +0 -0
  831. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/sentinel-sec/meta.json +0 -0
  832. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/sentinel-sec/observatory.json +0 -0
  833. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects/sentinel-sec/taskboard.json +0 -0
  834. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/projects.json +0 -0
  835. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/data/taskboard.json +0 -0
  836. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/demo.html +0 -0
  837. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/Concevoir.dc.html +0 -0
  838. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/ConcevoirClair.dc.html +0 -0
  839. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/Couleurs.dc.html +0 -0
  840. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/DAArdoise.dc.html +0 -0
  841. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/DAPapier.dc.html +0 -0
  842. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/DAStudio.dc.html +0 -0
  843. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/DirectionB.dc.html +0 -0
  844. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/DirectionC.dc.html +0 -0
  845. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/DirectionD.dc.html +0 -0
  846. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/Encre.dc.html +0 -0
  847. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/EncreClair.dc.html +0 -0
  848. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/Main.dc.html +0 -0
  849. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/Mecaniques.dc.html +0 -0
  850. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/Source.dc.html +0 -0
  851. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/canvas.json +0 -0
  852. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/concevoir-dark.jpg +0 -0
  853. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/concevoir-light.jpg +0 -0
  854. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/executer-dark.jpg +0 -0
  855. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/executer-light.jpg +0 -0
  856. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/memoire-dark.jpg +0 -0
  857. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/memoire-light.jpg +0 -0
  858. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/observer-dark.jpg +0 -0
  859. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/observer-light.jpg +0 -0
  860. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/piloter-dark.jpg +0 -0
  861. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/piloter-light.jpg +0 -0
  862. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/source-dark.jpg +0 -0
  863. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/captures/source-light.jpg +0 -0
  864. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/gen-couleurs.py +0 -0
  865. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/gen-skins.py +0 -0
  866. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design/workspace-2026-09/shell.tpl.html +0 -0
  867. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/01-cockpit-portefeuille-desktop.jpg +0 -0
  868. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/02-cockpit-portefeuille-full.jpg +0 -0
  869. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/03-cockpit-portefeuille-mobile.jpg +0 -0
  870. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/04-kanban-desktop.jpg +0 -0
  871. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/05-kanban-mobile.jpg +0 -0
  872. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/06-observatoire-desktop.jpg +0 -0
  873. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/07-observatoire-full.jpg +0 -0
  874. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/08-atelier-desktop.jpg +0 -0
  875. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/09-atelier-mobile.jpg +0 -0
  876. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/10-memoire-desktop.jpg +0 -0
  877. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/11-blueprints-desktop.jpg +0 -0
  878. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/12-extensions-desktop.jpg +0 -0
  879. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/13-patterns-desktop.jpg +0 -0
  880. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/14-cockpit-index-desktop.jpg +0 -0
  881. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/15-workspace-lot1-sombre-decouverte.png +0 -0
  882. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/16-workspace-lot1-clair-decouverte.png +0 -0
  883. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/17-workspace-lot1-sombre-concentration.png +0 -0
  884. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/design-review-2026-09/18-workspace-lot1-clair-concentration.png +0 -0
  885. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/documentation.html +0 -0
  886. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/extensions.html +0 -0
  887. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/JetBrainsMono-Regular.woff2 +0 -0
  888. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  889. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/OFL-instrument.txt +0 -0
  890. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/OFL-jetbrains.txt +0 -0
  891. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/instrument-sans-400.woff2 +0 -0
  892. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/instrument-sans-500.woff2 +0 -0
  893. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/fonts/instrument-sans-600.woff2 +0 -0
  894. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-base.css +0 -0
  895. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-charts.css +0 -0
  896. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-landing.css +0 -0
  897. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-motion.css +0 -0
  898. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-motion.js +0 -0
  899. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-nav.js +0 -0
  900. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-observatory.js +0 -0
  901. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/forge-tokens.css +0 -0
  902. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/game-ui.html +0 -0
  903. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/grimoire-mode.js +0 -0
  904. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/index.html +0 -0
  905. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/kanban.html +0 -0
  906. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/labs.html +0 -0
  907. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/media/capture-reelle.png +0 -0
  908. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/media/teaser-720.mp4 +0 -0
  909. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/media/teaser-poster.jpg +0 -0
  910. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/memory.html +0 -0
  911. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/observability.html +0 -0
  912. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/patterns.html +0 -0
  913. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/portfolio.html +0 -0
  914. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/project-picker.js +0 -0
  915. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/tools/check-links.py +0 -0
  916. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/README.md +0 -0
  917. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/api.js +0 -0
  918. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/fonts/Geist-Medium.woff2 +0 -0
  919. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/fonts/Geist-Regular.woff2 +0 -0
  920. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/fonts/Geist-SemiBold.woff2 +0 -0
  921. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/fonts/GeistMono-Medium.woff2 +0 -0
  922. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/fonts/GeistMono-Regular.woff2 +0 -0
  923. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/fonts/OFL.txt +0 -0
  924. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/glossary.js +0 -0
  925. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/icons.svg +0 -0
  926. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/index.html +0 -0
  927. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/live.js +0 -0
  928. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/markdown.js +0 -0
  929. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/shell.css +0 -0
  930. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/shell.js +0 -0
  931. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/concevoir.js +0 -0
  932. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/memoire.js +0 -0
  933. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/observer.js +0 -0
  934. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/piloter.js +0 -0
  935. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/source-editor.js +0 -0
  936. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/source.css +0 -0
  937. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/spaces/source.js +0 -0
  938. {grimoire_kit-3.63.0 → grimoire_kit-3.64.0}/web/workspace/tokens.css +0 -0
@@ -7,6 +7,76 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.64.0] - 2026-10-20
11
+
12
+ - feat(registry): `grimoire registry dispatches` mesure les rafales de délégation par session (#687, lot B). Le rapport agrégeait les délégations (#657) par agent et par modèle, sans les regrouper ni par session ni dans le temps : impossible de savoir si la règle « plusieurs sous-agents dans un seul message » est suivie. Nouveau `TraceLedger.delegation_bursts()` (`src/grimoire/traces/ledger.py`) : par `run_id` (= `session_id` de l'hôte), les délégations triées par `started_at` sont chaînées, un écart <= `DELEGATION_BURST_WINDOW_S` (10 s, valeur de départ non mesurée) prolonge la rafale, une rafale compte >= 2 délégations. Rendu : sessions avec délégation, sessions avec rafale, nombre de rafales, taille moyenne, en texte et dans le JSON (clé `bursts`). Datation corrigée (revue) : `_record_delegation` (`src/grimoire/hosts/decisions/evidence_trace.py`) datait la délégation à `now` au `PostToolUse`, soit la FIN d'un sous-agent au premier plan, ce qui biaisait la mesure vers zéro. `started_at` vaut désormais `now - totalDurationMs` (champ `tool_response`, observé dans les transcripts locaux) ; un lancement en arrière-plan (`tool_input.run_in_background`) reçoit le tag `background` et reste daté à maintenant ; sans durée, tag `timing:completion`, et `delegation_bursts` compte ces sessions à part (`sessions_timing_approx`) au lieu de taire le biais. Aucun autre champ ajouté côté écriture : `run_id` et `started_at` existaient déjà. Les événements sans horodatage lisible, ou sans session fournie par l'hôte (`run_id` de repli `delegation-<uuid>`), sont ignorés. Test : `tests/unit/cli/test_app.py` (session avec rafale de 3, isolée, sans rafale, horodatage absent ou illisible, journal vide).
13
+ - fix(hosts): la commande de hook émise se lance dans l'environnement de l'hôte, et `grimoire doctor` le vérifie (#760). Constat : sous Windows, kit installé par `uv pip install` dans un venv, tous les outils du concierge étaient bloqués sous Copilot. Les émetteurs écrivaient le nom nu `grimoire-hook` (`hosts/emitters/base.py`), introuvable hors d'un shell où le venv est activé ; ni l'émission ni `doctor` ne le détectaient.
14
+ - `hosts/hook_launcher.py` résout le programme à l'émission : `GRIMOIRE_HOOK_COMMAND` s'il est posé ; nom nu si `grimoire-hook` se résout dans le PATH sans le venv actif (pipx, `uv tool` : fichiers inchangés) ; chemin relatif au projet si le venv est sous la racine (Copilot : `./.venv/bin/grimoire-hook`, variante `windows` `.\.venv\Scripts\grimoire-hook.exe`, `cwd: "."` ; Claude Code : `"$CLAUDE_PROJECT_DIR"/.venv/bin/grimoire-hook`) ; sinon chemin absolu, signalé en dégradation « propre à cette machine ».
15
+ - `grimoire doctor` : contrôle `hook_commands` (fail, module `cli/doctor_hooks.py`) quand le programme d'un hook généré ne se lance pas hors du venv actif, avec le fichier fautif et le remède (`uv tool install` ou `grimoire host sync`).
16
+ - `docs/troubleshooting.md` §18. La suite fige `GRIMOIRE_HOOK_COMMAND=grimoire-hook` (`tests/conftest.py`) pour que les fichiers générés ne dépendent pas du poste.
17
+ - Preuve : `tests/unit/test_hook_launcher.py` (13 tests : résolution, émission Copilot et Claude Code, guillemets, `doctor`). Rejeu de bout en bout sous Linux : projet avec `.venv` local (`uv pip install -e`), PATH sans installation globale → les commandes générées rendent `allow`, le nom nu sort en 127 ; `doctor` vert sur les nouveaux fichiers, rouge sur des fichiers 3.62.1.
18
+ - Non vérifié : aucun hôte Windows réel ; le shell que VS Code utilise sous Windows et son traitement d'une commande de hook introuvable ne sont pas documentés ; le lien entre ce défaut et le blocage observé reste une hypothèse. Une équipe multi-OS sur Claude Code reçoit la forme de l'OS qui a lancé la synchro. `.mcp.json` (`grimoire-mcp`) a le même défaut, non traité ici.
19
+ - fix(workspace): le pouls du cockpit (UI-3) ratait une session réécrite en place sous Windows : un journal de session ou un bail de même taille, réécrit dans le même tic d'horloge du système de fichiers, gardait la même empreinte, et l'interface ne se rafraîchissait pas. Les petits JSON surveillés (≤ 64 Kio) entrent dans l'empreinte par leur contenu ; le journal d'événements, qui ne fait que croître, reste jugé par mtime et taille. Rouge-avant / vert-après : `test_un_battement_de_session_change_l_empreinte` fige la taille et le mtime (`os.utime`) et échoue sur l'ancien code.
20
+ - fix(policies): les suppressions destructives PowerShell et cmd sont reconnues comme `rm -rf` (#761). Constat sur 3.62.1 : en profil governed, sous Copilot (`runInTerminal`), `rm -rf build` était refusé mais `Remove-Item -Recurse -Force`, `Remove-Item build -Recurse`, `rd /s`, `rmdir /s` et `del /s` sortaient en `allow` : `_DESTRUCTIVE_PATTERNS` (`hosts/decisions/tool_facts.py`) ne connaissait que des formes POSIX, le garde était inopérant sous Windows.
21
+ - Nouveaux motifs, bornés à un segment de commande : `Remove-Item` et ses alias (`ri`, `rm`, `rd`, `rmdir`, `del`, `erase`) avec `-Recurse` ou `-Force` sous n'importe quel préfixe PowerShell (`-r`, `-Rec`, `-Recurse:$true`), un pipeline vers `Remove-Item`, `rd|rmdir /s`, `del|erase /s|/q`, `Format-Volume`, `Clear-Disk`, `Initialize-Disk`.
22
+ - `pwsh -Command`, `powershell -c` et `cmd /c` rejoignent `bash -c` parmi les introducteurs dont l'argument entre guillemets reste inspecté.
23
+ - Rouge-avant / vert-après : `tests/test_policy_windows_destructive.py` (22 formes reconnues, 10 témoins non destructifs dont `Remove-Item fichier.txt`, `Get-ChildItem -Recurse`, `dir /s`, `rd build`, un message de commit qui les cite).
24
+ - Non fait : pas de test sur un hôte Windows réel ; les alias PowerShell redéfinis par l'utilisateur et `Remove-Item` lancé via un script `.ps1` ne sont pas lus.
25
+ - fix(missions): la réservation de fichiers exclusifs est jugée sous le verrou d'écriture du ledger, et un claim hérité sans `expires_at` ne dure plus éternellement (campagne « Dépasser AI-DLC », chantier W1-07). Constat : `TaskService._check_exclusive_files` lisait les claims des autres tâches puis `transition_task` écrivait, le second hors du verrou (reproduit : un claim s'intercale entre les deux, deux tâches réservent le même fichier ; deux threads et deux processus de même) ; `TaskClaim.is_expired` tient un `expires_at` vide pour « jamais », donc un claim d'avant les baux gardait ses fichiers à vie.
26
+ - Changement : la règle vit dans `missions/reservation.py` et `TaskService` s'en sert toujours en amont (verdict `exclusive_files`, trace du refus) ; le ledger la rappelle sous son verrou par `claim_guard` (K10 WIP, K11 pause), qui reçoit désormais le claim demandé en troisième argument optionnel. Un perdant de la course reçoit un `GrimoireMissionError` qui nomme le fichier et la tâche détentrice, rien n'est écrit. Au rejeu, un claim sans `expires_at` reçoit l'horodatage de son événement plus le TTL par défaut (4 h) : déterministe, sans écriture à la lecture ; un claim hérité plus vieux que le TTL est expiré et libère ses fichiers. Aucun verrou nouveau : celui de `fsio.locked` (avec ou sans `fcntl`) déjà tenu par `transition_task`.
27
+ - Rouge-avant / vert-après : `tests/unit/missions/test_locked_reservation.py` (7 cas) ; sur `origin/main` 5 échecs (fenêtre de course, deux threads, deux processus x10, deux claims hérités), 0 après.
28
+ - Non fait : pas d'événement d'audit à la dérivation du TTL (le rejeu ne peut pas écrire) ; `ledger.claim_task` appelé directement sans `claim_guard` (ledger hors `TaskService`) n'est pas gardé.
29
+
30
+ - feat(evidence): `grimoire evidence resolve <base>..<head>` juge chaque preuve écrite dans une plage git contre les objets git de sa tête (campagne « Dépasser AI-DLC », chantier D-13, ENG-6/ENG-9). Constat : la fiche était différée faute d'ancrage ; W3-02 ne résout la cellule Preuve que contre l'arbre de travail courant, et le journal chaîné de W4-03 (`evidence-log.jsonl`) vit sous `.runs/`, ignoré par git, avec une ancre qui se réécrit avec lui. Aucune commande ne disait si les preuves d'un ensemble de commits tiennent encore.
31
+ - Décision d'ancrage : `<range>` est une plage de révisions git. Ses preuves sont les jetons de la cellule Preuve (forme W3-02) des lignes de `claim-ledger.md` qu'un commit de la plage a écrites ou modifiées (`git blame` à la tête) ; chaque jeton est jugé contre les blobs de la tête et du commit qui a écrit l'affirmation, jamais contre l'arbre de travail.
32
+ - Changement : `core/standard_checks/evidence_resolve.py` (plage `A..B` ou commit seul, plage symétrique refusée, projet dans un sous-dossier du dépôt, variables `GIT_DIR` & co. retirées de l'environnement de git) et `cli/cmd_evidence.py` (groupe `evidence`, chargé à la demande). Statuts : `resolved` (lignes citées identiques depuis le commit de l'affirmation, empreinte `@sha256:` égale, run `test-run.json` commité, vert, même `run_id`, avec `tree_fingerprint`), `stale`, `missing`, `unknown` (mémoire, URL, texte libre, fichier absent au commit de l'affirmation, run illisible ou sans empreinte, erreur du résolveur). Une affirmation « prouvé » sans preuve est `missing`. Sortie texte et `-o json` (`anchor` avec base, tête, nombre de commits et `head_published`, `summary`, `fingerprint` des lignes citées) ; code 1 dès qu'une preuve n'est pas `resolved`, 2 sur une plage illisible ou hors d'un dépôt git ; une plage sans preuve rend `empty` (code 0) et le dit.
33
+ - Rouge-avant / vert-après : `tests/unit/cli/test_cmd_evidence_resolve.py` (33 cas, dépôts git jetables) ; contre les sources de `origin/main` 33 échecs (commande `evidence` inconnue), 33 verts après.
34
+ - Non fait / non mesuré : pas de provenance chemin -> tâche -> verdict (ENG-6) ni d'échelle de confiance : le seul lien entre un chemin commité et une tâche est le journal local, et l'attribuer depuis lui paraîtrait plus fort que son ancrage ; pas de check requis en CI (ENG-9). Une ligne citée déplacée sans être modifiée est `stale` (comparaison à numéro de ligne égal) ; une référence au fichier entier est `stale` dès que le fichier change ; un dossier cité est `missing` ; `@sha256:` est comparé aux octets du blob git (fins de ligne du dépôt, pas celles d'un checkout Windows avec `autocrlf`) ; une URL d'archive est `unknown` (aucun accès réseau), alors que W3-02 l'accepte ; seul `claim-ledger.md` est lu, pas `evidence-pack.md`.
35
+ - feat(cadrage): questions structurées dans le ledger, posées par lot (campagne « Dépasser AI-DLC », chantier W6-07, issue #564, ADP-8). Constat : K6 (#771) garait une tâche sur une seule question à la fois (`Waiting.question`) ; deux clarifications faisaient deux interruptions et deux notifications (la seconde `task ask` est refusée tant que la première attend : `waiting → waiting`), une question n'avait ni « bloquante ou non », ni « pourquoi », ni identité stable (une reprise la reposait), aucune réponse ne pouvait être déduite par l'agent avec sa source, et rien ne disait au bout de la tâche combien de questions avaient été posées, à qui et pourquoi.
36
+ - Changement : le ledger existant est étendu, sans second registre. `Question` gagne `blocking`, `why` et `key` (écrits seulement hors défaut : une ligne K6 se relit à l'identique) ; `Waiting.batch` porte les autres questions du lot. `missions/questions.py` rejoue `task.question_asked`, `task.human_answered` (origine humaine seulement) et le nouveau `task.question_resolved` dans `MissionTask.questions`, et lit le statut (`open`, `answered`, `deduced`, `not_awaited`). `TaskService.ask_batch` pose un lot en une transition vers `waiting(human)` (une carte, une notification), ne repose pas une question dont la clé est déjà répondue ou déduite, inscrit une non bloquante sans garer la tâche et trace une déduite (non bloquante, `source` obligatoire) sans la poser. `answer` accepte toute question ouverte du lot et ne rend la tâche que quand toutes les bloquantes sont tranchées (le tick aussi) ; `resolve_question` refuse une bloquante. Surfaces : `task ask --from lot.yaml` / `--non-blocking` / `--why` / `--key`, `task questions [--open]`, `task resolve --source`, `task decisions` liste les questions ouvertes du lot ; MCP `task_update` (`ask` avec `questions`, `resolve`) et `task_show.questions_summary` ; cockpit : la carte de la vue Décisions montre une réponse par question ouverte du lot, avec son « pourquoi ».
37
+ - Rouge-avant / vert-après : `tests/unit/test_question_batches.py` (13 cas : test de fait de l'issue — deux clarifications, une interruption, une notification —, libération seulement quand toutes les bloquantes sont tranchées, tick, agent qui ne répond pas, reprise sans re-création, registre relu et questions K6 incluses, non bloquante, déduction sourcée, forme K6 inchangée, CLI, MCP, route du cockpit) et `tests/e2e/test_workspace_executer_question_batch.py` (lot tranché question par question depuis la vue Décisions). Sur `origin/main` le module échoue à la collecte (`grimoire.missions.questions` absent) ; sonde comportementale sur la base : 2 interruptions pour 2 clarifications, question déjà répondue reposée, `task ask --from` et `task questions` inconnus (exit 2), `task_update(questions=…)` refusé. Après : 13/13 et e2e 194/194.
38
+ - Non fait / non mesuré : `grimoire cadrage plan` (exigences acceptées vers tâches à critère mécanique, ADP-9) et l'échec de `standard verify` quand une question bloquante du cadrage reste ouverte (ADP-8, critère 2) ne sont pas livrés ; le reçu portable (lot 4.7) n'existe pas, le registre est dans `task show`/`task questions` ; « jamais poser ce qui se déduit du dépôt » reste une discipline de l'agent (la déduction est tracée, pas vérifiée) ; `task ask` sans les options du lot et les checkpoints de flow gardent le comportement K6 (une question, sans déduplication) ; la notification reste une par lot, pas une par question restante.
39
+ - feat(web): sources du teaser de la vitrine sous `web/teaser/` (tâche GAO-sources-du-t-001) : scène HTML, scripts de rendu et de son, listes de rushes avec leurs licences, polices woff2 avec licences OFL, README en français sur l'ordre de rendu. Les chemins sont relatifs au dossier ; ni rushes, ni images extraites, ni `.mp4`/`.wav` ne sont commités (`.gitignore`). Non fait / non mesuré : le teaser n'a pas été re-rendu depuis ce dossier.
40
+ - fix(missions): reprise d'une tâche garée, claim expiré re-réclamable, revue sans checks (KAN-FRICTIONS). Constat du 2026-10-19 sur la Forge (kit 3.63.0, profil governed, WIP global 5) : une session qui gare sa tâche (`task wait --reason paused`) ne pouvait plus la reprendre une fois le bail plus vieux que son TTL (le frein du bail demandait au ledger de le renouveler, le ledger refusait « tâche waiting, aucun bail », et toute commande Bash de la session était refusée, `grimoire task resume` compris) ; un claim dont `expires_at` était passé répondait « déjà claimed … jusqu'à <date passée> » ; le WIP global comptait ce claim mort ; `task move --to needs_verification` exigeait un pack que `task verify` refusait de produire sans commande déclarée.
41
+ - Changement : le frein du bail (`hosts/decisions/lease_brake.py`) ne renouvelle plus le bail d'une tâche garée ; au-delà du TTL il refuse avec un motif qui nomme la reprise, et laisse passer `grimoire task resume|show|attach|renew <sa tâche>` (options `--epoch`, `--actor`, `--session-id` seulement ; guillemets, `$`, enchaînement, autre tâche, `--project-root`/`--ledger-root` refusés). La sortie d'attente renouvelle le battement de cœur (`lease.mark_waiting`) : une reprise après une longue pause n'est plus aussitôt jugée perdue. `lease.lost_reason` porte la règle de perte (`fence_pending`, `expires_at`, `heartbeat`) que `lease_view` utilise ; un claim perdu se réclame directement (`missions/reclaim.py`, sous le verrou : barrière du bail, `task.transitioned` vers `ready` marqué `reclaimed`, nouveau claim au nouvel epoch, non compté comme tentative) par son titulaire, ou par un autre acteur si l'hôte du claim a un frein vérifié ; horloge incohérente ou bail vivant : refus inchangé. Le WIP (garde du claim et vue d'admission du tick) ne compte que les claims vivants. `task verify --evidence <fichier>` (tâche sans commande seulement) écrit un pack déclaratif : fichiers du projet hachés (SHA-256, taille, `file:<chemin>`), verdict `skipped` (`created_by: declarative`), code de sortie 4 ; la revue s'ouvre, la clôture reste refusée par `review_gate`, qui le dit. MCP : `task_update move` refuse le sentinelle `unknown` comme un état inconnu. L'exemption « `grimoire task` simple » du frein refuse aussi `"$(…)"` et l'accent grave entre guillemets doubles.
42
+ - Déjà corrigé sur `main` (prouvé par test, inchangé) : le MCP connaît `waiting` depuis K6 (#801, 3.63.0) et lit un état d'une version plus récente comme `unknown` sans planter ; l'erreur « 'waiting' is not a valid TaskState » venait d'un serveur MCP lancé depuis un clone en 3.57.0. Les appels MCP `task_update(resume)` et `task_show` d'une session garée passaient déjà le frein.
43
+ - Rouge-avant / vert-après : `tests/unit/missions/test_kanban_resume_frictions.py` (33 cas, dont un de bout en bout par le point d'entrée réel du hook dans un processus séparé) ; 25 échecs sur `origin/main`, 33 verts après.
44
+ - Non fait / non mesuré : la reprise directe d'un claim perdu ne rejoue pas les autres prudences de la récolte (travail non poussé du worktree, tentatives épuisées) ; un claim repris puis refusé par une autre garde (pause, WIP par rôle) reste `ready` ; la clôture d'une tâche à preuve déclarative reste sans chemin gouverné (#707).
45
+
46
+ - fix(missions): le classifieur de vérifiabilité ne fait plus monter en V2 sur une preuve attendue en prose, et reconnaît « fichier attendu X existe » (#835). Constat du 2026-10-19 : une tâche aux critères « fichier _scratch/x.json existe » et « fichier _scratch/x.md existe » restait V2 parce que la preuve attendue « x.json et x.md » était comptée comme critère non reconnu, donc `recommended_model` nul et délégation sur le modèle de la session.
47
+ - Changement : `_criteres` garde toute l'`acceptance` mais n'ajoute une `expected_evidence` que si elle est reconnue (mécanique ou revue), car la preuve décrit ce qu'on produit, pas un verdict (le champ avait été inclus pour qu'un critère sérieux logé là ne passe pas en V0 faute d'être lu, cela reste vrai). Le motif `fichier_attendu` accepte un qualificatif fermé (attendu, généré, produit, créé, livré, de sortie) et « est présent / créé / généré / produit », « existe bien » ; aucun mot libre entre « fichier » et le verbe.
48
+ - Rouge-avant / vert-après : `tests/unit/missions/test_verifiability.py` et le corpus étiqueté, 3 échecs sur `origin/main`, 0 après ; « un fichier décrit pourquoi X existe » reste V2. Non fait : formulations anglaises voisines (« expected file X exists »).
49
+
50
+ - test(e2e): scénario live Claude Code, le hook de preuve bloque une clôture sans preuve puis le gate se ferme, rapport JSON (campagne « Dépasser AI-DLC », chantier D-12). Constat : aucun e2e ne faisait tourner un vrai hôte sur un projet enrôlé ; le dossier e2e ne couvre que le cockpit (Playwright), et rien ne montrait qu'un `Stop` refusé par le kit l'est aussi sous `claude -p`.
51
+ - Changement : `scripts/bench/live_claude_e2e.py` prépare un projet jetable `governed` (hooks émis pour Claude Code, relais `grimoire`/`grimoire-hook` vers `src/`), fait attester l'octroi W5-06 et l'approbation de la commande de vérification par deux tours d'une session d'hôte, puis joue deux appels sans humain (`GRIMOIRE_UNATTENDED=1`) : U1 écrit le code sans preuve, U2 (`--resume`) remet la preuve. Le rapport lit le TraceLedger, le Mission Ledger, les journaux d'autorité et les packs, jamais ce que la session déclare ; il compte le coût réel (delta de session sous `--resume`, inconnu = arrêt, reste du plafond en `--max-budget-usd`, garde de B-06), refuse `--bare`, construit l'environnement de zéro, charge seul le MCP du projet (`--strict-mcp-config`), écarte les `CLAUDE.md` parents (`claudeMdExcludes`), purge et cherche les identifiants en fin de run. `tests/live/test_claude_code_live.py` (marqueur `live_host`, désélectionné par `addopts`, ignoré sans `GRIMOIRE_LIVE_CLAUDE_MAX_USD`, en échec avec `GRIMOIRE_REQUIRE_LIVE=1`). Procédure : `docs/bench-three-arms.md` §16.
52
+ - Rouge-avant / vert-après : `tests/unit/test_live_claude_e2e.py` (28 cas, sans modèle) : erreur de collecte sur `origin/main` (module absent), 28 verts après.
53
+ - Passe réelle (2026-10-19, autorisée par Guilhem, plafond 5 $) : 1,0118 $ au total, dont 0,4875 $ pour le passage retenu (4 appels `claude-opus-5-5`, Claude Code 2.1.302) ; deux premiers passages à 0 $ (« Not logged in » : MCP d'un dépôt parent, `HOME` isolé par la suite de tests), un diagnostic haiku à 0,0652 $. Premier `Stop` de U1 en `block` (`refusal:task_unparked`, aucun pack au ledger), premier `Stop` de U2 en `allow`, `gate check --strict` vert, tâche en `needs_verification`.
54
+ - Non fait / non mesuré : n = 1 sur une tâche d'un fichier ; Copilot non couvert ; aucun job CI ni garde de release n'exige ce test (décision 11 du plan) ; l'octroi est obtenu et relu mais ne décide aucun checkpoint (aucun flow ne tourne) ; les tours humains sont des messages pré-enregistrés rejoués avec l'autorisation de l'opérateur.
55
+ - fix(hooks): une session qui a rendu sa tâche (`needs_verification`) ou l'a bloquée, échouée, annulée ou fermée n'est plus refusée au `Stop` comme « clôture hors tâche » ; le motif de chaque refus est écrit au TraceLedger (chantier D-12). Constat du scénario live : `stop_scope` ne résout une tâche que `claimed`/`running` ; rendue, elle retombait sur `bootstrap`, et la session qui avait écrit était refusée — après avoir fait le geste même que le refus de `Stop` lui demandait. Et cette consigne, pour une tâche `claimed`, était une transition que le ledger refuse (`claimed → needs_verification`).
56
+ - Changement : `enrolment.parked_task_of_session` (états `waiting`, `needs_verification`, `blocked`, `failed`, `cancelled`, `closed`, claim de cette session) remplace la seule attente K6 dans `evidence_gate._parked_task` ; `needs_verification` reste jugée sur ses gates de preuve (refus nommé si rouges). La consigne d'une tâche `claimed` passe par `--to running`. `runtime._record_decision` ajoute `refusal:<motif>` (`task_unparked`, `no_active_task`, `gates_red`, `guard_error`) aux traces de refus.
57
+ - Rouge-avant / vert-après : `tests/unit/test_stop_handover.py` (7 cas) : 5 échecs sur `origin/main` (« Clôture hors tâche » au lieu de la sortie ou du refus nommé, consigne `claimed` invalide, aucun motif de refus dans la trace), 7 verts après ; `test_waiting_surfaces.py` inchangé et vert.
58
+ - Non fait : une session qui a rendu sa tâche puis réécrit hors tâche n'est pas distinguée (la dernière tâche du journal de session la couvre) ; la sortie d'une tâche `blocked`/`failed`/`cancelled` ne revérifie rien.
59
+ - docs(bench): campagne B-06 palier 1, bras `aidlc` seul (AI-DLC 2.11.0, scope `express`, pilote `scripted-person`), les 20 tâches du lot L, k=1, sous plafond dur de 160 $ (`docs/bench-three-arms.md` §15.6 pré-enregistrement, §15.7 résultats). Dépense exacte 87,2406 $ (125 appels, aucun coût inconnu ; la somme des `costUSD` du `modelUsage` final de chaque session donne le même total). Succès aux tests cachés 17/17 runs valides (IC95 Wilson [81,6 %, 100 %]), 20/20 tous runs ; coût par run médian 4,592 $ (0,886 à 5,930 $), environ 28 fois le `nu` et 22 fois `kit-gov` du lot L sur les mêmes tâches ; 494 s médians ; 4 interventions humaines simulées par tâche résolue (B-05). Comparaison descriptive seulement : le banc est saturé et l'écart minimal détectable à 20 tâches est de 44 points.
60
+ - Constat : dans 18 runs sur 20, l'agent principal écrit la solution avant le stage Code Generation ; le succès mesure surtout le modèle, le coût mesure la cérémonie AI-DLC. Deux runs parquent le workflow en Reverse Engineering sur la consigne commune et reçoivent 12 `Approved.` inutiles (0,51 $ comptés). Trois signalements W1-08b relus : faux positifs (`./` et `/`).
61
+ - Palier 2 recalculé à la médiane mesurée : 40 runs de plus, 183,68 $, soit 270,92 $ pour le bras `aidlc` paliers 1 et 2 (362,76 $ avec la marge de 1,5) ; non lancé, non autorisé.
62
+ - Non fait : aucun code modifié ; `build_report` n'agrège toujours pas `aidlc` ; données brutes hors dépôt, comme celles du lot L.
63
+ - feat(hosts): matrice règle × hôte calculée depuis les émetteurs, `grimoire host matrix` / `grimoire host probe`, et `host_sync.ok` exigé (campagne « Dépasser AI-DLC », chantier D-07). Constat : la dégradation par hôte était déclarée (`Degradation`) mais jamais confrontée à ce que l'émetteur écrit, et `host sync` / `up` annonçaient « à jour » alors qu'un fichier hôte modifié à la main avait été préservé, donc non régénéré.
64
+ - Changement : `hosts/matrix.py` rend le plan réel de chaque hôte et cherche chaque hook (commande `--event`) et chaque règle de couche (ligne et `globs:`/`applyTo:`) dans ce que le plan écrit, sinon la `Degradation` qui le dit ; sont des échecs `undeclared` (ni écrit ni déclaré), `inert` (écrit pour un événement que l'hôte ne déclenche pas) et `misscoped` (règle scopée écrite sans sa portée). `hosts/probe.py` confronte la matrice au disque sans rien écrire (`applied`, `declared`, `missing`, `stale`, `conflict`) ; `host probe` sort en 1 si un fichier émis manque, est périmé ou édité à la main, et aussi si aucun hôte n'a été sondé. `HostSyncOutcome.ok` est faux quand un fichier est préservé (champ `conflicts`) ; l'étape `host_sync` de `up` échoue sur un conflit d'un hôte activé ; `upgrade-flow apply` échoue (`host_sync`, champ `host_drift`) si des surfaces hôtes manquent ou sont périmées après `up`. Les hôtes sans fichier de règles scopées déclarent aussi les règles non livrées (couche extérieure, à l'ombre, en conflit).
65
+ - Rouge-avant / vert-après : `tests/unit/test_hosts_matrix_probe.py`, `test_hosts_sync_ok.py` et `tests/unit/cli/test_cmd_host_probe.py` (27 cas) ; sur `origin/main` 10 échecs et 1 erreur de collecte (module `grimoire.hosts.matrix` absent), 0 après.
66
+ - Non fait / non mesuré : la sonde vérifie que le hook est câblé dans le fichier que l'hôte lit, pas que l'hôte l'exécute (le rejeu reste `upgrade-flow probe-hook`, Claude seul) ; un fichier modifié à la main reste préservé (`conflict`) et fait désormais échouer `up` au lieu de passer pour synchronisé, `host sync --force` l'écrase ; seuls les hooks de gouvernance et les règles de couche sont des lignes de la matrice, pas les agents, skills ni commandes.
67
+ - Correction de revue (D-07-S1-01) : `up` rendait `host_sync failed` à chaque passage sur un fichier hôte légitime de l'utilisateur (un `.claude/agents/concierge.md` à lui, un `settings.json` avec commentaires), `doctor` répondait 28/28 et la seule issue offerte, `host sync --force`, l'écrasait. Nouvelle clé `hosts.preserve` (liste de chemins, schéma et validation) : le fichier n'est jamais écrit, `up` passe en le listant « user-owned », `host probe` le rend `user-owned` (jamais `applied`), `host matrix` ajoute `file:<chemin>` au statut `preserved` et marque `preserved` les hooks et règles qu'il aurait portés (non livrés). Sans déclaration, `up` reste en échec mais nomme les deux issues (déclarer, ou `--force`), et `doctor` échoue aussi (`host_sync_<hôte>`) : un fichier préservé n'est jamais présenté comme synchronisé. La sonde rend `disabled` (non verte) un hook câblé quand `disableAllHooks: true` figure dans `.claude/settings.json` ou `settings.local.json`.
68
+ - Correction de CI (parité Rust) : `hosts.preserve` est aussi déclaré dans le cœur Rust `grimoire-schema-core` (schéma identique, clé connue, validation relatif / sans `..`) et dans `validator.py`, qui signalait la clé comme inconnue ; 6 cas de parité ajoutés.
69
+ - Rouge-avant / vert-après (correction) : `tests/unit/test_hosts_preserve.py` (18 cas) ; 15 rouges sur le commit précédent, 18 verts après ; scénario `init` + `up` avec un `concierge.md` à l'utilisateur rejoué en CLI (échec nommant les deux issues avant déclaration, `up` rc 0 deux fois de suite après, fichier intact, `host sync --force` ne l'écrase pas).
70
+ - Non fait / non mesuré (correction) : `disableAllHooks` n'est lu que dans les deux fichiers du projet (pas `~/.claude/settings.json` ni les réglages d'organisation) et seulement pour Claude Code ; `hosts.preserve` ne s'applique qu'à un chemin émis par le kit (une entrée sans correspondance est ignorée sans avertissement) ; l'échec de `doctor` sans déclaration est un changement de comportement (28/28 devient 27/28 sur un tel projet).
71
+ - test(cli): les 11 commandes de file, d'orchestration et de vague arrivées sans preuve (`queue plan`, `queue release`, `orchestrate pause|resume|status|tick|install-timer|uninstall-timer`, `task wave-checkpoint|approve-check|review`) portent le marqueur `covers` (D-09). Les tests existants qui les exerçaient par un sous-groupe Typer passent par l'application racine (`["queue", "plan", ...]`), les cas manquants sont écrits : `task review` (nominal, NOT-READY fondé, refus), `task approve-check` (JSON, terminal nu refusé, sans commande), `task wave-checkpoint` (action inconnue, empreinte périmée), `orchestrate tick` sans `--apply` (rien d'écrit), minuteur avec `systemctl` injecté et sans systemd. Aucun défaut trouvé dans les commandes. Non mesuré : le marqueur reste une déclaration que le script ne rejoue pas.
72
+ - feat(bench): bras `aidlc` du banc comparatif, AI-DLC 2.11.0 épinglé, scope `express`, HOME isolé, dry-run sans modèle et plafond en dollars fermé par défaut (campagne « Dépasser AI-DLC », chantier B-06). Constat : le protocole comparatif (section 6 du plan) n'avait aucun bras AI-DLC, son coût n'était « pas mesuré » et `three_arms.py` lance ses campagnes sans plafond en dollars. AI-DLC ne documente aucun mode sans humain qui lève ses gates : `AIDLC_UNATTENDED=1` retient l'autorité humaine (`CHANGELOG.md` d'AI-DLC 2.11.0, l. 129 et 281-284).
73
+ - Changement : `scripts/bench/aidlc_arm.py` vérifie le tag `v2.11.0` d'un clone de référence (commit `6a378b53`, lecture seule), installe AI-DLC par l'installeur du tag sous `homes/aidlc` (`AIDLC_BIN_DIR`, `AIDLC_INSTALL_ROOT`, `XDG_DATA_HOME`), lance `aidlc config --harness claude --mcp none --yes` dans chaque dépôt de tâche et joue les mêmes tâches que `nu`/`kit-gov` (préparation W1-08a, contrôle de transcription W1-08b, tests cachés, `RunRecord` sous `arm: "aidlc"`). Deux pilotes au choix du pré-enregistrement : `unattended` (mode documenté, une intervention déclarée par run) et `scripted-person` (configuration spéciale déclarée : `Approved.` rejoué par `claude -p --resume`, au plus 12 fois). `--dry-run` n'appelle aucun modèle et écrit le pré-enregistrement (empreinte sha256) que `--run` exige à l'identique. `--run` refuse de partir sans `--max-total-usd` ; `state/aidlc-budget.jsonl` encadre chaque appel (`begin`/`end`), le cumul connu est comparé au plafond avant chaque appel, et un coût inconnu, un appel jamais terminé ou une ligne illisible bloquent tout appel suivant. `--estimate` chiffre un run (2,13 à 7,70 $ en `scripted-person`) et le protocole (151 à 485 $ à 20 tâches par bras, 2 963 à 9 527 $ au n requis par B-02) depuis le tarif implicite et les coûts mesurés du lot L, hypothèses dans `docs/bench-three-arms.md` §15. `run_claude_headless` accepte `extra_args`, `append_log` (seules les lignes de l'appel comptent) et `bare` ; le bras `aidlc` n'utilise jamais `--bare`, qui ignorerait les hooks et la skill d'AI-DLC.
74
+ - Rouge-avant / vert-après : `tests/unit/test_bench_aidlc_arm.py` (31 cas : plafond absent, nul, négatif, non fini ; arrêt au plafond ; coût inconnu bloquant ; journal rejoué, appel commencé jamais terminé, ligne illisible ; pilotes ; dry-run de bout en bout sans appel modèle, `subprocess.Popen` refusant `claude` ; pré-enregistrement exigé ; tarif reproduit sur une ligne du lot L). Sur la base (`origin/main`), le module échoue à la collecte (`aidlc_arm.py` absent) ; avec `aidlc_arm.py` sur le `three_arms.py` de la base, les 2 cas de `run_claude_headless` échouent (`TypeError`, paramètres absents) ; tous verts avec le correctif, `tests/unit/test_bench_*.py` complet vert. Dry-run réel sur le clone AI-DLC et le polyglotte du lot L (`--no-install`) : 20 tâches préparées, pré-enregistrement écrit, aucun modèle lancé.
75
+ - Pilote payant (2026-10-19, autorisé par Guilhem, plafond 16 $ pour la passe) : 6,5416 $ dépensés, `python/zipper`, k=1, Opus 5.5, `oauth-copy`, jamais `--bare`. Un run de contrôle montre que, sous `claude -p --resume`, `total_cost_usd` et `modelUsage` cumulent la session (`usage` reste propre à l'appel) : le garde-fou compte désormais la différence avec le total précédent de la session (sans quoi le run `scripted-person` aurait été compté 19,37 $ au lieu de 4,90 $), passe le reste du plafond en `--max-budget-usd` à chaque appel, et `--budget-ledger` partage un plafond entre workspaces. `scripted-person` : 4,8963 $, 6 appels (5 reprises), 85 tours, 618 s, 4 gates levés et 2 questions, `WORKFLOW_COMPLETED`, tests cachés réussis, dans la fourchette estimée (2,13 à 7,70 $). `unattended` : 1,4835 $ (au-dessus de l'hypothèse haute de 1,33 $), 1 appel, 168 s, arrêt en Reverse Engineering ; l'agent principal avait écrit `zipper.py` avant le workflow, donc les tests cachés passent sans qu'AI-DLC ait produit le code, et W1-08b classe le run `invalid` (faux positif probable : gras Markdown lu comme glob). Campagne recalculée à k=3 : 316,62 $ à 20 tâches, 1 567,27 $ à 99, 6 221,57 $ à 393 ; plafond proposé en deux paliers (160 $ puis 500 $ à 20 tâches). n = 1 : aucune conclusion de supériorité. Détail dans `docs/bench-three-arms.md` §15.5. Tests : 7 cas ajoutés (delta de session, total en baisse compté en entier, `modelUsage` non sommé, reste du plafond par appel, `--max-budget-usd` dans la commande, journal partagé), 6 rouges sur le code d'avant, 38 verts.
76
+ - Non fait / non mesuré : n = 1 par pilote, sur une tâche où le `nu` n'échoue jamais ; ce que `--max-budget-usd` compte sous `--resume` (jamais atteint) ; les champs de jetons de `RunRecord` somment `usage`, sans les sous-agents ; `--auth api-key` ajoute `--bare`, qui coupe les hooks : le banc le refuse désormais pour tout bras gouverné (voir ci-dessous ; aucun résultat publié concerné, lots J à L en `oauth-copy`) ; `build_report` n'agrège pas encore `aidlc` ; le plafond de campagne reste la décision de Guilhem (décision 5).
77
+ - Correctif `--bare` (fail-closed). `scripts/bench/bare_guard.py` : `refuse_bare_for_governed_arms` fait échouer `main` (`SystemExit`, avant tout appel payant) quand `--auth api-key` est demandé avec un bras autre que `nu`, et `run_claude_headless(arm=...)` refuse aussi un `--bare` forcé pour ces bras ; seul `nu` garde `--bare`. Rouge-avant / vert-après : 8 cas dans `test_bench_three_arms.py` (rouges sur la base : `arm` inconnu de `run_claude_headless`, `main` démarre le run). `test_bench_model_pin.py` jouait tous les bras sous un `api-key` simulé : il simule désormais `oauth-copy`. Non fait : un `api-key` sans `--bare` pour les bras gouvernés.
78
+ - Correctif W1-08b (faux positif du pilote). `hidden_reads._writes_prose_only` : le corps d'un heredoc écrit par `cat`/`tee` vers un fichier de prose n'est plus lu comme des références (le gras `**zipper**` valait un glob qui visait `hidden-tests/`). Les corps envoyés à un shell ou à un interpréteur, écrits vers un script ou vers une cible inconnue restent analysés ; vraies lectures inchangées. Rouge-avant / vert-après : 16 cas (6 `clean`, dont le cas réel du pilote en extrait minimal ; 10 contre-épreuves `invalid`). La transcription réelle du pilote `unattended` passe de `invalid` à `clean`. Aucun résultat publié n'est reclassé.
79
+
10
80
  ## [3.63.0] - 2026-10-19
11
81
 
12
82
  Le texte intégral des entrées (constat, changement, rouge-avant / vert-après, non fait / non mesuré) est dans [`docs/changelog-3.63.0-detail.md`](docs/changelog-3.63.0-detail.md) : la note de release GitHub est tronquée en silence au-delà de 125 000 unités UTF-16, et ce détail en pèse plus de 500 000.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: grimoire-kit
3
- Version: 3.63.0
3
+ Version: 3.64.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
@@ -234,7 +234,8 @@ testpaths = ["tests"]
234
234
  pythonpath = ["src"]
235
235
  # Pas de `-x` ici : il masquait chaque échec derrière le premier, y compris en CI (D-10).
236
236
  # `perf` (bancs de latence, K13) est hors CI par défaut ; `-m perf` les lance (le dernier `-m` l'emporte).
237
- addopts = "-q --tb=short -m 'not perf'"
237
+ # `live_host` (D-12, vrais appels `claude -p`, payants) aussi : `-m live_host` avec un plafond explicite.
238
+ addopts = "-q --tb=short -m 'not perf and not live_host'"
238
239
  markers = [
239
240
  "covers(*units, level='unit'): surfaces que le test couvre (cli:flow run, genre:fanout, hook:tool-policy, host:opencode), relevées par scripts/check-surface-coverage.py ; level borné par ce que le fichier permet (D-09)",
240
241
  "no_session_token: le test envoie ses écritures sans le jeton de session des serveurs locaux",
@@ -244,6 +245,7 @@ markers = [
244
245
  "bench: marks performance benchmark tests",
245
246
  "crash_bench: banc de coupure du tick (K12) — coupures simulées, rapides ; `-m crash_bench` les isole",
246
247
  "perf: bancs de latence chronométrés (budgets de D21), hors CI par défaut ; lancer avec -m perf",
248
+ "live_host: e2e live d'un hôte réel (D-12, `claude -p` payant), hors CI ; exige GRIMOIRE_LIVE_CLAUDE_MAX_USD, lancer avec -m live_host",
247
249
  ]
248
250
 
249
251
  [tool.coverage.run]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "grimoire-kit-file-hashes/v1",
3
- "generated_for": "3.63.0",
3
+ "generated_for": "3.64.0",
4
4
  "digests": {
5
5
  "002d1e68ce00769ee09d1e94f4af260b952837f7d1557080c2fd505216c23ac0": {
6
6
  "version": "3.11.2",
@@ -0,0 +1 @@
1
+ __version__ = "3.64.0"
@@ -28,6 +28,7 @@ def render(
28
28
  counts: dict[str, dict[str, Any]],
29
29
  misses: dict[str, dict[str, Any]],
30
30
  delegations: dict[str, dict[str, Any]],
31
+ bursts: dict[str, Any],
31
32
  freshness: FreshnessReport | None,
32
33
  freshness_payload: dict[str, Any] | None,
33
34
  ) -> None:
@@ -39,6 +40,7 @@ def render(
39
40
  "dispatches": counts,
40
41
  "misses": misses,
41
42
  "delegations": delegations,
43
+ "bursts": bursts,
42
44
  "freshness": freshness_payload,
43
45
  },
44
46
  indent=2,
@@ -95,6 +97,21 @@ def render(
95
97
 
96
98
  console.print(deleg_tbl)
97
99
 
100
+ if bursts["sessions_with_delegation"]:
101
+ # #687 : mesure de la règle « plusieurs sous-agents dans un seul message ».
102
+ console.print(
103
+ f"Rafales de délégation (>= 2 en {bursts['window_seconds']:g} s, par session) : "
104
+ f"{bursts['sessions_with_burst']}/{bursts['sessions_with_delegation']} sessions avec délégation, "
105
+ f"{bursts['burst_count']} rafale(s), taille moyenne {bursts['mean_burst_size']:g}."
106
+ )
107
+ if bursts["sessions_timing_approx"]:
108
+ console.print(
109
+ f"[yellow]{bursts['sessions_timing_approx']} session(s) avec délégation datée à sa fin "
110
+ "(durée absente) : rafales possiblement sous-estimées.[/yellow]"
111
+ )
112
+ else:
113
+ console.print("[dim]Rafales de délégation : aucune session avec délégation datée.[/dim]")
114
+
98
115
  console.print()
99
116
  if freshness is None:
100
117
  console.print("[dim]Fraîcheur des agents : non évaluée (liste des agents indisponible).[/dim]")
@@ -702,14 +702,13 @@ def doctor(
702
702
  for w in warnings:
703
703
  _record("semantic", passed=False, detail=w)
704
704
 
705
- # 5bis. Hosts declared vs emitted (issue #177) — jamais FAIL : une dette de
706
- # déclaration, pas une panne. INFO pour les fichiers orphelins d'un hôte
707
- # désactivé (`hosts.enabled`), WARN si un hôte activé n'a rien émis du tout.
705
+ # 5bis. Hosts declared vs emitted (issue #177) : INFO orphelins d'un hôte désactivé, WARN hôte activé
706
+ # sans fichier, FAIL fichier hôte préservé non déclaré dans `hosts.preserve` (D-07, comme `up`).
708
707
  if cfg:
709
708
  with _timed_phase("hosts_enabled"):
710
709
  from grimoire.hosts.collect import build_surface
711
710
  from grimoire.hosts.detection import alias_for_host, enabled_host_ids
712
- from grimoire.hosts.emitters import emitter_for, owned_managed_paths, supported_hosts
711
+ from grimoire.hosts.emitters import emitter_for, host_conflict_detail, owned_managed_paths, supported_hosts
713
712
 
714
713
  host_surface = build_surface(target)
715
714
  enabled = enabled_host_ids(target, cfg)
@@ -721,6 +720,8 @@ def doctor(
721
720
  owned = owned_managed_paths(plan, target)
722
721
  alias = alias_for_host(host_id)
723
722
  if host_id in enabled:
723
+ if detail := host_conflict_detail(plan, target, alias): # D-07 : `up` échoue dessus, doctor aussi
724
+ _record(f"host_sync_{alias}", passed=False, detail=detail)
724
725
  if not owned:
725
726
  detail = (
726
727
  f"Hôte {alias} activé (`hosts.enabled`) mais aucun fichier émis — "
@@ -1310,6 +1311,7 @@ LazyTyperGroup.configure(
1310
1311
  "queue": LazyGroupSpec("grimoire.cli.cmd_queue", "queue_app", rich_help_panel="Project"),
1311
1312
  "orchestrate": LazyGroupSpec("grimoire.cli.cmd_orchestrate", "orchestrate_app", rich_help_panel="Project"),
1312
1313
  "needs": LazyGroupSpec("grimoire.cli.cmd_needs", "needs_app", rich_help_panel="Project"),
1314
+ "evidence": LazyGroupSpec("grimoire.cli.cmd_evidence", "evidence_app", rich_help_panel="Project"),
1313
1315
  "gates": LazyGroupSpec("grimoire.cli.cmd_gates", "gates_app", rich_help_panel="Utilities"),
1314
1316
  "policies": LazyGroupSpec("grimoire.cli.cmd_policies", "policies_app", rich_help_panel="Project"),
1315
1317
  "proposals": LazyGroupSpec("grimoire.cli.cmd_proposals", "proposals_app", rich_help_panel="Agents"),
@@ -1337,7 +1339,7 @@ LazyTyperGroup.configure(
1337
1339
  "repair",
1338
1340
  "memory", "hooks", "cadrage", "debugger", "dbg", "registry", "workflows",
1339
1341
  "wf", "standard", "ext", "blueprint", "flow", "cockpit", "task", "mission",
1340
- "stigmergy", "features", "host", "providers", "dispatch", "route", "queue", "orchestrate", "needs", "gates", "proposals", "upgrade-flow", "agent", "web",
1342
+ "stigmergy", "features", "host", "providers", "dispatch", "route", "queue", "orchestrate", "needs", "evidence", "gates", "proposals", "upgrade-flow", "agent", "web",
1341
1343
  "autonomy",
1342
1344
  "config", "completion", "self", "plugins",
1343
1345
  ],
@@ -1471,6 +1473,7 @@ def registry_dispatches(ctx: typer.Context) -> None:
1471
1473
  counts = ledger.agent_dispatch_counts()
1472
1474
  misses = ledger.agent_miss_counts()
1473
1475
  delegations = ledger.delegation_counts()
1476
+ bursts = ledger.delegation_bursts()
1474
1477
 
1475
1478
  cfg: GrimoireConfig | None = None
1476
1479
  try:
@@ -1507,6 +1510,7 @@ def registry_dispatches(ctx: typer.Context) -> None:
1507
1510
  counts=counts,
1508
1511
  misses=misses,
1509
1512
  delegations=delegations,
1513
+ bursts=bursts,
1510
1514
  freshness=freshness,
1511
1515
  freshness_payload=freshness_payload,
1512
1516
  )
@@ -0,0 +1,50 @@
1
+ """``grimoire evidence resolve <range>`` (D-13) : chaque preuve d'une plage git, résolue ou non."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from pathlib import Path
7
+
8
+ import typer
9
+
10
+ from grimoire.core.standard_checks.evidence_resolve import RangeError, resolve_range
11
+
12
+ evidence_app = typer.Typer(help="Resolve the proofs written in a git range.", no_args_is_help=True)
13
+
14
+
15
+ @evidence_app.command("resolve")
16
+ def resolve_command(
17
+ ctx: typer.Context,
18
+ range_spec: str = typer.Argument(..., metavar="RANGE", help="<base>..<head>, or one commit (its own changes)."),
19
+ project_root: Path = typer.Option(Path(), "--project-root", help="Project root inside the git repository."), # noqa: B008
20
+ ) -> None:
21
+ """Judge every proof of the claim-ledger rows written in RANGE against git at its head.
22
+
23
+ Each proof is resolved, stale, missing or unknown; only resolved counts.
24
+ Exit 1 as soon as one proof is not resolved, 2 on a bad range.
25
+ """
26
+ try:
27
+ report = resolve_range(project_root, range_spec)
28
+ except RangeError as exc:
29
+ typer.echo(f"evidence resolve: {exc}", err=True)
30
+ raise typer.Exit(2) from exc
31
+ if str((ctx.obj or {}).get("output", "text")) == "json":
32
+ typer.echo(json.dumps(report.to_dict(), indent=2, ensure_ascii=False))
33
+ else:
34
+ published = {True: "published", False: "not published", None: "no remote"}[report.published]
35
+ base = report.base[:12] if report.base else "(root)"
36
+ typer.echo(f"Range {base}..{report.head[:12]}: {report.commits} commit(s), judged at head ({published}).")
37
+ for proof in report.proofs:
38
+ mark = proof.status if proof.status == "resolved" else proof.status.upper()
39
+ shown = proof.token or "(no proof)"
40
+ typer.echo(f"{mark:9} {proof.task_id} {proof.claim} {shown} ({proof.reason})")
41
+ counts = report.counts()
42
+ if report.verdict == "empty":
43
+ typer.echo("No proof written in this range: nothing proven, nothing refuted.")
44
+ else:
45
+ typer.echo(
46
+ f"{len(report.proofs)} proof(s): {counts['resolved']} resolved, {counts['stale']} stale, "
47
+ f"{counts['missing']} missing, {counts['unknown']} unknown."
48
+ )
49
+ if report.verdict == "unresolved":
50
+ raise typer.Exit(1)
@@ -23,7 +23,16 @@ from grimoire.bridges.schemas import HostId
23
23
  from grimoire.hosts.capabilities import all_profiles, gaps_for, profile_for, resolve_host
24
24
  from grimoire.hosts.collect import build_surface, collect_commands, entry_agent_name
25
25
  from grimoire.hosts.detection import alias_for_host, enabled_host_ids
26
- from grimoire.hosts.emitters import apply_plan, apply_plans, emitter_for, owned_managed_paths, supported_hosts
26
+ from grimoire.hosts.emitters import (
27
+ apply_plan,
28
+ apply_plans,
29
+ conflict_exits,
30
+ emitter_for,
31
+ owned_managed_paths,
32
+ supported_hosts,
33
+ )
34
+ from grimoire.hosts.matrix import build_matrix
35
+ from grimoire.hosts.probe import probe_hosts
27
36
  from grimoire.hosts.runtime import parse_event, run_hook
28
37
  from grimoire.hosts.surface import Enforcement
29
38
 
@@ -31,6 +40,7 @@ host_app = typer.Typer(help="Surfaces hôtes : agents, compétences, commandes e
31
40
  console = Console()
32
41
 
33
42
  _PROJECT_ROOT_OPTION = typer.Option(Path.cwd(), "--project-root", help="Racine du projet.", show_default=False)
43
+ _HOST_ALL_OPTION = typer.Option("all", "--host", help="claude | copilot | codex | cursor | gemini | opencode | all | auto.")
34
44
  _HOST_OPTION = typer.Option("auto", "--host", help="claude | copilot | codex | cursor | gemini | opencode | all | auto.")
35
45
  _DRY_RUN_OPTION = typer.Option(False, "--dry-run", help="Montrer sans écrire.")
36
46
  _FORCE_OPTION = typer.Option(False, "--force", help="Écraser un fichier non généré occupant un chemin géré.")
@@ -256,7 +266,9 @@ def host_sync(
256
266
  console.print(f" [green][OK][/green] {label}")
257
267
  for label in result.skipped:
258
268
  cause = _CONFLICT_TEXT.get(result.conflicts.get(label, ""), "conflit")
259
- console.print(f" [yellow][!][/yellow] {label} — {cause}, préservé (utilisez --force)")
269
+ console.print(f" [yellow][!][/yellow] {label} — {cause}, préservé ({conflict_exits([label])})")
270
+ for label in result.preserved:
271
+ console.print(f" [dim]{label} — à l'utilisateur (hosts.preserve), non écrit[/dim]")
260
272
  for label in result.removed:
261
273
  console.print(f" [yellow][-][/yellow] {label} — {'retirerait' if dry_run else 'retiré'} : la règle source n'existe plus")
262
274
  for degradation in result.degradations:
@@ -376,6 +388,80 @@ def host_status(
376
388
  raise typer.Exit(0 if all(item.in_sync for item in payload) else 1)
377
389
 
378
390
 
391
+ @host_app.command("matrix")
392
+ def host_matrix(
393
+ ctx: typer.Context,
394
+ project_root: Path = _PROJECT_ROOT_OPTION,
395
+ host: str = _HOST_ALL_OPTION,
396
+ ) -> None:
397
+ """Matrice règle × hôte, calculée depuis ce que chaque émetteur écrit réellement.
398
+
399
+ Sort en 1 si une règle n'est ni appliquée ni déclarée dégradée (`undeclared`),
400
+ écrite pour un événement que l'hôte ne déclenche pas (`inert`) ou écrite sans sa portée (`misscoped`).
401
+ """
402
+ targets = tuple(_resolve_targets(host, project_root))
403
+ matrix = build_matrix(project_root, targets)
404
+ if _get_fmt(ctx) == "json":
405
+ typer.echo(json.dumps(matrix.to_dict(), indent=2, ensure_ascii=False))
406
+ raise typer.Exit(0 if matrix.ok and matrix.hosts else 1)
407
+ if not matrix.hosts:
408
+ console.print("[red]Aucun hôte activé[/red] : rien n'a été calculé.")
409
+ raise typer.Exit(1)
410
+ table = Table(title="Matrice règle × hôte")
411
+ table.add_column("Règle")
412
+ for host_id in matrix.hosts:
413
+ table.add_column(profile_for(host_id).display_name)
414
+ subjects = list(dict.fromkeys(c.subject for c in matrix.cells))
415
+ for subject in subjects:
416
+ row = [subject]
417
+ for host_id in matrix.hosts:
418
+ cell = next((c for c in matrix.for_host(host_id) if c.subject == subject), None)
419
+ row.append("" if cell is None else (cell.status if cell.ok else f"[red]{cell.status}[/red]"))
420
+ table.add_row(*row)
421
+ console.print(table)
422
+ for cell in matrix.failing:
423
+ console.print(f" [red][!][/red] {cell.host} {cell.subject} — {cell.status} : {cell.reason}")
424
+ raise typer.Exit(0 if matrix.ok else 1)
425
+
426
+
427
+ @host_app.command("probe")
428
+ def host_probe(
429
+ ctx: typer.Context,
430
+ project_root: Path = _PROJECT_ROOT_OPTION,
431
+ host: str = _HOST_ALL_OPTION,
432
+ ) -> None:
433
+ """Vérifier sur le disque que ce que chaque hôte doit appliquer l'est, à jour. N'écrit rien.
434
+
435
+ Sort en 1 si un fichier émis manque, est périmé ou modifié à la main, si une règle n'est
436
+ plus dans le fichier de l'hôte, ou si aucun hôte n'a pu être sondé (inconnu n'est pas OK).
437
+ """
438
+ targets = tuple(_resolve_targets(host, project_root))
439
+ report = probe_hosts(project_root, targets)
440
+ if _get_fmt(ctx) == "json":
441
+ typer.echo(json.dumps(report.to_dict(), indent=2, ensure_ascii=False))
442
+ raise typer.Exit(0 if report.ok else 1)
443
+ if not report.verified:
444
+ console.print("[red]Aucun hôte activé[/red] : rien n'a été vérifié.")
445
+ raise typer.Exit(1)
446
+ for item in report.hosts:
447
+ state = "[green]appliqué[/green]" if item.ok else "[red]non conforme[/red]"
448
+ console.print(f"[bold]{item.display_name}[/bold] {state}")
449
+ for file in item.files:
450
+ if file.state == "user-owned":
451
+ console.print(f" [dim]{file.path} — à l'utilisateur (hosts.preserve), non livré par le kit[/dim]")
452
+ elif not file.ok:
453
+ console.print(f" [red][!][/red] {file.path} — {file.state}{f' ({file.cause})' if file.cause else ''}")
454
+ for probed in item.cells:
455
+ if not probed.ok:
456
+ why = probed.cell.reason or ("hooks coupés par `disableAllHooks` dans les réglages de l'hôte" if probed.disk == "disabled" else "")
457
+ console.print(f" [red][!][/red] {probed.cell.subject} — {probed.cell.status}/{probed.disk} {why}".rstrip())
458
+ if not report.ok:
459
+ console.print("`grimoire host sync` régénère ce qui manque ou est périmé ; un fichier modifié à la main reste préservé.")
460
+ if report.conflicts:
461
+ console.print(conflict_exits(list(report.conflicts)))
462
+ raise typer.Exit(0 if report.ok else 1)
463
+
464
+
379
465
  @host_app.command("run")
380
466
  def host_run(
381
467
  slug: str = _RUN_SLUG_ARGUMENT,
@@ -1091,24 +1091,31 @@ def task_verify(
1091
1091
  project_root: _PROJECT_ROOT = Path(),
1092
1092
  ledger_root: _LEDGER_ROOT = _DEFAULT_LEDGER,
1093
1093
  evidence_root: _EVIDENCE_ROOT = _DEFAULT_EVIDENCE,
1094
+ evidence: Annotated[list[str] | None, typer.Option(
1095
+ "--evidence", help="Tâche sans commande : fichier de preuve du projet (répétable) — pack déclaratif, verdict skipped.",
1096
+ )] = None,
1094
1097
  ) -> None:
1095
1098
  """Lance les commandes déclarées de la tâche, écrit le pack et le verdict (#772).
1096
1099
 
1097
1100
  Code de sortie 0 si le verdict est `passed`, 1 s'il est `failed` (code de
1098
1101
  sortie inattendu, délai, commande inexécutable), 2 si la tâche ne déclare
1099
- aucune commande : jamais un vert à vide.
1102
+ aucune commande : jamais un vert à vide. Avec `--evidence` (tâche sans
1103
+ commande) : pack déclaratif des fichiers cités, haché, verdict `skipped`,
1104
+ code 4 — la revue s'ouvre, la clôture reste à un humain.
1100
1105
  """
1101
- from grimoire.cli.cmd_task_approve import report_unapproved, verify_payload
1106
+ from grimoire.cli.cmd_task_approve import report_declarative, report_unapproved, verify_payload
1102
1107
  from grimoire.missions.verify import NoDeclaredChecksError, UnapprovedChecksError, verify_task
1103
1108
 
1104
1109
  root = project_root.resolve()
1105
1110
  service = _service(project_root, ledger_root)
1106
1111
  task = _require_task(service, task_id)
1107
1112
  evidence_path = evidence_root if evidence_root.is_absolute() else root / evidence_root
1113
+ if evidence:
1114
+ raise typer.Exit(report_declarative(task, root, evidence_path, evidence, as_json=_fmt(ctx) == "json", console=console))
1108
1115
  try:
1109
1116
  outcome = verify_task(task, root, evidence_path)
1110
1117
  except NoDeclaredChecksError as exc:
1111
- console.print(f"[red]✗[/red] {exc}")
1118
+ console.print(f"[red]✗[/red] {exc} — preuve faite de fichiers : `--evidence <fichier>` (pack déclaratif)")
1112
1119
  raise typer.Exit(2) from exc
1113
1120
  except UnapprovedChecksError as exc:
1114
1121
  report_unapproved(exc, task_id, as_json=_fmt(ctx) == "json", console=console) # W3-03 : rien n'a été lancé.
@@ -106,3 +106,28 @@ def verify_payload(outcome: Any) -> dict[str, Any]:
106
106
  "verdict": outcome.verdict.to_dict(),
107
107
  "receipts": [{k: r[k] for k in ("command_sha256", "tree_fingerprint", "exit", "reused")} for r in outcome.receipts],
108
108
  }
109
+
110
+
111
+ def report_declarative(task: Any, root: Path, evidence_root: Path, paths: list[str], *, as_json: bool, console: Any) -> int:
112
+ """``task verify --evidence`` (KAN-FRICTIONS) : écrit le pack déclaratif, le présente, rend le code de sortie.
113
+
114
+ 4 quand le pack est écrit (jamais 0 : ce n'est pas un vert mécanique), 2 quand un fichier est refusé.
115
+ """
116
+ from grimoire.missions.declarative_evidence import DeclarativeEvidenceError, declare_evidence
117
+
118
+ try:
119
+ outcome = declare_evidence(task, root, evidence_root, paths)
120
+ except DeclarativeEvidenceError as exc:
121
+ console.print(f"[red]✗[/red] {escape(str(exc))}")
122
+ return 2
123
+ if as_json:
124
+ typer.echo(json.dumps(outcome.to_dict(), indent=2, ensure_ascii=False))
125
+ return 4
126
+ console.print(
127
+ f"[yellow]DÉCLARATIF[/yellow] {task.id} — pack {outcome.pack.id} : {len(outcome.files)} fichier(s) présents et hachés, "
128
+ f"aucune commande lancée ; verdict {outcome.verdict.verdict.value} ({outcome.verdict.id}), jamais un vert mécanique."
129
+ )
130
+ for rel, digest, size in outcome.files:
131
+ console.print(f" - {escape(rel)} [dim]sha256 {digest[:12]}, {size} octets[/dim]")
132
+ console.print(" La revue peut s'ouvrir (`task move --to needs_verification`) ; la clôture reste à un humain.")
133
+ return 4