invar-tools 1.11.0__tar.gz → 1.14.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 (495) hide show
  1. {invar_tools-1.11.0/src/invar/templates/skills/extensions → invar_tools-1.14.0/.claude/skills}/acceptance/SKILL.md +7 -0
  2. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/develop/SKILL.md +1 -2
  3. {invar_tools-1.11.0/src/invar/templates/skills/extensions → invar_tools-1.14.0/.claude/skills}/invar-onboard/SKILL.md +7 -0
  4. invar_tools-1.14.0/.claude/skills/invar-reflect/CONFIG.md +355 -0
  5. invar_tools-1.14.0/.claude/skills/invar-reflect/SKILL.md +466 -0
  6. invar_tools-1.14.0/.claude/skills/invar-reflect/template.md +343 -0
  7. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/investigate/SKILL.md +0 -55
  8. {invar_tools-1.11.0/src/invar/templates/skills/extensions → invar_tools-1.14.0/.claude/skills}/security/SKILL.md +7 -0
  9. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/context.md +53 -3
  10. invar_tools-1.14.0/.invar/feedback/feedback-2026-01-03.md +190 -0
  11. invar_tools-1.14.0/CHANGELOG.md +221 -0
  12. {invar_tools-1.11.0 → invar_tools-1.14.0}/CLAUDE.md +114 -6
  13. {invar_tools-1.11.0 → invar_tools-1.14.0}/INVAR.md +5 -2
  14. {invar_tools-1.11.0 → invar_tools-1.14.0}/PKG-INFO +25 -7
  15. {invar_tools-1.11.0 → invar_tools-1.14.0}/README.md +23 -6
  16. invar_tools-1.14.0/docs/proposals/DX-78-mcp-protocol-sync.md +575 -0
  17. invar_tools-1.14.0/docs/proposals/DX-79-invar-usage-feedback.md +1114 -0
  18. invar_tools-1.14.0/docs/proposals/DX-80-guard-cli-mcp-alignment.md +504 -0
  19. invar_tools-1.14.0/docs/proposals/LX-09-legacy-onboarding.md +387 -0
  20. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/index.md +5 -3
  21. {invar_tools-1.11.0 → invar_tools-1.14.0}/pyproject.toml +3 -1
  22. invar_tools-1.14.0/src/invar/core/feedback.py +110 -0
  23. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/mcp/handlers.py +28 -0
  24. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/mcp/server.py +64 -14
  25. invar_tools-1.14.0/src/invar/node_tools/ts-query.js +396 -0
  26. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/claude_hooks.py +49 -0
  27. invar_tools-1.14.0/src/invar/shell/commands/feedback.py +258 -0
  28. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/guard.py +33 -1
  29. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/init.py +51 -1
  30. invar_tools-1.14.0/src/invar/shell/commands/perception.py +547 -0
  31. invar_tools-1.14.0/src/invar/shell/py_refs.py +156 -0
  32. invar_tools-1.14.0/src/invar/shell/ts_compiler.py +238 -0
  33. invar_tools-1.14.0/src/invar/templates/claude-md/universal/tool-selection.md +110 -0
  34. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/config/CLAUDE.md.jinja +2 -0
  35. invar_tools-1.14.0/src/invar/templates/examples/typescript/patterns.md +193 -0
  36. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/manifest.toml +8 -0
  37. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/python/tools.md +5 -2
  38. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/typescript/tools.md +5 -2
  39. invar_tools-1.14.0/src/invar/templates/skills/invar-reflect/CONFIG.md +355 -0
  40. invar_tools-1.14.0/src/invar/templates/skills/invar-reflect/SKILL.md +466 -0
  41. invar_tools-1.14.0/src/invar/templates/skills/invar-reflect/template.md +343 -0
  42. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/conftest.py +2 -1
  43. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario/api_client.py +0 -1
  44. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario/auth_service.py +0 -2
  45. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario/data_processor.py +0 -1
  46. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario/file_handler.py +0 -2
  47. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/analytics_engine.py +2 -6
  48. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/inventory_manager.py +3 -4
  49. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/notification_service.py +1 -2
  50. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/payment_gateway.py +1 -3
  51. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/user_service.py +0 -1
  52. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/cache_service.py +6 -7
  53. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/calculator.py +3 -4
  54. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/data_processor.py +3 -4
  55. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/user_manager.py +4 -5
  56. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/validator.py +4 -4
  57. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/config_manager.py +15 -16
  58. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/data_service.py +21 -21
  59. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/math_utils.py +9 -12
  60. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/report_generator.py +18 -18
  61. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/user_auth.py +13 -13
  62. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/api_gateway.py +16 -15
  63. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/auth_service.py +11 -11
  64. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/cache_handler.py +12 -12
  65. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/config_loader.py +23 -22
  66. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/data_validator.py +12 -12
  67. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/metrics_collector.py +23 -23
  68. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/notification_service.py +10 -10
  69. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/payment_processor.py +15 -16
  70. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/report_builder.py +22 -22
  71. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/task_scheduler.py +10 -9
  72. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/user_manager.py +14 -18
  73. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/utils.py +9 -9
  74. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/api_gateway.py +16 -15
  75. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/auth_service.py +11 -11
  76. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/cache_handler.py +12 -12
  77. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/config_loader.py +23 -22
  78. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/data_validator.py +12 -12
  79. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/metrics_collector.py +23 -23
  80. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/notification_service.py +10 -10
  81. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/payment_processor.py +15 -16
  82. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/report_builder.py +22 -22
  83. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/task_scheduler.py +10 -9
  84. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/user_manager.py +14 -18
  85. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/utils.py +9 -9
  86. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/api_service.py +29 -29
  87. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/auth_manager.py +40 -42
  88. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/data_processor.py +42 -41
  89. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/report_engine.py +37 -37
  90. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/storage_handler.py +21 -22
  91. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/utils.py +11 -11
  92. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_cli_flags.py +42 -19
  93. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_dx55_regression.py +0 -3
  94. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_dx56_sync.py +0 -3
  95. invar_tools-1.14.0/tests/integration/test_dx78_ts_compiler.py +572 -0
  96. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_lx05_detection.py +0 -1
  97. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_lx05_integration.py +0 -1
  98. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_lx05_templates.py +0 -1
  99. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_lx06_typescript.py +0 -3
  100. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_lx07_skills.py +0 -3
  101. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/test_mcp_doc_tools.py +15 -16
  102. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/test_subprocess_env.py +0 -3
  103. invar_tools-1.11.0/src/invar/shell/commands/perception.py +0 -251
  104. {invar_tools-1.11.0 → invar_tools-1.14.0}/.aider.conf.yml +0 -0
  105. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/commands/audit.md +0 -0
  106. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/commands/guard.md +0 -0
  107. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/PostToolUse.sh +0 -0
  108. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/PreToolUse.sh +0 -0
  109. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/Stop.sh +0 -0
  110. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/UserPromptSubmit.sh +0 -0
  111. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/invar.PostToolUse.sh +0 -0
  112. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/invar.PreToolUse.sh +0 -0
  113. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/invar.Stop.sh +0 -0
  114. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/hooks/invar.UserPromptSubmit.sh +0 -0
  115. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/invar-onboard/patterns/python.md +0 -0
  116. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/invar-onboard/patterns/typescript.md +0 -0
  117. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/invar-onboard/templates/assessment.md.jinja +0 -0
  118. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/invar-onboard/templates/roadmap.md.jinja +0 -0
  119. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/propose/SKILL.md +0 -0
  120. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/review/SKILL.md +0 -0
  121. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/security/patterns/_common.yaml +0 -0
  122. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/security/patterns/python.yaml +0 -0
  123. {invar_tools-1.11.0 → invar_tools-1.14.0}/.claude/skills/security/patterns/typescript.yaml +0 -0
  124. {invar_tools-1.11.0 → invar_tools-1.14.0}/.cursorrules +0 -0
  125. {invar_tools-1.11.0 → invar_tools-1.14.0}/.github/workflows/ci.yml +0 -0
  126. {invar_tools-1.11.0 → invar_tools-1.14.0}/.github/workflows/publish.yml +0 -0
  127. {invar_tools-1.11.0 → invar_tools-1.14.0}/.gitignore +0 -0
  128. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/archive/sessions-2025-12.md +0 -0
  129. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/examples/README.md +0 -0
  130. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/examples/conftest.py +0 -0
  131. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/examples/contracts.py +0 -0
  132. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/examples/core_shell.py +0 -0
  133. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/examples/functional.py +0 -0
  134. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/examples/workflow.md +0 -0
  135. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/mcp-setup.md +0 -0
  136. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/project-additions.md +0 -0
  137. {invar_tools-1.11.0 → invar_tools-1.14.0}/.invar/proposals/TEMPLATE.md +0 -0
  138. {invar_tools-1.11.0 → invar_tools-1.14.0}/.mcp.json +0 -0
  139. {invar_tools-1.11.0 → invar_tools-1.14.0}/.pre-commit-config.yaml +0 -0
  140. {invar_tools-1.11.0 → invar_tools-1.14.0}/.serena/.gitignore +0 -0
  141. {invar_tools-1.11.0 → invar_tools-1.14.0}/.serena/project.yml +0 -0
  142. {invar_tools-1.11.0 → invar_tools-1.14.0}/LICENSE +0 -0
  143. {invar_tools-1.11.0 → invar_tools-1.14.0}/LICENSE-GPL +0 -0
  144. {invar_tools-1.11.0 → invar_tools-1.14.0}/NOTICE +0 -0
  145. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/.nojekyll +0 -0
  146. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/agents.md +0 -0
  147. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/design.md +0 -0
  148. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/diagrams.md +0 -0
  149. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guide.md +0 -0
  150. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guides/aider.md +0 -0
  151. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guides/cline.md +0 -0
  152. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guides/continue.md +0 -0
  153. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guides/cursor.md +0 -0
  154. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guides/multi-agent.md +0 -0
  155. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/guides/pi.md +0 -0
  156. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/decisions-2024.md +0 -0
  157. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/feedback/compliance-analysis.md +0 -0
  158. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/feedback/feedback-memo.md +0 -0
  159. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/feedback/index.md +0 -0
  160. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/index.md +0 -0
  161. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/original-vision.md +0 -0
  162. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/protocol-evolution.md +0 -0
  163. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/history/research/cruxeval-quick-validation.md +0 -0
  164. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/index.html +0 -0
  165. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/logo.svg +0 -0
  166. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-23-entry-point-detection.md +0 -0
  167. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-25-functional-patterns.md +0 -0
  168. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-29-pure-content-detection.md +0 -0
  169. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-38-contract-quality-rules.md +0 -0
  170. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-60-structured-rules-ssot.md +0 -0
  171. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-61-functional-pattern-guidance.md +0 -0
  172. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-61-implementation-design.md +0 -0
  173. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-62-proactive-reference-reading.md +0 -0
  174. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-68-agent-behavior-optimization.md +0 -0
  175. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-74-experiment-report.md +0 -0
  176. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/DX-75-attention-aware-framework.md +0 -0
  177. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/LX-01-multi-language-feasibility.md +0 -0
  178. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/LX-04-pi-agent-support.md +0 -0
  179. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/LX-07-extension-skills.md +0 -0
  180. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/LX-08-extension-skills-future.md +0 -0
  181. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/2024-12-21-guard-enhancements.md +0 -0
  182. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/2024-12-21-language-inspired-enhancements.md +0 -0
  183. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/2024-12-21-test-first-enhancement.md +0 -0
  184. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/2025-12-21-dx-improvements.md +0 -0
  185. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/2025-12-23-dx-20-property-testing-enhancements.md +0 -0
  186. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/2025-12-23-dx-21-package-and-init.md +0 -0
  187. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/AGENT-IMPROVEMENTS.md +0 -0
  188. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-11-documentation-restructure.md +0 -0
  189. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-12-hypothesis-fallback.md +0 -0
  190. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-13-incremental-prove.md +0 -0
  191. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-14-expanded-prove-usage.md +0 -0
  192. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-16-agent-tool-enforcement.md +0 -0
  193. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-17-workflow-enforcement.md +0 -0
  194. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-22-verification-strategy.md +0 -0
  195. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-24-mechanism-documentation.md +0 -0
  196. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-26-guard-simplification.md +0 -0
  197. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-27-system-prompt-protocol.md +0 -0
  198. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-28-semantic-verification.md +0 -0
  199. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-30-visible-workflow.md +0 -0
  200. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-31-adversarial-reviewer.md +0 -0
  201. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-32-workflow-iteration.md +0 -0
  202. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-33-verification-blind-spots.md +0 -0
  203. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-34-review-cycle.md +0 -0
  204. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-35-workflow-phase-separation.md +0 -0
  205. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-36-documentation-restructuring.md +0 -0
  206. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-37-coverage-integration.md +0 -0
  207. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-39-workflow-efficiency.md +0 -0
  208. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-40-smart-tool-redirect-hook.md +0 -0
  209. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-41-automatic-review-orchestration.md +0 -0
  210. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-42-workflow-auto-routing.md +0 -0
  211. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-43-cross-platform-distribution.md +0 -0
  212. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-45-template-consistency.md +0 -0
  213. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-46-documentation-audit.md +0 -0
  214. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-47-command-skill-naming.md +0 -0
  215. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-48-code-structure-reorganization.md +0 -0
  216. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-49-protocol-distribution-unification.md +0 -0
  217. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-50-workflow-enforcement.md +0 -0
  218. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-51-workflow-phase-visibility.md +0 -0
  219. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-52-venv-dependency-injection.md +0 -0
  220. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-53-review-loop-effectiveness.md +0 -0
  221. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-54-agent-native-context-management.md +0 -0
  222. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-55-claude-init-conflict-resolution.md +0 -0
  223. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-56-template-sync-unification.md +0 -0
  224. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-57-claude-code-hooks.md +0 -0
  225. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-58-document-structure-optimization.md +0 -0
  226. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-63-contracts-first-enforcement.md +0 -0
  227. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-64-version-display-unification.md +0 -0
  228. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-65-single-file-guard.md +0 -0
  229. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-66-escape-hatch-visibility.md +0 -0
  230. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-67-explicit-skill-invocation.md +0 -0
  231. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-69-project-uninstall.md +0 -0
  232. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-70-init-simplification.md +0 -0
  233. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-70-review-isolation.md +0 -0
  234. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-71-skill-command-simplification.md +0 -0
  235. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-72-mandatory-self-review-detection.md +0 -0
  236. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-74-tiered-attention-defense.md +0 -0
  237. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-76-structured-document-query.md +0 -0
  238. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/DX-77-mcp-doc-tools-enhancements.md +0 -0
  239. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-02-agent-portability-analysis.md +0 -0
  240. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-03-multi-agent-support.md +0 -0
  241. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-05-language-agnostic-protocol.md +0 -0
  242. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-06-appendix-guard-comparison.md +0 -0
  243. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-06-typescript-tooling.md +0 -0
  244. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-09-legacy-onboarding.md +0 -0
  245. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/proposals/completed/LX-10-typescript-size-limits.md +0 -0
  246. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/agent-information-hierarchy.md +0 -0
  247. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/architecture/index.md +0 -0
  248. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/contracts/advanced.md +0 -0
  249. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/contracts/completeness.md +0 -0
  250. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/contracts/doctests.md +0 -0
  251. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/contracts/index.md +0 -0
  252. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/contracts/pre-post.md +0 -0
  253. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/documentation.md +0 -0
  254. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/index.md +0 -0
  255. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/proposal-workflow.md +0 -0
  256. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/rules/index.md +0 -0
  257. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/rules/severity.md +0 -0
  258. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/verification/crosshair-vs-hypothesis.md +0 -0
  259. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/verification/index.md +0 -0
  260. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/verification/smart-routing.md +0 -0
  261. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/workflow/index.md +0 -0
  262. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/workflow/session-start.md +0 -0
  263. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/reference/workflow/usbv.md +0 -0
  264. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/terminal-gif-guide.md +0 -0
  265. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/test-reports/DX-55-test-report.md +0 -0
  266. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/test-reports/DX-56-test-report.md +0 -0
  267. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/test-reports/DX-58-test-scenario.md +0 -0
  268. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/testing/v1.5.0-stress-test.md +0 -0
  269. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/testing/v1.5.0-test-report.md +0 -0
  270. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/testing/v1.5.0-workflow-compliance.md +0 -0
  271. {invar_tools-1.11.0 → invar_tools-1.14.0}/docs/vision.md +0 -0
  272. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/LICENSE +0 -0
  273. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/README.md +0 -0
  274. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/pyproject.toml +0 -0
  275. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/src/invar_runtime/__init__.py +0 -0
  276. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/src/invar_runtime/contracts.py +0 -0
  277. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/src/invar_runtime/decorators.py +0 -0
  278. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/src/invar_runtime/invariant.py +0 -0
  279. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/src/invar_runtime/relations.py +0 -0
  280. {invar_tools-1.11.0 → invar_tools-1.14.0}/runtime/src/invar_runtime/resource.py +0 -0
  281. {invar_tools-1.11.0 → invar_tools-1.14.0}/scripts/embed_node_tools.py +0 -0
  282. {invar_tools-1.11.0 → invar_tools-1.14.0}/scripts/smart-guard.sh +0 -0
  283. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/core/__init__.py +0 -0
  284. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/__init__.py +0 -0
  285. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/__init__.py +0 -0
  286. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/contracts.py +0 -0
  287. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/doc_edit.py +0 -0
  288. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/doc_parser.py +0 -0
  289. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/entry_points.py +0 -0
  290. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/extraction.py +0 -0
  291. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/format_specs.py +0 -0
  292. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/format_strategies.py +0 -0
  293. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/formatter.py +0 -0
  294. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/hypothesis_strategies.py +0 -0
  295. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/inspect.py +0 -0
  296. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/lambda_helpers.py +0 -0
  297. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/language.py +0 -0
  298. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/models.py +0 -0
  299. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/must_use.py +0 -0
  300. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/parser.py +0 -0
  301. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/__init__.py +0 -0
  302. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/detector.py +0 -0
  303. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/p0_exhaustive.py +0 -0
  304. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/p0_literal.py +0 -0
  305. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/p0_newtype.py +0 -0
  306. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/p0_nonempty.py +0 -0
  307. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/p0_validation.py +0 -0
  308. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/registry.py +0 -0
  309. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/patterns/types.py +0 -0
  310. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/postcondition_scope.py +0 -0
  311. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/property_gen.py +0 -0
  312. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/purity.py +0 -0
  313. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/purity_heuristics.py +0 -0
  314. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/references.py +0 -0
  315. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/review_trigger.py +0 -0
  316. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/rule_meta.py +0 -0
  317. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/rules.py +0 -0
  318. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/shell_analysis.py +0 -0
  319. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/shell_architecture.py +0 -0
  320. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/strategies.py +0 -0
  321. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/suggestions.py +0 -0
  322. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/sync_helpers.py +0 -0
  323. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/tautology.py +0 -0
  324. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/template_helpers.py +0 -0
  325. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/template_parser.py +0 -0
  326. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/timeout_inference.py +0 -0
  327. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/trivial_detection.py +0 -0
  328. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/ts_parsers.py +0 -0
  329. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/ts_sig_parser.py +0 -0
  330. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/utils.py +0 -0
  331. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/core/verification_routing.py +0 -0
  332. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/mcp/__init__.py +0 -0
  333. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/mcp/__main__.py +0 -0
  334. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/node_tools/MANIFEST +0 -0
  335. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/node_tools/__init__.py +0 -0
  336. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/node_tools/fc-runner/cli.js +0 -0
  337. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/node_tools/quick-check/cli.js +0 -0
  338. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/node_tools/ts-analyzer/cli.js +0 -0
  339. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/py.typed +0 -0
  340. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/__init__.py +0 -0
  341. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/__init__.py +0 -0
  342. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/doc.py +0 -0
  343. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/hooks.py +0 -0
  344. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/merge.py +0 -0
  345. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/mutate.py +0 -0
  346. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/skill.py +0 -0
  347. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/sync_self.py +0 -0
  348. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/template_sync.py +0 -0
  349. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/test.py +0 -0
  350. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/uninstall.py +0 -0
  351. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/commands/update.py +0 -0
  352. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/config.py +0 -0
  353. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/contract_coverage.py +0 -0
  354. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/coverage.py +0 -0
  355. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/doc_tools.py +0 -0
  356. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/fs.py +0 -0
  357. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/git.py +0 -0
  358. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/guard_helpers.py +0 -0
  359. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/guard_output.py +0 -0
  360. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/mcp_config.py +0 -0
  361. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/mutation.py +0 -0
  362. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/pattern_integration.py +0 -0
  363. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/pi_hooks.py +0 -0
  364. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/property_tests.py +0 -0
  365. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/prove/__init__.py +0 -0
  366. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/prove/accept.py +0 -0
  367. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/prove/cache.py +0 -0
  368. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/prove/crosshair.py +0 -0
  369. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/prove/guard_ts.py +0 -0
  370. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/prove/hypothesis.py +0 -0
  371. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/skill_manager.py +0 -0
  372. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/subprocess_env.py +0 -0
  373. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/template_engine.py +0 -0
  374. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/templates.py +0 -0
  375. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/shell/testing.py +0 -0
  376. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/CLAUDE.md.template +0 -0
  377. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/__init__.py +0 -0
  378. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/python/critical-rules.md +0 -0
  379. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/python/quick-reference.md +0 -0
  380. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/typescript/critical-rules.md +0 -0
  381. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/typescript/quick-reference.md +0 -0
  382. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/universal/check-in.md +0 -0
  383. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/universal/skills.md +0 -0
  384. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/claude-md/universal/workflow.md +0 -0
  385. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/commands/audit.md.jinja +0 -0
  386. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/commands/guard.md +0 -0
  387. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/config/AGENT.md.jinja +0 -0
  388. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/config/context.md.jinja +0 -0
  389. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/config/pre-commit.yaml.jinja +0 -0
  390. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/context.md.template +0 -0
  391. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/python/README.md +0 -0
  392. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/python/conftest.py +0 -0
  393. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/python/contracts.py +0 -0
  394. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/python/core_shell.py +0 -0
  395. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/python/functional.py +0 -0
  396. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/python/workflow.md +0 -0
  397. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/typescript/README.md +0 -0
  398. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/typescript/contracts.ts +0 -0
  399. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/typescript/core_shell.ts +0 -0
  400. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/typescript/functional.ts +0 -0
  401. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/examples/typescript/workflow.md +0 -0
  402. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/hooks/PostToolUse.sh.jinja +0 -0
  403. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/hooks/PreToolUse.sh.jinja +0 -0
  404. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/hooks/Stop.sh.jinja +0 -0
  405. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/hooks/UserPromptSubmit.sh.jinja +0 -0
  406. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/hooks/__init__.py +0 -0
  407. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/hooks/pi/invar.ts.jinja +0 -0
  408. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/onboard/assessment.md.jinja +0 -0
  409. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/onboard/patterns/python.md +0 -0
  410. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/onboard/patterns/typescript.md +0 -0
  411. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/onboard/roadmap.md.jinja +0 -0
  412. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/proposal.md.template +0 -0
  413. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/INVAR.md.jinja +0 -0
  414. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/python/architecture-examples.md +0 -0
  415. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/python/contracts-syntax.md +0 -0
  416. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/python/markers.md +0 -0
  417. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/python/troubleshooting.md +0 -0
  418. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/typescript/architecture-examples.md +0 -0
  419. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/typescript/contracts-syntax.md +0 -0
  420. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/typescript/markers.md +0 -0
  421. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/typescript/troubleshooting.md +0 -0
  422. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/architecture.md +0 -0
  423. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/completion.md +0 -0
  424. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/contracts-concept.md +0 -0
  425. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/header.md +0 -0
  426. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/session.md +0 -0
  427. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/six-laws.md +0 -0
  428. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/usbv.md +0 -0
  429. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/protocol/universal/visible-workflow.md +0 -0
  430. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/develop/SKILL.md.jinja +0 -0
  431. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/_registry.yaml +0 -0
  432. {invar_tools-1.11.0/.claude/skills → invar_tools-1.14.0/src/invar/templates/skills/extensions}/acceptance/SKILL.md +0 -0
  433. {invar_tools-1.11.0/.claude/skills → invar_tools-1.14.0/src/invar/templates/skills/extensions}/invar-onboard/SKILL.md +0 -0
  434. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/invar-onboard/patterns/python.md +0 -0
  435. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/invar-onboard/patterns/typescript.md +0 -0
  436. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/invar-onboard/templates/assessment.md.jinja +0 -0
  437. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/invar-onboard/templates/roadmap.md.jinja +0 -0
  438. {invar_tools-1.11.0/.claude/skills → invar_tools-1.14.0/src/invar/templates/skills/extensions}/security/SKILL.md +0 -0
  439. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/security/patterns/_common.yaml +0 -0
  440. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/security/patterns/python.yaml +0 -0
  441. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/extensions/security/patterns/typescript.yaml +0 -0
  442. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/investigate/SKILL.md.jinja +0 -0
  443. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/propose/SKILL.md.jinja +0 -0
  444. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/invar/templates/skills/review/SKILL.md.jinja +0 -0
  445. {invar_tools-1.11.0 → invar_tools-1.14.0}/src/shell/__init__.py +0 -0
  446. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/__init__.py +0 -0
  447. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/conftest.py +0 -0
  448. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/README.md +0 -0
  449. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/RESULTS.md +0 -0
  450. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/RESULTS_V2.md +0 -0
  451. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/RESULTS_V4.md +0 -0
  452. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/ground_truth.yaml +0 -0
  453. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/prompts.yaml +0 -0
  454. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario/config_manager.py +0 -0
  455. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario/utils.py +0 -0
  456. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/ground_truth.yaml +0 -0
  457. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v2/order_processor.py +0 -0
  458. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/README.md +0 -0
  459. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v3/ground_truth.yaml +0 -0
  460. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/.gitignore +0 -0
  461. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/.serena/project.yml +0 -0
  462. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/README.md +0 -0
  463. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v4/ground_truth.yaml +0 -0
  464. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v5/ground_truth.yaml +0 -0
  465. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v6/ground_truth.yaml +0 -0
  466. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/experiments/dx74_attention_drift/scenario_v7/ground_truth.yaml +0 -0
  467. {invar_tools-1.11.0 → invar_tools-1.14.0}/tests/integration/__init__.py +0 -0
  468. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/.gitignore +0 -0
  469. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/README.md +0 -0
  470. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/package.json +0 -0
  471. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/package.json +0 -0
  472. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/src/index.ts +0 -0
  473. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/src/rules/no-any-in-schema.ts +0 -0
  474. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/src/rules/no-io-in-core.ts +0 -0
  475. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/src/rules/require-jsdoc-example.ts +0 -0
  476. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/src/rules/require-schema-validation.ts +0 -0
  477. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/src/rules/shell-result-type.ts +0 -0
  478. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/eslint-plugin/tsconfig.json +0 -0
  479. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/fc-runner/package.json +0 -0
  480. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/fc-runner/src/cli.ts +0 -0
  481. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/fc-runner/src/index.ts +0 -0
  482. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/fc-runner/tsconfig.json +0 -0
  483. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/quick-check/package.json +0 -0
  484. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/quick-check/src/cli.ts +0 -0
  485. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/quick-check/src/index.ts +0 -0
  486. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/quick-check/tsconfig.json +0 -0
  487. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/ts-analyzer/package.json +0 -0
  488. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/ts-analyzer/src/cli.ts +0 -0
  489. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/ts-analyzer/src/index.ts +0 -0
  490. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/packages/ts-analyzer/tsconfig.json +0 -0
  491. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/pnpm-workspace.yaml +0 -0
  492. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/scripts/bundle.mjs +0 -0
  493. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/tsconfig.base.json +0 -0
  494. {invar_tools-1.11.0 → invar_tools-1.14.0}/typescript/vitest.config.ts +0 -0
  495. {invar_tools-1.11.0 → invar_tools-1.14.0}/uv.lock +0 -0
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: acceptance
3
+ description: Verify implementation satisfies requirements with adversarial rigor. PRD alignment review, checking that all requirements are implemented and edge cases are handled.
4
+ _invar:
5
+ version: "1.0"
6
+ managed: skill
7
+ ---
1
8
  <!--invar:skill-->
2
9
  # /acceptance — Requirements Acceptance Review
3
10
 
@@ -420,8 +420,7 @@ Agent:
420
420
 
421
421
  ✓ Final: guard PASS | 0 errors, 1 warning
422
422
  ```
423
- <!--/invar:skill-->
424
- <!--invar:extensions-->
423
+ <!--/invar:skill--><!--invar:extensions-->
425
424
  <!-- ========================================================================
426
425
  EXTENSIONS REGION - USER EDITABLE
427
426
  Add project-specific extensions here. This section is preserved on update.
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: invar-onboard
3
+ description: Evaluate and plan migration of existing (legacy) projects to the Invar framework. Provides structured assessment, discussion, and planning workflow.
4
+ _invar:
5
+ version: "1.0"
6
+ managed: skill
7
+ ---
1
8
  <!--invar:skill-->
2
9
  # /invar-onboard — Legacy Project Onboarding
3
10
 
@@ -0,0 +1,355 @@
1
+ # /invar-reflect Configuration
2
+
3
+ **Status**: Phase B - Hook Integration (Proposed)
4
+
5
+ This document describes the configuration for automatic feedback collection using the `/invar-reflect` skill.
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ The `/invar-reflect` skill can be triggered:
12
+ 1. **Manually**: User calls `/invar-reflect`
13
+ 2. **Automatically** (Phase B): Via `PostTaskCompletion` hook when conditions are met
14
+
15
+ ---
16
+
17
+ ## Proposed Hook Schema
18
+
19
+ ### PostTaskCompletion Hook (Waiting for Claude Code Support)
20
+
21
+ **Proposed configuration in `.claude/settings.json`**:
22
+
23
+ ```json
24
+ {
25
+ "hooks": {
26
+ "PostTaskCompletion": [
27
+ {
28
+ "hooks": [
29
+ {
30
+ "type": "skill",
31
+ "skill": "invar-reflect",
32
+ "mode": "silent",
33
+ "conditions": {
34
+ "min_messages": 30,
35
+ "min_duration_hours": 2
36
+ }
37
+ }
38
+ ]
39
+ }
40
+ ]
41
+ },
42
+ "feedback": {
43
+ "enabled": true,
44
+ "auto_trigger": true,
45
+ "retention_days": 90
46
+ }
47
+ }
48
+ ```
49
+
50
+ **Hook Parameters**:
51
+
52
+ | Parameter | Type | Default | Description |
53
+ |-----------|------|---------|-------------|
54
+ | `type` | string | - | Must be `"skill"` |
55
+ | `skill` | string | - | Skill name: `"invar-reflect"` |
56
+ | `mode` | string | `"silent"` | Silent mode (no user interruption) |
57
+ | `conditions.min_messages` | number | 30 | Minimum messages in session |
58
+ | `conditions.min_duration_hours` | number | 2 | Minimum session duration |
59
+
60
+ **Feedback Config**:
61
+
62
+ | Parameter | Type | Default | Description |
63
+ |-----------|------|---------|-------------|
64
+ | `enabled` | boolean | true | Enable feedback collection |
65
+ | `auto_trigger` | boolean | true | Auto-run via hook |
66
+ | `retention_days` | number | 90 | Auto-cleanup old files |
67
+
68
+ ---
69
+
70
+ ## Triggering Conditions
71
+
72
+ The hook triggers when **ALL** conditions are met:
73
+
74
+ 1. ✅ **Task completed** - User finished major work (natural stopping point)
75
+ 2. ✅ **Message count >= 30** - Sufficient context for meaningful feedback
76
+ 3. ✅ **Duration >= 2 hours** - Non-trivial session (avoids quick fixes)
77
+
78
+ **No hard frequency cap**: Same-day sessions merge into single file (see SKILL.md for merge logic).
79
+
80
+ ---
81
+
82
+ ## Silent Mode
83
+
84
+ When `mode: "silent"`:
85
+ - Feedback generation runs in background
86
+ - No interruption to current conversation
87
+ - User sees notification only: `✓ Feedback saved to .invar/feedback/feedback-{date}.md`
88
+
89
+ ---
90
+
91
+ ## User Control
92
+
93
+ ### Enable/Disable
94
+
95
+ **During init** (Phase C):
96
+ ```bash
97
+ $ invar init
98
+ ...
99
+ Enable automatic feedback collection? [Y/n]: n
100
+ ```
101
+
102
+ **After init**:
103
+ ```json
104
+ // .claude/settings.json
105
+ {
106
+ "feedback": {
107
+ "enabled": false // Disable feedback collection
108
+ }
109
+ }
110
+ ```
111
+
112
+ Or disable auto-trigger only (manual `/invar-reflect` still works):
113
+ ```json
114
+ {
115
+ "feedback": {
116
+ "enabled": true,
117
+ "auto_trigger": false // Manual only
118
+ }
119
+ }
120
+ ```
121
+
122
+ ### File Management
123
+
124
+ Feedback files location:
125
+ ```
126
+ .invar/feedback/
127
+ ├── feedback-2026-01-03.md # All sessions from Jan 3
128
+ ├── feedback-2026-01-04.md # All sessions from Jan 4
129
+ └── feedback-2026-01-10.md # Jan 10 (gaps are OK)
130
+ ```
131
+
132
+ **Auto-cleanup**: Files older than `retention_days` are automatically deleted.
133
+
134
+ **Manual cleanup**:
135
+ ```bash
136
+ # Delete all feedback
137
+ rm -rf .invar/feedback/
138
+
139
+ # Delete specific file
140
+ rm .invar/feedback/feedback-2026-01-03.md
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Workaround: Using Stop Hook (Until PostTaskCompletion is Available)
146
+
147
+ Since Claude Code doesn't yet support `PostTaskCompletion` hook, you can use the `Stop` hook as a temporary workaround.
148
+
149
+ ### Stop Hook Implementation
150
+
151
+ Create `.claude/hooks/invar.FeedbackTrigger.sh`:
152
+
153
+ ```bash
154
+ #!/bin/bash
155
+ # Invar Feedback Trigger (Stop Hook Workaround)
156
+ # DX-79 Phase B: Auto-trigger /invar-reflect on session end
157
+
158
+ # Read feedback config
159
+ FEEDBACK_ENABLED=$(jq -r '.feedback.enabled // true' .claude/settings.local.json 2>/dev/null)
160
+ AUTO_TRIGGER=$(jq -r '.feedback.auto_trigger // true' .claude/settings.local.json 2>/dev/null)
161
+
162
+ if [[ "$FEEDBACK_ENABLED" != "true" ]] || [[ "$AUTO_TRIGGER" != "true" ]]; then
163
+ exit 0 # Feedback disabled
164
+ fi
165
+
166
+ # Check session conditions (requires session state tracking)
167
+ STATE_DIR="${CLAUDE_STATE_DIR:-/tmp/invar_hooks_$(id -u)}"
168
+ SESSION_START_FILE="$STATE_DIR/session_start"
169
+ MESSAGE_COUNT_FILE="$STATE_DIR/message_count"
170
+
171
+ # Calculate duration
172
+ if [[ -f "$SESSION_START_FILE" ]]; then
173
+ SESSION_START=$(cat "$SESSION_START_FILE")
174
+ SESSION_END=$(date +%s)
175
+ DURATION_HOURS=$(( (SESSION_END - SESSION_START) / 3600 ))
176
+ else
177
+ DURATION_HOURS=0
178
+ fi
179
+
180
+ # Read message count
181
+ MESSAGE_COUNT=$(cat "$MESSAGE_COUNT_FILE" 2>/dev/null || echo 0)
182
+
183
+ # Check conditions
184
+ if [[ $MESSAGE_COUNT -ge 30 ]] && [[ $DURATION_HOURS -ge 2 ]]; then
185
+ echo ""
186
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
187
+ echo "📊 Invar: Generating usage feedback..."
188
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
189
+ echo ""
190
+ echo "Session complete: $MESSAGE_COUNT messages, ${DURATION_HOURS}h duration"
191
+ echo "Feedback will be saved to .invar/feedback/feedback-$(date +%Y-%m-%d).md"
192
+ echo ""
193
+ echo "To review or share: cat .invar/feedback/feedback-$(date +%Y-%m-%d).md"
194
+ echo "To disable: Set feedback.auto_trigger=false in .claude/settings.local.json"
195
+ fi
196
+
197
+ # Cleanup session state
198
+ rm -rf "$STATE_DIR" 2>/dev/null
199
+ ```
200
+
201
+ **Note**: This workaround provides notification but doesn't actually generate feedback automatically. Full auto-generation requires:
202
+ 1. Claude Code to support skill invocation from hooks, OR
203
+ 2. Hook to write state file that triggers `/invar-reflect` on next user interaction
204
+
205
+ ---
206
+
207
+ ## Configuration Template (for `invar init`)
208
+
209
+ When Phase C is complete, `invar init` will generate this configuration:
210
+
211
+ ```json
212
+ {
213
+ "permissions": {
214
+ "allow": [
215
+ // ... existing permissions ...
216
+ ]
217
+ },
218
+ "hooks": {
219
+ "PostTaskCompletion": [
220
+ {
221
+ "hooks": [
222
+ {
223
+ "type": "skill",
224
+ "skill": "invar-reflect",
225
+ "mode": "silent",
226
+ "conditions": {
227
+ "min_messages": 30,
228
+ "min_duration_hours": 2
229
+ }
230
+ }
231
+ ]
232
+ }
233
+ ],
234
+ // ... existing hooks ...
235
+ },
236
+ "feedback": {
237
+ "enabled": true,
238
+ "auto_trigger": true,
239
+ "retention_days": 90
240
+ }
241
+ }
242
+ ```
243
+
244
+ **Init prompt** (Phase C):
245
+
246
+ ```
247
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
248
+ 📊 Usage Feedback (Optional)
249
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
250
+
251
+ Invar can automatically reflect on tool usage to help improve
252
+ the framework. Feedback is:
253
+ - Stored locally in .invar/feedback/
254
+ - Never sent automatically
255
+ - You decide what (if anything) to share
256
+
257
+ Enable automatic feedback collection? [Y/n]:
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Privacy & Security
263
+
264
+ **What's stored**:
265
+ - Tool usage statistics (counts, success/failure)
266
+ - Error types (NO error messages)
267
+ - Session metadata (duration, message count)
268
+ - User's subjective experience (generated by AI)
269
+
270
+ **What's NOT stored**:
271
+ - Source code
272
+ - File paths (anonymized)
273
+ - Error messages (might contain code)
274
+ - Project-specific details
275
+
276
+ **All data stays local** in `.invar/feedback/`. User reviews before sharing.
277
+
278
+ ---
279
+
280
+ ## Testing (Phase B Acceptance Criteria)
281
+
282
+ ### Manual Testing
283
+
284
+ 1. **Test manual invocation**:
285
+ ```bash
286
+ # In Claude Code session
287
+ /invar-reflect
288
+ ```
289
+ - ✅ Generates feedback file
290
+ - ✅ Saves to `.invar/feedback/feedback-{today}.md`
291
+ - ✅ No errors
292
+
293
+ 2. **Test config disable**:
294
+ ```json
295
+ // .claude/settings.local.json
296
+ { "feedback": { "enabled": false } }
297
+ ```
298
+ - ✅ `/invar-reflect` still works (manual override)
299
+ - ✅ Hook doesn't trigger (when implemented)
300
+
301
+ 3. **Test same-day merge**:
302
+ ```bash
303
+ # Session 1: Morning
304
+ /invar-reflect
305
+ # Creates feedback-2026-01-03.md
306
+
307
+ # Session 2: Afternoon (same day)
308
+ /invar-reflect
309
+ # Updates feedback-2026-01-03.md (not create new file)
310
+ ```
311
+ - ✅ Single file per day
312
+ - ✅ Intelligent merging (semantic understanding)
313
+ - ✅ Daily summary regenerated
314
+
315
+ ### Automated Testing (when hook is implemented)
316
+
317
+ 1. **Test condition thresholds**:
318
+ - Session < 30 messages: Hook doesn't trigger
319
+ - Session < 2 hours: Hook doesn't trigger
320
+ - Session >= 30 messages AND >= 2 hours: Hook triggers
321
+
322
+ 2. **Test silent mode**:
323
+ - Hook triggers in background
324
+ - No interruption to conversation
325
+ - Notification shown only
326
+
327
+ 3. **Test retention**:
328
+ - Files older than 90 days auto-deleted
329
+ - Configurable via `retention_days`
330
+
331
+ ---
332
+
333
+ ## Phase B Status
334
+
335
+ **Completed**:
336
+ - ✅ Hook schema designed
337
+ - ✅ Configuration structure defined
338
+ - ✅ User control mechanism specified
339
+ - ✅ Stop hook workaround documented
340
+
341
+ **Waiting for Claude Code Support**:
342
+ - ⏸️ PostTaskCompletion hook type
343
+ - ⏸️ Skill invocation from hooks
344
+ - ⏸️ Session state tracking (message count, duration)
345
+
346
+ **Next Steps**:
347
+ - Implement Phase C: Init Integration (can be done independently)
348
+ - Submit feature request to Claude Code for PostTaskCompletion hook
349
+ - Test manual `/invar-reflect` invocation thoroughly
350
+
351
+ ---
352
+
353
+ **Version**: 1.0 (Phase B - Proposed)
354
+ **Updated**: 2026-01-03
355
+ **Related**: DX-79 Invar Usage Feedback Collection